sepertinya pertanyaan yang konyol, namun saya tidak dapat menemukan jawaban yang jelas tentang hal itu: unit geopanda apa / yang digunakan secara cerdas menghitung jarak / area antara objek?
Shapely menggunakan sistem bidang kartesius untuk menghitung geometri (jarak = jarak euclidean)
Shapely tidak mendukung transformasi sistem koordinat. Semua operasi pada dua atau lebih fitur menganggap bahwa fitur ada di pesawat Cartesian yang sama.
GeoPandas menggunakan Fiona untuk membaca shapefile (dan lainnya) dan Pyproj untuk transformasi kartografi.
Sistem referensi koordinat (CRS) dari data vektor koleksi diakses melalui atribut CR-read-only.
import fiona
c = fiona.open("test.shp")
print c.crs['units']
m
Unit untuk menghitung jarak / area antara objek dengan Shapely adalah meter dalam kasus ini.
Itu sama dengan GeoPandas
import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m
Itu berarti bahwa jika Anda bekerja dengan crs.unit = degree (WGS84 misalnya) semua perhitungan salah. Anda harus memproyeksikan ulang layer Anda terlebih dahulu ( Bagaimana cara mengonversi proyeksi Eastings and Northings ke WSG84 di geopanda? )
read_postgis
frame data yang dihasilkan hanya memiliki atributcrs
, yang merupakan string. Itu tidak memiliki atributcrs['units']
; mencoba untuk meminta hasil dalam TypeError.Unit mana saja yang diwakili oleh koordinat dalam geometri Anda.
Geometri berbentuk adalah Cartesian dan tidak membuat asumsi tentang menjadi Lon / Lat atau apa pun.
sumber
Untuk Geopanda, itu tergantung pada Sistem Referensi Koordinat yang ditugaskan untuk GeoDataFrame.
Untuk rupawan dalam unit yang sama dari pesawat cartesian, rupawan tidak mendukung sumber CRS .
sumber