Какие единицы измерения используются функциями GeoPandas / Shapely и расстоянием?

13

это выглядит как глупый вопрос, но я не могу найти четкий ответ на этот вопрос: какие единицы геопанда / стройно использовать вычисление расстояния / площади между объектами?

Philipp_Kats
источник

Ответы:

15

Shapely использует систему декартовых плоскостей для вычисления геометрии (расстояние = евклидово расстояние)

Shapely не поддерживает преобразования системы координат. Все операции над двумя или более объектами предполагают, что объекты существуют в одной и той же декартовой плоскости.

GeoPandas использует Fiona для чтения шейп-файлов (и других) и Pyproj для картографических преобразований.

Система координат координат (CRS) векторных данных коллекции доступна через атрибут crs только для чтения.

import fiona
c = fiona.open("test.shp")
print c.crs['units']
m

Единицей для расчета расстояния / площади между объектами с помощью Shapely является метр в этом случае.

То же самое с GeoPandas

import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m

Это означает, что если вы работаете с crs.unit = deg (например, WGS84), все вычисления неверны. Сначала вы должны перепроецировать свой слой ( Как преобразовать проекции Eastings и Northings в WSG84 в геопандах? )

ген
источник
1
Что-то меняется, когда вы загружаете из PostGIS? Я устанавливаю координаты в качестве аргумента при вызове read_postgisрезультирующего фрейма данных только с атрибутом crs, который является строкой. У него нет атрибута crs['units']; попытка запросить это приводит к TypeError.
17
3

Какие бы единицы не были представлены координатами в вашей геометрии.

Стройные геометрии являются декартовыми и не делают никаких предположений о том, является ли Лон / Лат или кем-то еще.

jakew
источник
0

Для Geopandas это зависит от назначенной системы координат координат GeoDataFrame.

Для shapely в тех же единицах декартовой плоскости, shapely не поддерживает источник CRS .

pablete
источник