How to search for species found in adjacent county, but not my county

I’m trying to answer the question: What species have been recorded at iNat for an adjacent county that my own county hasn’t recorded (yet)? So the query might look like:

All species recorded in their county

  • all the matching species recorded in my county
    = species recorded in their county, but not in mine.

I tried to use search syntax, but realized I was searching for observations made there but not made here (= all of their observations, duh).

Is there a straightforward method? I’m not interest in endemic species exactly. The species that they have and that we lack might be an invasive or non-native, which is fine.

I don’t have an answer, but frankly I’m a little underwhelmed by iNat’s capabilities when it comes to species-specific sorting. You can’t sort the ‘species’ page by date, only # of observations, and it is difficult to specify even simple queries, which I would honestly qualify yours as. It may be doable, but I’ve struggled to interact with the species-list-by-location data in the past to no avail.

It sounds like you would have to know how to export data and do joins. I can picture SQL tables in my mind doing this.

@jasonhernandez74 I have no idea how to do either. About all I know is “the New Math” from early 70s, which included basic set theory…which actually turned out to be useful for my non-mathematical mind, compared to the rest of the “new” stuff.

@birdsandbugs21 I agree that iNat isn’t great at everything, but in fairness, it is trying to do a lot of things. Certainly it’s more observations-driven than species-driven in extracting information.

4 Likes

To do this I downloaded from gbif occurances, as their platform is faster for returning csv files and includes iNat observations and can be set to only use iNat observations if wanted.

I am using two counties near me for this example and only retrieving plant species for speed.

  1. First, you will need to make a free GBIF account to be able to download from their data base.

  2. Next go to https://www.gbif.org/occurrence/search and use the filters to your liking for county one.

  3. Press the download button at the top of the table

  4. From there you will see these download options:

  5. Select species list and this will open the download page in a new tab.

  6. While county 1 species list is loading in the background, open a new occurrence search page and filter for county 2

  7. Repeat steps 4 & 5

  8. When both csv files have downloaded, open them both using a spreadsheet editor(excel or in my case libre office calc)

  9. When opening the file you will be asked Separator options for he csv file select “tab”

    this might look a little different in excel

  10. On the csv for county 1 delete all columns except “species”

  11. Repeat steps 10&11 for county 2

  12. Create a new document (titled county species comparison) and copy and paste over both species lists into their own columns on the same sheet(ideally into column A2 and B2 leaving space for a title) and label them with the county name(A1 and B1 respectively). Label the sheet Raw Data

  13. Open a new sheet on the same document titled Clean Data

  14. In A2 of Clean Data paste the formula =SORT(UNIQUE(FILTER('Raw Data'.A2:A100, 'Raw Data'.A2:A100 <> ""))) Replace A100 with however many rows of values you have on the sheet Raw Data in my case A2539
    The filter formula removes any blank spaces, your data set might not contain any blanks but still good to include, the unique formula removes any repeats, and the sort formula orders the species alphabetically

  15. In A1 of Clean Data write the county Name
    You should have now have a species List for county 1

  16. Repeat step 14&15 in B2 and replace instances of A with B

  17. Now you should have two species lists for two different counties side by side, you might need to resize columns to clearly read full names

  18. Go to a new column and input unique to ____ county in D1

  19. In D2 input the formula =FILTER(A2:A1807, ISNA(MATCH(A2:A1807, B2:B1174, 0))) while replacing the cell values for how many rows are in that column. This should give you a list of species found in one county and not the other.
    ISNA checks if the result of the MATCH function is #N/A, FILTER function filters the range

  20. Now we can do the inverse of that, go to a new column, in my case E1 and input unique to ____ county

  21. In E2 input the formula =FILTER(B2:B1174, ISNA(MATCH(B2:B1174, A2:A1807, 0))) while replacing the cell values for how many rows are in that column on your table

  22. Now you should have two columns of species names of species found in one county and not the other

And heres numerical stats for these two counties if you were interested:


https://docs.google.com/spreadsheets/d/11Iz_0kzhXFVGicNVWqUoS0Uji36i7TK4/edit?usp=sharing&ouid=111089383541820790447&rtpof=true&sd=true
Here is my spreadsheet in case it helps you

4 Likes

see https://forum.inaturalist.org/t/a-query-that-will-find-unobserved-species-in-a-smaller-place-that-exists-inside-a-larger-place/44807/5.

