parece uma pergunta boba, mas não consigo encontrar uma resposta clara sobre isso: que unidades geopandas / bem torneadas usam o cálculo da distância / área entre os objetos?
Shapely usa um sistema de plano cartesiano para calcular geometrias (distância = distância euclidiana)
Shapely não suporta transformações de sistema de coordenadas. Todas as operações em dois ou mais recursos pressupõem que os recursos existem no mesmo plano cartesiano.
O GeoPandas usa o Fiona para ler os shapefiles (e outros) e o Pyproj para transformações cartográficas.
O sistema de referência de coordenadas (CRS) dos dados vetoriais da coleção é acessado por meio de um atributo crs somente leitura.
import fiona
c = fiona.open("test.shp")
print c.crs['units']
m
A unidade para calcular a distância / área entre objetos com Shapely é medida neste caso.
É o mesmo com o GeoPandas
import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m
Isso significa que, se você trabalha com um crs.unit = degree (WGS84, por exemplo), todos os cálculos estão errados. Primeiro, você deve reprojetar sua camada ( como converter a projeção de Leste e Norte para WSG84 em geopandas? )
read_postgis
o quadro de dados resultante apenas com atributocrs
, que é uma string. Não possui atributocrs['units']
; tentando solicitar que resulte em um TypeError.Quaisquer unidades são representadas pelas coordenadas nas suas geometrias.
Geometrias bem torneadas são cartesianas e não fazem suposições sobre ser Lon / Lat ou qualquer outra coisa.
fonte
Para Geopandas, isso depende do Sistema de referência de coordenadas atribuído ao GeoDataFrame.
Já que o formato está nas mesmas unidades do plano cartesiano, o formato não suporta a fonte de CRS .
fonte