Organisasi kami sedang mempertimbangkan untuk memindahkan alur kerja geoproses kami ke PostGIS. Kami saat ini menggunakan ArcGIS, dengan sejumlah besar alat Python khusus yang digunakan dalam ModelBuilder. Kami memindahkan sebagian besar data kami ke PostGIS untuk dikonsumsi oleh berbagai aplikasi, dan sekarang kami bertanya apakah masuk akal untuk melakukan pemrosesan data di sana juga.
Kami memproses data agar kompatibel dengan perangkat lunak kami. Pelanggan membeli perangkat lunak kami, memberi kami data mereka, dan kami memprosesnya agar dioptimalkan untuk digunakan dalam perangkat lunak kami. Ini mengharuskan kami untuk membangun berbagai alat untuk menangani berbagai kualitas data input. Kami tidak dapat mengharapkan untuk menerima data dalam format atau skema tertentu, jadi kami membangun alat untuk memetakan bidang input ke bidang output, memilah bidang tunggal ke dalam beberapa bidang, menggabungkan beberapa kumpulan data, dll. Kami juga melakukan penggabungan spasial, persimpangan, trim spasi putih dan bidang gabungan, dan banyak operasi umum lainnya. PostGIS tampaknya sangat mampu melakukan semua kebutuhan pemrosesan kami.
Bagi Anda yang menggunakan PostGIS untuk melakukan pemrosesan data Anda, apakah Anda punya saran untuk organisasi, alat untuk digunakan, dll?
- apakah Anda menggunakannya bersamaan dengan pemrosesan python QGIS?
- orang menggunakan Python ORM untuk pemrosesan non-web? Saya telah condong ke arah menggunakan GeoDjango karena memiliki ORM Python untuk PostGIS. Tes awal kami menggunakan PostGIS untuk memproses data memiliki banyak blok teks SQL besar dalam kode Python dan kami berpikir bahwa GeoDjango ORM dapat membantu menciptakan kode yang lebih mudah dikelola dan dibaca. Ada juga GeoAlchemy ORM yang berinteraksi mirip dengan PostGIS, dan tampaknya tidak se-spesifik web seperti Django.
Saya belum pernah mendengar orang menggunakan PostGIS untuk melakukan geoproses seperti yang saya lihat orang menggunakan QGIS atau ArcGIS, jadi saya ingin tahu apakah ini merupakan alternatif yang sebanding.
sumber
Jawaban:
Saya sangat suka menggunakan PostGIS untuk keperluan geoproses.
Dua resons utama saya adalah:
1) Sering kali jauh lebih cepat untuk melakukan tugas-tugas kompleks dalam database karena Anda mendapatkan bantuan dari perencana kueri untuk melakukan hal-hal dalam urutan yang benar.
2) Cukup simpan baris sql yang Anda gunakan dalam file teks dan Anda memiliki dokumentasi yang sangat baik tentang apa yang telah Anda lakukan.
Alur kerja saya, jika tugas melibatkan banyak "langkah" digunakan untuk menjadi sesuatu seperti:
1- Membangun bagian dari permintaan atau semuanya tergantung pada sifat tugas
2- Uji tes permintaan pada sebagian kecil dari dataset untuk lihat bagaimana kinerjanya
3- Lakukan penyesuaian jika perlu
4- Jalankan kueri pada seluruh dataset
5- Simpan baris dalam file teks dengan beberapa catatan.
Semua ini sering tentang memulai ArcGIS dan menunggu lisensi dari server lisensi.
sumber
Kami menggunakan PostGIS dan semacam lingkungan pemrograman Python untuk sejumlah layanan web geoproses produksi yang kami kembangkan; Tidak ada komplain!
GeoDjango adalah pilihan tepat jika Anda bekerja sebagian besar (atau secara eksklusif) dengan fitur untuk aplikasi web. Itu tidak mendukung tipe data raster PostGIS atau PostGIS 2.0. Itu datang secara native dengan versi terbaru Django, sekarang. Anda dapat menebus kurangnya dukungan raster dan ketahanan keseluruhan dengan menggunakan custom, query SQL mentah di Django.
Untuk aplikasi geoproses yang lebih kuat, dan khususnya jika Anda ingin menggunakan model objek-relasional, cobalah GeoAlchemy2. Pustaka GeoAlchemy asli, yang memperluas SQLAlchemy, menyediakan dukungan untuk data fitur; GeoAlchemy2 memperluasnya dengan menyediakan (terbatas) dukungan untuk tipe data raster baru di PostGIS 2.0.
Dan kemudian, selalu ada binding Python untuk GDAL dan OGR!
sumber
Meskipun mungkin, sulit untuk membayangkan bahwa Anda ingin melakukan banyak geoproses di dalam mesin basis data atau kerangka kerja web. Saya sarankan Anda melihat pustaka kode yang mendasarinya - geos, proj.4, dan gdal. Ada binding Python atau perpustakaan untuk ketiganya. Opsi lain untuk melihat adalah plugin geoproses Sextante untuk QGIS, karena memungkinkan pengembangan model / alur kerja.
Beberapa pemikiran lain:
Jangan mengesampingkan penggunaan PostGIS. Ini memberikan penyimpanan yang baik dan kemampuan server, dan memperlihatkan beberapa fungsi geo dan proj.4 melalui SQL. Ini juga bermain bagus dengan alat-alat lain yang disebutkan: Django, QGIS, dan Python.
Selain kemungkinan penggunaan plugin Sextante tersebut di atas, QGIS baik untuk visualisasi, memiliki beberapa alat untuk bekerja dengan postgres, dan juga termasuk konsol Python.
Jika Anda mencari ORM dan menginginkan ujung depan web, Django akan melakukannya. Jika Anda tidak keberatan dengan antarmuka yang kurang seksi, halaman admin akan memberi Anda antarmuka CRUD dengan sedikit usaha - bahkan pengeditan geometri jika Anda menggunakan GeoDjango.
sumber
Lihatlah ETL , khususnya, FME untuk operasi spasial (atau GeoKettle open source ).
Saya sangat suka menggunakan FME, karena menciptakan alur kerja visual, dan Anda dapat memisahkan logika untuk operasi spasial, bergabung, menggabungkan ... semuanya, dan Anda dapat bekerja dengan format non-basis data, dan berbagai basis data ... Anda dapat lakukan banyak, dan mudah, dan cepat. Jika Anda memiliki pengalaman dengan pembuat model, Anda akan mengambilnya dengan cepat, plus ada banyak dokumentasi online.
Satu-satunya kelemahan FME adalah membutuhkan biaya. Tapi saya pikir itu sepadan.
Alternatif untuk menggunakan FME mungkin adalah GDAL dan OGR bersama dengan mungkin Python untuk menyatukannya. Atau, seperti yang Anda katakan, melakukan semuanya di PostgreSQL. Saya pikir ETL memiliki peran yang kuat dalam perselisihan data spasial, dan itu banyak yang tidak bisa Anda lakukan hanya dalam database Anda.
Saya belum pernah menggunakannya, tetapi GeoServer menyediakan implementasi WPS , saya belum pernah menggunakan ini, tetapi orang lain mungkin berkomentar bagaimana ini bisa bermanfaat bagi Anda?
Saya tidak bisa mengomentari menggunakan GeoDjango, tapi saya pikir itu lebih merupakan CMS, seperti front-end untuk melihat data.
sumber