I made a tool combining iNat observation data with GIS data (by @pearce_lucas)

Goal of the tool:

iNat observations, to my knowledge, contain the latitude and longitude displayed as a pin on the map. It can be hard to eyeball things like elevation, slope, aspect, and climate patterns (e.g. precipitation and temperature patterns) just from this pin on the map. By combining iNat observations with various environmental GIS datasets, you can get a lot more insight on observations both individually as a whole, which can be super useful for identification and capturing patterns on the species level.

Niche it fills in the iNaturalist ecosystem:

As far as I know, there’s not a lot of existing tools integrating iNat occurrence data with GIS data (but maybe there are existing tools I don’t know about!). As previously stated, having information like the elevation of the observation can be super useful for identification, or just interesting to explore. It potentially could even help things like the computer vision IDs by providing richer context to the models, as I know they use some kind of location information currently, but I’m not sure on the specifics.

Is there a commercial component, or do you plan into include one in the future? Are donations requested? (yes/no, explain):

The website is strictly non-commercial for two reasons:
(1) By necessity, as essentially every source of data it uses requires such a license.
(2) I’d prefer for it to remain FOSS anyways so I’m not pressured to sloppify it just to make a quick buck

Donations are not currently requested, but right now server traffic is very low since not a lot of people know about it. I don’t anticipate it to be super expensive to host, but who knows.

What sort of data (if any) does your app collect from its users?:

The website collects no data about its users, because I don’t need or even want such data. It has no accounts or login by design. Users can upload a custom dataset for processing if they wish, which will be immediately sent back to them after processing is completed and not stored or logged.

Link to your iNaturalist profile:

https://www.inaturalist.org/people/pearce_lucas

Description:

The application is a website at wherewild.net. There is a full tutorial/guide/description there at wherewild.net/help, but it’s quite lengthy, so I’ll go over the high level details here.

You can navigate to a species page by searching it up using the search bar at the top of the website. Once there, you’ll see an image of the species along with a description, aimed to be a high-level overview of its habitat based on statistics we compute about it. The description is generated by a static algorithm, not generative AI, and there are some ways it can be a bit verbose or inaccurate due to it trying to compress lots of information into not much text, so just keep that in mind.

Scrolling a bit down, you can find the species environment section, which shows a density graph for the selected variable (you can think of a density graph as a “smoothed” histogram if you’re not familiar). For this example, we can observe the average elevation is ~2,520 feet, and the range is from 0-9,020 ft. You can note the section at the bottom which computes some statistics of the distribution and compares those values to other related species at various contexts.

We have a lot of different variables wired up right now, covering climate, terrain, soil, and certain biogeographic categories. For example, you can view a circular density graph for aspect, showing a preference for south-facing slopes:

Scrolling further down, you can see all RG observations of the taxon on a globe, represented by dots colored in correspondence to the selected variable. In this example, lighter dots are higher elevation.

You can click on an individual observation to get its value, and by holding the ctrl button you can even change the tilt of the map, which I find really convenient to get a grasp on the topography of an area you’re planning on visiting:

If you want to get to an observation from iNaturalist, you can use its observation ID with the /occurrence endpoint, e.g. wherewild.net/occurrence/371716738, and it will pull up its species page along with said observation pinned on the map.

There’s a lot more you can do on the species page, but that’s covered in detail in the aforementioned guide on the website, so I won’t go into that here.

There’s also cool advanced taxon searches you can do by pressing enter while the search bar is selected, such as showing all species under Caryophyllales, sorted by median annual precipitation:

Discussion questions or areas seeking feedback:

In general, I’m posting this to try and get any and all feedback on how it could be improved or features people might want to see in it. I also simply want it to get a bit more publicity, as I’ve poured a ton of time into this over the past year, and it would be sad if no one ends up using it.

I also think it could help out some iNaturalist in some ways by providing richer input to things like CV and range models. I’m not entirely sure how such models work and if it would be feasible, however.

Other:

note: currently the website only has data for plants and fungi. There is no reason why animalia data cannot be added in the future, it just takes a while to process as there are many more animal observations, which I may get around to sometime soon.

For context, this was originally created as a project for my Senior Capstone in University along with 3 other students. I’ve spent the summer working on it after graduation trying to polish it up.

As a disclosure: generative AI was used substantially for coding assistance only, not during planning or direction of the project. The website contains no content generated by AI, nor do we plan to add any AI generated content in the future.

6 Likes

Love it so much. So fun to see what conditions plants are growing in. Would love to have soil orders included in the soil tab as well. It would be helpful to have an option to filter out user’s observations too.

1 Like

Something isn’t working as expected. Pick a taxon, say, salix. You get to see worldwide stats. Now narrow the location down, say, to Canada. You get errors like this one: ‘Failed to fetch environment stats (elevation) for 7BWB: 400 {“detail”:“large_taxon”}’.

Just tried the same thing and got the same error

Oof, sorry, right now lots of functionality on the taxon page is not supported when it comes to anything above the species level. I’m hoping to have that fixed eventually, but university started back up for me again and I don’t have a lot of time to work on it anymore. Anything at the species level and below should work without issues for now, (as long as the observations aren’t obscured)

2 Likes

This is great ! We are testing it out here in Botswana. Its a pity we have poor soil and rocktype data here in Botswana that can be fed into the software.

1 Like

Yeah, in my experience the soil data is usually the least reliable, at least on a micro rather than macro scale. Part of this is also using a global dataset for all variables for homogeneity, which are usually nowhere near as good as more localized datasets. I might add support for using custom datasets in the custom upload path eventually, but there’s lots of smaller details around that I need to figure out first.

1 Like