Obscured polygons and rgbif?

When bulk downloading inaturalist data from GBIF using the rgbif package, is there a way to also get the vertices for the obscuring polygon, rather than the centroid of that polygon? I find the centroid to be misleading as it’s unclear how large of a buffer to put around it.

Thank you!

I’m not 100% sure but I guess the polygon is not passed to GBIF so not accessible in rgbif. However you should get an information on the polygon size in the coordinateUncertaintyInMeters column from your rgbif download. If so, you can use that information to set the size of your buffer.

1 Like

the public coordinates for an obscured observation in iNaturalist represent a random point within a particular cell in a 0.2 deg tat x 0.2 deg long grid. (the point is not a centroid.) each obscured observation also has an “accuracy” value in meters that represents the diagonal of the obscuration cell (which would be the maximum distance between the public coordinates and the true coordinates).

the results returned from the GBIF API includes the field coordinateUncertaintyInMeters, which gives you that “accuracy” value.

for example, in https://api.gbif.org/v1/occurrence/4430953743 (https://www.inaturalist.org/observations/175142712), you can see that the value for coordinateUncertaintyInMeters = 29458, or roughly 30km, which is the diagonal of that particular obscuration cell.

if you want to plot the obscuring polygon instead, just it should be easy to figure it out from the coordinates of the observation, since the obscuration grid a 0.2 deg tat x 0.2 deg long grid.


Thank you, this is helpful.

Thinking about this more as I am working on ways to visualize this uncertainty…

Moving away from GBIF, if I use the export tool from iNat itself, I assume the accuracy you mention is called positional_accuracy? If so, do you have any ideas on how you might then regenerate that obscuration grid, so I can visualize that polygon? Or is there a set grid inaturalist uses?

It really is just a grid of 0.2 degree “squares”. So an obscured observation with notional coordinates of 37.8132664, -122.2540443 has an actual latitude between 37.8 and 38.0 degrees and an actual longitude between -122.2 and -122.4 degrees. If you plot those four edges you will have generated the boundaries of the uncertainty polygon. Obviously, as these coordinates are on the surface of a spheroid, this isn’t actually a square or rectangle.


Thank you! This has helped me, although I’m still working through some issues. I can create an uncertainty polygon around a point, but still working through how to recreate what iNat displays. More tinkering is in order.

1 Like

For the record, figured it out!

Happy to provide code to anyone else interested. Cheers

1 Like