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?
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?
Respuestas:
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.