это выглядит как глупый вопрос, но я не могу найти четкий ответ на этот вопрос: какие единицы геопанда / стройно использовать вычисление расстояния / площади между объектами?
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 в геопандах? )
read_postgis
результирующего фрейма данных только с атрибутомcrs
, который является строкой. У него нет атрибутаcrs['units']
; попытка запросить это приводит к TypeError.Какие бы единицы не были представлены координатами в вашей геометрии.
Стройные геометрии являются декартовыми и не делают никаких предположений о том, является ли Лон / Лат или кем-то еще.
источник
Для Geopandas это зависит от назначенной системы координат координат GeoDataFrame.
Для shapely в тех же единицах декартовой плоскости, shapely не поддерживает источник CRS .
источник