Які одиниці використовуються за допомогою функцій області та відстані GeoPandas / Shapely?


13

це виглядає як дурне запитання, але я не можу знайти чітку відповідь на це: які одиниці геопанд / формально використовують розрахунок відстані / площі між об'єктами?

Відповіді:


15

Shapely використовує декартову площинну систему для обчислення геометрії (відстань = евклідова відстань)

Shapely не підтримує перетворень системи координат. Усі операції з двома або більше ознаками передбачають, що функції існують в одній декартовій площині.

GeoPandas використовує Fiona для читання форм (та інших) та Pyproj для картографічних перетворень.

Довідкова система координат (CRS) векторних даних колекції доступна через атрибут crs-read, доступний лише для читання.

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 = ступінь (наприклад, WGS84), всі обчислення помиляються. Спочатку потрібно перепрофілювати ваш шар ( як я можу перетворити проекцію Eastings and Northings у WSG84 в геопандах? )


1
Чи щось змінюється, коли ви завантажуєте замість PostGIS? Я встановлюю координати як аргумент, коли виклику read_postgisотриманого кадру даних є лише атрибут crs, який є рядком. Він не має атрибуту crs['units']; спроба отримати запит, що призводить до типу TypeError.
куанб

3

Які б одиниці не були представлені координатами у ваших геометріях.

Структурні геометрії є декартовими і не припускають, що це Lon / Lat чи щось інше.


0

Для Geopandas це залежить від призначеної Координатної системи відліку для GeoDataFrame.

Для того, щоб його формально розташовували в тих же одиницях декартової площини, формально не підтримує джерело CRS .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.