Saya ingin membuat shapefile dari Frame Data Pandas menggunakan baris lon & lat.
Saya sudah punya file csv dan saya memprosesnya dengan panda untuk membuat bingkai data yang lebih mudah ditangani
Apakah mungkin melakukan itu tanpa membuat garis per baris?
Jawaban:
Sedikit terlambat tapi mungkin juga bermanfaat untuk orang lain. Ya, itu bisa dilakukan dengan
shapely
dangeopandas
.Misalkan panda dataframe Anda terlihat seperti ini:
Pertama, pastikan itu
geopandas
danshapely
diinstal dengan benar yang kadang-kadang tidak mudah karena mereka datang dengan beberapa dependensi (misalnya GEOS dan GDAL). Jika tidak berhasil pada percobaan pertama melaluipip install geopandas shapely
, cari kesalahan di Google atau StackOverflow / Gis.Stackexchange karena kemungkinan besar akan ada jawaban yang tersedia untuk menyelesaikan masalah itu untuk Anda.Kemudian, itu hanya masalah membuat kolom geometri baru dalam kerangka data Anda yang menggabungkan nilai lat dan lon menjadi
shapely Point()
objek. Perhatikan bahwaPoint()
konstruktor mengharapkan tupel nilai float, jadi konversi harus disertakan jika dtip kolom dataframe belum diatur kefloat
.Sekarang, ubah panda DataFrame menjadi a
GeoDataFrame
. Konstruktor geopanda mengharapkan kolom geometri yang dapat terdiri dari objek geometri yang indah, sehingga kolom yang kami buat baik-baik saja:Untuk membuang GeoDataFrame ini ke dalam shapefile, gunakan
to_file()
metode geopanda (driver lain yang didukung oleh Fiona seperti yangGeoJSON
seharusnya juga berfungsi):Dan seperti itulah bentuk shapefile yang dihasilkan ketika divisualisasikan dengan QGIS :
sumber
Untuk ArcMap Anda perlu menentukan Proyeksi sebelum mengekspor ke Shapefile.
sumber
df.crs= "+init=epsg:27700"
untuk memproyeksikan shapefile saya sesuai dengan British National Grid. Namun, ketika saya membukanya di ArcGIS, sistem koordinat tidak diketahui. Apa yang saya lakukan salah?