iNaturalist’s built-in mapping capabilities
iNaturalist provides fairly robust mapping capabilities built in:
The map on the Explore Page 3 gives you your choice of street map or satellite basemap, with an observation density grid at low zoom levels that switches to pins color-coded by iconic taxon at lower zoom levels. You can map just about any dataset that you can filter for in the standard filter interface (or by using URL query parameters 2).
The Taxon Page (ex. American Pelican 1) adds additional taxon-specific functionality – layers for taxon ranges, checklist places, and GBIF occurrences
A standalone version of the taxon map allows you to add layers for multiple taxa and set a custom zoom level and center point (ex. 3 species of bear 6, with map zoomed to level 2 and centered at lat 40 and long 0 by default).
A standalone heatmap allows you to query for parameters like user ID and project ID (ex. heatmap 4 of Found Feathers project observations)
An experimental compare tool 3 allows visualizations of multiple datasets, each as its own map layer (ex. Using iNat maps to illustrate Ensatina as a ring species - Nature Talk - iNaturalist Community Forum 1)
A time series animation tool displays observations over time for a given interval (ex. Map animation of observations over time - Feature Requests - iNaturalist Community Forum 4)
Going beyond the built-in tools
But what if you want to visualize something that can’t be done in any of these built-in tools? For example, what if you want to see observations against a map of ecoregions? None of these tools offer a way to choose your own custom basemap.
Luckily, there are several ways to get iNaturalist data into other tools that will allow you produce a lot of different map visualizations. In this tutorial, we’ll cover one of these methods: getting map tiles from iNaturalist’s API to create our own custom maps.
(A future tutorial will cover how to take observations with lat/long data from, say, a CSV export and map them.)
What are map tiles?
One nice feature of online maps is that they are zoomable and pannable. You can view the entire world in one screen, or you can zoom in to see a particular neighborhood in great detail. From one neighborhood, you can pan, or shift, the map in any direction to look at another neighborhood.
When zoomed in, you see only a part of the world. So a website providing a neighborhood-level map doesn’t need to give you information about any other neighborhoods out of view. At the same time, if you pan the map just a little bit, it doesn’t make sense to give you a whole new map if you’re mostly still viewing the same neighborhood. Instead, the most efficient thing would be to deliver only the additional data needed to create the rest of the map that came into view.
Also, it might be appropriate to show different information at different zoom levels. For example, it might make sense to have street labels when viewing a neighborhood vs. continent and ocean labels when viewing the entire world.
So efficient zooming and panning is achieved is by breaking up the entire world into sets of tiles appropriate for different zoom levels, and then delivering only the (additional) tiles needed to cover the area that is in view (or has come into view).
At the lowest zoom level (0), most of the world (excluding a few degrees at the poles) is covered by a single square tile (outlined in red):
To continue:
https://forum.inaturalist.org/t/in-pursuit-of-mappiness-part-1/21864