A lot of geospatial data (GIS) in the world is stored on ArcGIS MapServers, a part of the Esri “stack” of products that municipalities and other governments use to manage and publish GIS data.
A lot of people want that data, and not every government has enabled the ArcGIS data hub features that make it easier to get. For an example data hub, check out Cook County, Illinois.
If you have ArcGIS software on your Windows computer, then it can be pretty easy to plug in the map server URL and manipulate and extract the data.
For the rest of us who don’t have a very expensive license for that software, you can use a “command line” tool (written in Python) on any computer to download any layer of GIS data hosted on the ArcGIS MapServer and automatically convert it to GeoJSON.
Tutorial
You’ll need to install the Python package pyesridump
, from the OpenAddresses GitHub repository, created by Ian Dees and other contributors.
Installing pyesridump
is easy if you have pip
installed, using the command pip install esridump
.
The next thing you’ll need is the URL to a layer in a MapServer, and these are not easy to find.
Finding data to download
I can almost guarantee the county where you live has one. Before you continue, check to see if your county (or other jurisdiction) has the “open data portal” add-on to their ArcGIS stack.
A handful of suggestions:
- Here are links to the open data portals enabled by Esri for Lake County, Illinois, and Broomfield County, Colorado.
- A reader suggested looking for MapServers for jurisdictions around the world by looking through Esri’s portal of open data called ArcGIS Hub.
- Use a search engine to search for the URL pattern that’s common to ArcGIS servers: paste “inurl:arcgis/rest/services” into a search engine. (You can also limit this search to a particular domain name, say, “chicago.gov”, by adding “site:chicago.gov” to the search query, making the full search query “inurl:arcgis/rest/services site:chicago.gov”.
Once you locate a dataset you want, you can find the MapServer URL under About>Data Source on the right side of the page.
I normally find them by looking at the HTML source code of a MapServer I already know about.
For this example I’ll use one of the GIS layers in the Cook County, Illinois, election service MapServer – here’s the layer for the Cook County commissioners districts.
Fetch the data
Once you have the URL the command is simple:
esri2geojson http://cookviewer1.cookcountyil.gov/ArcGIS/rest/services/cookElectnSrvc/MapServer/11 cookcounty_commissioners.geojson
- The first term,
esri2geojson
tells your computer which program to load. - The second term is the URL of the MapServer URL.
- The third term is the filename and location where you want to store the file. I prefer running the command “inside” the folder where I want the file to be stored. You can also specify a full path of the file. On a Mac this would look like
~/Users/username/Documents/GIS/projectname/cookcounty_commissioners.geojson
After you enter the command into your computer’s terminal, press enter. esri2geojson
will report back once, after it finds and understands the MapServer URL you gave it. When it’s done, the command will “close” and your computer’s terminal will wait for the next command.
Do you have questions, or need some help? Leave a comment below.