Unit apa yang digunakan oleh GeoPandas / Fungsi area dan jarak cantik?

13

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?

Philipp_Kats
sumber

Jawaban:

15

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? )

gen
sumber
1
Apakah ada yang berubah ketika Anda memuat dari PostGIS? Saya menetapkan koordinat sebagai argumen saat memanggil read_postgisframe data yang dihasilkan hanya memiliki atribut crs, yang merupakan string. Itu tidak memiliki atribut crs['units']; mencoba untuk meminta hasil dalam TypeError.
kuanb
3

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.

jakew
sumber
0

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 .

penuh
sumber