the last part of the post mentions a tool that could be modified, and i think it has been modified since that post.

if you want to use the first method described in the post, the checklist for a place can be found by searching for the place and then clicking on the link in the species tab to view the place checklist.

3 Likes

@dgwdoesthings @pisum Thank you both! I’m snowed in, so I guess I’ll double down on coffee and see if I can make those methods work.

1 Like

OK, I’ve tried both methods with some success. Need to refine as the two methods gave me different results. Now I’m a man with two watches, ha!

@dgwdoesthings Thanks very much for the detailed instructions. I think my geo definition may be wrong, as my downloaded and filtered data shows the Townsend’s Warbler as showing up only in Comal County (while the checklist comparison method shows observations of this species in both counties). I wasn’t sure how to define “county” at GBIF. The “Locality” filter seemed full of custom definitions, so instead I used this filter:

But I have the feeling this geo definition might not match iNat’s, and maybe that’s why the Townsend’s showed up as missing in Bexar Co with my first trial of this method. Any ideas?

@pisum Below is the URL I used to compare place checklists for Bexar and Comal counties. Nifty! Would there be any way to limit comparison results to a taxon such as Class Aves, or to Genus Melospiza, as examples? I made a few tries with syntax but no luck. Otherwise, it’s 300+ web pages with no easy way to navigate to specific taxa of interest. Thanks for any input.

(https://www.inaturalist.org/lists/1983-Bexar-Check-List/compare?with=1103-Comal-Check-List)

1 Like

i think using the list comparison you can limit based “iconic taxa” but i’m not sure about anything else. in other words, i’m not sure how to limit things to just Melospiza, but you can limit to birds by adding a URL filter parameter taxon=3, i think: https://www.inaturalist.org/lists/1983-Bexar-Check-List/compare?taxon=3&with=1103-Comal-Check-List

if you can limit each side of the comparison to no more than 500 taxa, then you also have the option to use the “experimental comparison tool” to do effectively the same thing as the second or third options mentioned in that previous post i referenced, as shown below:

there’s potentially a few things going on here:

  1. iNat pushes over only research grade observations with certain licenses. it looks like some didn’t make make it over because they were not licensed or had licenses that GBIF won’t accept.
  2. these observations have their locations obscured by iNat, which means that when they are pushed over to GBIF they get a randomized point within the same 0.2 deg lat x 0.2 deg long area, with a positional accuracy that will be equivalent to the “diagonal” of that area. so even if your shape matches exactly, you might not get these observations because of the way the coordinates are obscured. (within iNat, filtering by “standard places” like counties will still retrieve the proper observations, as long as the true center point of the observation falls wthin iNat’s county boundary.)
  3. your shape may be simplified when you try to filter within GBIF.
3 Likes

Worth mentioning Easily Missed - set radiuses and it’ll tell you what’s not been found the immediate area but has in the wider area. Does a similar job.

1 Like

I also used the administrative areas filter, as it sorts them by coordinates into the counties they fall into and so that shouldn’t be the problem.
As far as your townsend warbler issue, I think I figured it out, most of the observation in Bexar county were made by people who chose a licensing that doesn’t allow re-use

and thus wont be seen on gbif
and the one observation that is licensed for reuse, is not in gbif yet as the system takes time
Compare:

to:

Including non Inat sources in GBIF, townsend warbler shows up

Edit: Just read pisum’s message and looks like we’ve reached a similar conclusion

1 Like

@pisum Thanks for the nudge on the experimental comparison tool. I wish its scope were wider, but it does do a nice job on a narrow pie slice. I also corrected my syntax error on the place checklist compare method, so thanks for the corrected URL. No idea why I can narrow things down to taxon=3 (Aves) but not taxon=anything lower down the tree. But better than nothing.

@dgwdoesthings Agreed, looks like you and pisum each figured out that licensing was the cause of the results discrepancy between iNat and GBIF for that Townsend’s Warbler obs.

At any rate, I wasn’t looking for data perfection, just trying to get an idea of what new species might be fairly near this location. Thanks all very much for the input. Many talented people here!

@jamie-aa Thanks for that link to Easily Missed. Nice interface, and you get a quick idea of what’s species are missing in your current location that have occurred around you. There are a bunch of species “missing” that I’ve observed in my backyard, but it occurs to me that I usually obscure my home location, which would explain things.

2 Likes