Note from the Editor: This article was previously posted on December 22, 2016. The content in this post hasn't been changed since that original posting, other than we have updated the name of the product to reflect the latest. Otherwise we're providing this as context, to learn more about where we're coming from, with some of the work we're doing at Vulcan. Stay tuned for more posts on the Domain Awareness System (DAS), now known as EarthRanger.
On the Philanthropic Technology team at Vulcan, we collaborate with other organizations to identify and solve some of the big problems facing our world. One major initiative we’ve focused on recently is EarthRanger, where we are collaborating with conservationists in Africa to protect elephants.
All of the conservation area teams we talked to are using logbooks to record incidents and animal movements. These logbooks are used both as a reference and to compile monthly reports. Those monthly reports are then compiled into annual reports developed to inform the boards of these conservation areas about what occurred over the year. Typically, all of this information was then placed on a physical shelf to collect dust.
Communications from rangers in the field went into similar logbooks. Some organizations augmented these paper systems with rudimentary database systems written in MS Access or built in complex spreadsheets. We all agreed there was a nee to consolidate and make this information more easily accessible to their entire organizations in near real-time.
Save the Elephants, or STE, is a research and conservation organization based in Kenya. STE pioneered the use of elephant collars to record and analyze elephant movements. We have been collaborating with STE on other projects and were familiar with their tracking platform. Through discussions with them and others, their tracking platform became the genesis for EarthRanger. Working with STE, we have incorporated their animal-tracking expertise with new functionality to record the data streams typically found in conservation areas. This project culminated in the EarthRanger platform, which provides conservation area managers with a tool to visualize and monitor their animals, rangers, and related incidents.
In our first minimal viable product, or MVP, of EarthRanger, we first collected animal-collar tracking information and displayed it on a website. Next, we added security so users were limited to which animals they could access and how much of the tracking they could view. We have also worked with several handheld radio platform makers that rangers carry in the field. With the integration of ranger radios, it allows the conservation area managers to contact them and coordinate ranger movements.
On the same map we use to visualize animal and ranger movements, we also show reports of incidents. The radio operator receives calls about incidents and enters these reports directly in EarthRanger. These are communications of status or occurrences sent in from the field. In the military, the base report is known as a situational report or sitrep. Our technology allows the radio operator to enter these sitreps directly into EarthRanger which in most cases includes a location for visualization on the map.
Above is an example image of the EarthRanger web console. (Note: This is an example conservation area, not a real place.) On the left is the big map showing the location of the elephants and their tracks. On the right is the list of incoming reports. Not shown is the map layers tab that allows the user to see or hide different user interface elements, such as the reports, animals, rangers, or geographic points of interest.
In addition to the sitreps, there was other data we needed to incorporate, such as human wildlife conflict, or HWC, reports. A HWC report records a ranger in contact with a person of concern. Additionally, a vehicle report describes a vehicle of interest, such as car or truck that is not supposed to be in the conservation area.
Based on these different report types, we investigated several ideas, including having many tables in the database or one wide table with many empty fields. We looked at entity-attribute-value – EAV – pairs. Using EAV works in some cases, but the downside for us was the extra work to query the data. We needed to address custom report data storage while also considering how the user interface (UI) would render it. We discovered an open standard called JSON Schema that looked interesting, and there was a validation implementation available in Python. We also found an Angular Forms implementation for rendering the user interface. We chose PostgreSQL, which includes JSON support at the field level. Using JSON Schema to define the custom report data, then rendering it using existing libraries allowed us to quickly support custom reports for our initial sites.
EarthRanger is built on the Django Web Framework and is written in Python. We use PostgreSQL and PostGIS for storing and accessing data. Various open source-based GIS libraries, including GDAL, PyProj, Shapely and Fiona, are used to analyze movement data. Django Rest Framework provides our restful API. Additionally, we have used a SocketIO library to support real-time updates to our single web page app. Our visualization consists of a single page Angular web app, specifically using MapBox and Leaflet technology for the map render piece. Redis rounds out our infrastructure to provide queuing and real-time communication coordination.
During development, we used AWS RDS and ElasticCache to host our PostgreSQL and Redis services respectively. ElasticBeanstalk provides an easy to configure almost all-in-one pipeline. For production, we need to have the ability to deploy on-premise as well as in the cloud and have moved to using Chef to coordinate this type of deployment.
We have EarthRanger installed at two conservation areas so far with plans for another to go live in January 2017.