The Esri R&D Center in Portland, Oregon works on two main projects: developers.arcgis.com and the Esri Geotrigger Service. In our free time we also build and maintain open source tools to help us get our work done more easily.
Here’s an overview of what we’ve been working on, just in time for Esri’s DevSummit. Some of these tools allow for modularity, allowing you use just the parts of the ArcGIS platform you need! We’ve been very pleased with people–both internal and external–using these tools and giving us great feedback. Thanks to everyone for your support and help!
- Terraformer: a geometry toolkit for working with different geometry formats and building geo databases.
- Pushlet: a simple API for sending notifications through the Apple and Google push notification services.
- Rainman: a simple JSON-based API for tracking usage info and version info of SDKs or other software in the wild.
- Blacksmith: SSH key management for Amazon Web Services.
- Geotrigger Editor: a visual editor for Esri’s Geotrigger Service.
- Geotrigger Faker: allows you to fake device updates when testing an application that uses the Esri Geotrigger Service.
A lightweight set of tools for working with ArcGIS services with Leaflet.
- Source code and documentation: http://esri.github.io/esri-leaflet
Terraformer is a geometric toolkit for dealing with geometry, geography, formats, and building geo databases.
The Terraformer project is broken up into a series of smaller modules.
- Terraformer Core – Contains methods and objects for working with GeoJSON. This also contains common methods used by other modules.
- WKT Parser – Parse Well Known Text into GeoJSON and vica-versa.
- ArcGIS Geometry Parser – Parse the ArcGIS Geometry Format into GeoJSON and vice-versa.
- GeoStore – A framework for persisting and querying GeoJSON features with pluggable indexes and persistent stores.
- Project page: http://terraformer.io/
- Source code and documentation: https://github.com/Esri/Terraformer
Pushlet provides a simple HTTP wrapper around the Apple Push Notification Service and Google Cloud Messaging Service.
If you’ve ever had the pleasure of working directly with the Apple APNS API, you know how difficult it can be to get it right. To connect to APNS, you have to configure SSL certificates to authenticate, and then it requires maintaining a persistent socket connection to the servers rather than making a new connection for each push notification.
Pushlet is a stateless wrapper around the API designed to make it easier to use, like you’d use a typical HTTP API. Pushlet uses Redis as a temporary data store to store certificates, and maintains the socket connections to the APNS service so you don’t have to worry about it. Using Pushlet to send a notification is as simple as making a POST request to the Pushlet endpoint like the following:
- Source code and documentation: https://github.com/esri/pushlet
Rainman is a simple JSON-based API for tracking usage info and version info of SDKs or other software in the wild. We use this internally to display data about the Esri Geotrigger Service.
Rainmain allows you to aggregate stats in a local cache inside your app for a short intervals. At some interval you decide (5-10 minutes), the batch of counts stored inside your all will be sent to this API, allowing you to display the data however you’d like! The service aggregates counts by date/group_id/client_id/key/value, storing one row for each unique combination of all 5. The stats can later be queried by date, group_id, client_id, key, or combinations of all.
- Source code and documentation: https://github.com/esripdx/rainman
Blacksmith is an open source tool that provides SSH key management for Amazon Web Services. Need to manage multiple SSH Keys? Blacksmith makes it easy.
- Source code and documentation: https://github.com/esripdx/blacksmith
A visual editor for Esri’s Geotrigger Service.
The Geotrigger Editor is a browser tool for creating and editing triggers within the Geotrigger Service.
- Draw trigger boundaries on a map – a circle around a point or polygon
- List all of an application’s triggers
- Create, edit and delete trigger conditions, actions, and boundaries
- Search for triggers by tag, title, or ID
The Geotrigger Editor is available to anyone with an ArcGIS developer or organization account. To use it, go to the Applications page, find your application, and go to the Geotrigger Tools section of the application details page.
This tool is built for the ArcGIS for Developers site, but it can also be integrated into your product’s website and customized to fit your site’s style and the specific needs of your application.
Visit the Geotrigger Editor on GitHub to learn more about integrating it into your site and building functionality on top of it. The README file includes instructions and examples, and since it’s open source, you can open an issue to request a feature or build it yourself and submit a pull request!
- Source code and documentation: https://github.com/esri/geotrigger-editor
The Geotrigger Faker is a tool for faking and debugging device location updates for applications using the Geotrigger Service. It allows you to simulate device location updates for fake or real devices. When simulating a real device’s location, that device will receive any associated push notifications when triggers fire.
This is a powerful tool for testing the Geotrigger Service as devices don’t need to be moved in the physical world to test location-based functionality.
The Geotrigger Faker is available to anyone with an ArcGIS developer or organization account. While the tool is built for the ArcGIS for Developers site, it is completely open source and can also be integrated into your product’s website and customized to fit your site’s style and the specific needs of your application.
Visit the Geotrigger Faker on GitHub to learn more about integrating it into your site and building functionality on top of it.
- Source code and documentation: https://github.com/Esri/geotrigger-faker
Esri is on Github!
Esri is also on Github! Starting in late 2012 over 530 of us at Esri have joined Github, and we now contribute to 185 public projects and even more internally. Check it out!
More Open Source?