I have hundreds of polygons that represent plants geographical ranges around the globe. For each species I have both a shapefile and collection of findings as points.
I would like to analytically find each pair of species that common range boundary at least at one point. Or, even better, which species has a boundary in certain proximity from another species.
Any idea how to do this?
I use QGIS and prefer Perl, but solution in any other language would be fine also.
Tell me more
×
Geographic Information Systems Stack Exchange is a question and answer site for
cartographers, geographers and GIS professionals. It's 100% free, no registration required.
|
|
|||
|
|
|
If you put your polygon shapefile into spatialite, this is easy. Say your species polygon table has columns "pk" as the primary key, "species_name", and "geometry" (which is created when you import a shapefile into spatialite) then you need a query such as:
I'd mention a few points:
|
|||
|
|
I'm not sure whether your range polygons have exactly precise shared boundaries, like country borders. If so, and if you work with GeoJSON and/or JavaScript, I'd highly recommend Mike Bostock’s TopoJSON, which extracts topology from a GeoJSON object by finding all exactly shared boundaries. This results in a smaller file since the shared polyline coordinates only need to be written once. It also uses delta-encoding to further reduce the file size. |
|||
|
|