Saya tahu, pertanyaan saya mirip dengan yang lama di situs ini.
Saya punya banyak file CSV (koordinat geografis) untuk diimpor ke qgis (dan kemudian dikonversi), dan cara yang biasa bukan cara terbaik untuk melakukannya (terlalu lama).
Saya memiliki hampir 500 file CSV (koordinat wgs84) dan inilah yang ingin saya lakukan:
- Impor semua file CSV sekaligus ke QGIS
- Proyeksikan mereka
- Ekspor mereka ke file CSV (lagi) tetapi dengan koordinat yang berbeda (konversi ke UTM33N)
Saya mencoba memahami cara menggunakan konsol python tapi saya tidak bergerak :(
Adakah yang bisa menjelaskan kepada saya bagaimana cara mencapainya langkah demi langkah?
Jawaban:
Jika Anda ingin memproyeksikan ulang file csv dari Python Console di QGIS maka Anda dapat menggunakan skrip berikut. Yang perlu Anda ubah adalah tiga jalur yang disebutkan dalam komentar.
Pada dasarnya, skrip mengimpor file csv Anda ke QGIS sebagai shapefile (dengan asumsi bidang geometris Anda dinamai
X
danY
). Kemudian menggunakanqgis:reprojectlayer
danqgis:fieldcalculator
algoritma dari Toolbox Pemrosesan untuk memproyeksi ulang dan memperbarui bidangX
danY
dengan koordinat baru. Itu kemudian menyimpan ini dalam folder dan mengubahnya menjadi file csv di jalur yang Anda tentukan. Jadi pada akhirnya, Anda telah memperbarui file shapefile dan csv di folder terpisah.Semoga ini membantu!
sumber
Solusi cepat untuk mengubah file yang dipisahkan oleh ruang yang berisi "lon lat" di WGS84 menjadi UTM33N tetapi Anda tidak mendapatkan data lain:
Itu bekerja dan mempertahankan urutan data jadi mungkin loop lain menggunakan mis. Awk untuk menggabungkan data deskriptif dengan koordinat?
Edit. Karena komentar berantakan yang saya buat di bawah ini, saya akan mengedit jawabannya di sini.
Script berikut harus melakukan pekerjaan membaca beberapa file csv, menambahkan kolom koordinat baru untuk setiap file.
Pada OSX Anda harus menginstal versi sed (2009) terbaru dan menggunakan baris pertama tanpa komentar dalam loop. Untuk Linux beri komentar pertama dan gunakan yang kedua. Sesuaikan
-F " "
sesuai dengan format pemisah dalam file csv Anda misalnya-F ","
untuk dipisahkan dengan koma. Perhatikan juga bahwa transformasi ketinggian adalah ke ellipsoid, bukan geoid, jadi pastikan untuk mengubah ketinggian yang sesuai.sumber
paste -d',' ${i} <(awk -v OFS="," -F " " 'NR>1 {print $1 " " $2}' ${i} | gdaltransform -s_srs EPSG:4326 -t_srs EPSG:32633 | awk '{gsub(" ",",",$0); print $0}' | /usr/local/bin/sed "1i\X,Y,Z") > utm${i}
Ganti / usr / local / sed hanya dengan sed jika Anda tidak menggunakan OSX. Ini tidak ideal jika file csv Anda dipisahkan oleh ruang, seperti yang diasumsikan di atas, tetapi berfungsi. Jika Anda memiliki koma yang terpisah, maka ubah-F " "
ke-F ","
Menggunakan qgis atau bahkan OGR adalah berlebihan untuk ini.
Gunakan
pyproj
( https://pypi.python.org/pypi/pyproj ) dikombinasikan dengan penulis python csv dan beberapa trik pustaka standar. Anda tidak perlu menginstal apa pun selainpyproj
untuk ini!sumber
pyproj
perlu diinstal secara terpisah untuk poster, atau sudah ada di sana.Anda tidak perlu python. Cukup gunakan baris perintah dan ogr2ogr. Dalam kasus Anda yang paling penting adalah parameter -t_srs srs_def.
Ini sudah dijelaskan dalam jawaban ini untuk Bagaimana saya bisa mengonversi file excel dengan kolom x, y ke shapefile?
PEMBARUAN Saya tidak punya waktu untuk menulis kode lengkap kepada Anda. Tetapi masalahnya adalah bahwa itu membutuhkan kode lebih sedikit di python daripada yang Anda pikirkan.
Masalah utama Anda adalah bekerja dengan file csv tidak senyaman menggunakan shapefile. Jadi, pertama-tama Anda perlu mengkonversi csv ke bentuk yang membutuhkan file VRT. Ini dijelaskan di tautan pertama. Di sini Anda perlu menulis perulangan skrip python melalui file Anda yang secara otomatis menghasilkan file vrt.
Ini adalah skrip yang saya gunakan sendiri. Anda harus menguji apakah itu cocok untuk Anda. Saya sudah memasukkan konversi dari WGS 84 ke UTM 33N
Anda perlu menyesuaikan parameter untuk Nama bidang , src , x dan y sesuai dengan file csv Anda.
UPDATE2
Setelah berpikir, saya bertanya pada diri sendiri mengapa Anda ingin menggunakan QGIS sama sekali? Anda bisa menggunakan skrip python seperti ini untuk secara langsung mengkonversi koordinat Anda dari WGS ke UTM. Dalam hal ini adalah csv terbuka sederhana, baca koordinat, ubah koordinat dan simpan ke file baru.
sumber