sembra una domanda sciocca, eppure non riesco a trovare una risposta chiara su ciò: quali unità geopandas / usano perfettamente il calcolo della distanza / area tra gli oggetti?
sembra una domanda sciocca, eppure non riesco a trovare una risposta chiara su ciò: quali unità geopandas / usano perfettamente il calcolo della distanza / area tra gli oggetti?
Risposte:
Shapely utilizza un sistema piano cartesiano per calcolare le geometrie (distanza = distanza euclidea)
Shapely non supporta le trasformazioni del sistema di coordinate. Tutte le operazioni su due o più funzioni presuppongono che le funzioni esistano sullo stesso piano cartesiano.
GeoPandas usa Fiona per leggere shapefile (e altri) e Pyproj per trasformazioni cartografiche.
Il sistema di riferimento di coordinate (CRS) dei dati vettoriali della raccolta è accessibile tramite un attributo crs di sola lettura.
import fiona
c = fiona.open("test.shp")
print c.crs['units']
m
In questo caso, l'unità per il calcolo della distanza / area tra gli oggetti con Shapely è misuratrice.
È lo stesso con GeoPandas
import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m
Ciò significa che se lavori con un crs.unit = degree (WGS84 per esempio) tutti i calcoli sono sbagliati. Devi prima riproiettare il tuo layer ( Come posso convertire la proiezione di Eastings e Northings in WSG84 in geopandas? )
read_postgis
il frame di dati risultante ha solo un attributocrs
, che è una stringa. Non ha attributocrs['units']
; il tentativo di richiedere che si traduca in un TypeError.