parece una pregunta tonta, sin embargo, no puedo encontrar una respuesta clara al respecto: ¿qué unidades geopandas / bien proporcionadas usan para calcular la distancia / área entre objetos?
Shapely utiliza un sistema de plano cartesiano para calcular geometrías (distancia = distancia euclidiana)
Shapely no admite transformaciones del sistema de coordenadas. Todas las operaciones en dos o más entidades suponen que las entidades existen en el mismo plano cartesiano.
GeoPandas usa Fiona para leer archivos de forma (y otros) y Pyproj para transformaciones cartográficas.
Se accede al sistema de referencia de coordenadas (CRS) de los datos vectoriales de la colección a través de un atributo crs de solo lectura.
import fiona
c = fiona.open("test.shp")
print c.crs['units']
m
La unidad para calcular la distancia / área entre objetos con Shapely es metro en este caso.
Es lo mismo con GeoPandas.
import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m
Eso significa que si trabaja con una unidad crs.unit = degree (WGS84 por ejemplo) todos los cálculos son incorrectos. Primero debe reproyectar su capa ( ¿Cómo convierto la proyección de Eastings y Northings a WSG84 en geopandas? )
read_postgis
al marco de datos resultante solo tiene un atributocrs
, que es una cadena. No tiene atributocrs['units']
; intentando solicitar que resulte en un TypeError.Cuantas unidades estén representadas por las coordenadas en sus geometrías.
Las geometrías bien formadas son cartesianas y no hacen suposiciones sobre ser Lon / Lat o cualquier otra cosa.
fuente
Para Geopandas, depende del Sistema de referencia de coordenadas asignado al GeoDataFrame.
Para bien proporcionado está en las mismas unidades del plano cartesiano, bien proporcionado no admite fuente CRS .
fuente