Quais unidades são usadas pelas funções de área e distância do GeoPandas / Shapely?

13

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?

Philipp_Kats
fonte

Respostas:

15

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? )

gene
fonte
1
Alguma coisa muda quando você carrega do PostGIS? Estou definindo as coordenadas como argumento ao chamar read_postgiso quadro de dados resultante apenas com atributo crs, que é uma string. Não possui atributo crs['units']; tentando solicitar que resulte em um TypeError.
kuanb
3

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.

jakew
fonte
0

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 .

pablete
fonte