це виглядає як дурне запитання, але я не можу знайти чітку відповідь на це: які одиниці геопанд / формально використовують розрахунок відстані / площі між об'єктами?
це виглядає як дурне запитання, але я не можу знайти чітку відповідь на це: які одиниці геопанд / формально використовують розрахунок відстані / площі між об'єктами?
Відповіді:
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 в геопандах? )
read_postgis
отриманого кадру даних є лише атрибутcrs
, який є рядком. Він не має атрибутуcrs['units']
; спроба отримати запит, що призводить до типу TypeError.