wygląda to na głupie pytanie, ale nie mogę znaleźć na to jednoznacznej odpowiedzi: jakie jednostki geopandy / zgrabnie używają obliczania odległości / powierzchni między obiektami?
wygląda to na głupie pytanie, ale nie mogę znaleźć na to jednoznacznej odpowiedzi: jakie jednostki geopandy / zgrabnie używają obliczania odległości / powierzchni między obiektami?
Odpowiedzi:
Shapely używa układu kartezjańskiego do obliczania geometrii (odległość = odległość euklidesowa)
Zgrabna nie obsługuje transformacji układu współrzędnych. Wszystkie operacje na dwóch lub więcej obiektach zakładają, że obiekty istnieją na tej samej płaszczyźnie kartezjańskiej.
GeoPandas używa Fiony do odczytu plików kształtów (i innych) oraz Pyproj do transformacji kartograficznych.
Dostęp do układu odniesienia za pomocą współrzędnych (CRS) danych wektorowych kolekcji można uzyskać za pomocą atrybutu crs tylko do odczytu.
import fiona
c = fiona.open("test.shp")
print c.crs['units']
m
W tym przypadku jednostką do obliczania odległości / powierzchni między obiektami za pomocą Shapely jest metr.
Tak samo jest z GeoPandas
import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m
Oznacza to, że jeśli pracujesz z crs.unit = stopień (na przykład WGS84), wszystkie obliczenia są nieprawidłowe. Najpierw musisz ponownie przerzucić warstwę ( Jak przekonwertować projekcję Eastingsa i Northingsa na WSG84 w geopandzie? )
read_postgis
wynikowej ramki danych ma tylko atrybutcrs
, który jest łańcuchem. Nie ma atrybutucrs['units']
; próba żądania, które powoduje błąd typu.