Bagaimana cara membuat front-end sederhana untuk database PostGIS?

21

Organisasi saya mengumpulkan banyak data pemantauan lingkungan (aliran aliran, kimia air, dll.) Yang sebagian besar saat ini disimpan di Excel. Saya ingin memasukkan semuanya ke dalam basis data - mungkin PostGIS - tetapi saya membutuhkan data untuk dapat diakses oleh orang-orang yang tidak memiliki pengetahuan tentang prinsip-prinsip basis data (tidak ada SQL atau semacamnya).

Saya ingin memiliki semacam front-end sederhana untuk database saya di mana pengguna memilih stasiun pemantauan yang menarik, tipe variabel (misalnya aliran konsentrasi nitrat) dan interval waktu. Basis data kemudian akan mengembalikan data yang diminta dalam format csv, yang dapat diunduh pengguna ke komputer mereka. Di dunia yang ideal ujung depan akan menampilkan peta yang dapat diklik dari semua stasiun pemantauan, tetapi jika lebih mudah maka daftar drop-down dari situs yang tersedia akan baik-baik saja untuk memulai. Saya kira front-end ini mungkin akan menjadi situs web, tetapi tidak harus demikian.

Seberapa sulit ini, tolong, dan apa berbagai pilihan saya? Saya bukan ahli basis data dengan cara apa pun, tetapi saya memiliki latar belakang yang kuat di Desktop GIS dan saya senang menulis skrip Python sederhana dan bermain dengan PostGIS, SpatiaLite dan ESRI Personal geodatabases. Saya belum pernah melakukan pengembangan web atau GIS web, tetapi saya ingin sekali belajar.

Saya menghabiskan sebagian kemarin mengeksplorasi beberapa tutorial OpenGeo yang sangat baik . Pendekatan ini terlihat menjanjikan, dan setidaknya sekarang saya bisa melihat cara agar data saya ditampilkan di situs web. Yang kurang jelas bagi saya adalah bagaimana saya membiarkan pengguna menanyakan basis data dan mendapatkan hasil kembali.

Pertanyaan saya: Struktur perangkat lunak seperti apa yang harus saya pikirkan untuk proyek seperti ini? misalnya

PostGIS + GeoServer + Something else?

Pilihan apa lagi yang tersedia yang harus saya teliti?

Solusi sederhana namun fungsional akan lebih disukai pada awalnya: jika saya dapat membuat prototipe dasar saya dapat menggunakannya untuk membenarkan menghabiskan lebih banyak waktu belajar bagaimana melakukan hal-hal "dengan benar". Sumber terbuka juga merupakan persyaratan karena saya tidak memiliki anggaran untuk ini sampai saya dapat membuktikan beberapa manfaat.

Terima kasih banyak!

JamesS
sumber
2
Jika Anda meninggalkan peta, Anda bisa menyelesaikan semua ini hanya dengan Apache & PHP. Anda hanya perlu membuat satu formulir input untuk skrip PHP yang mengambil data dari PostGIS. (Anda dapat mengganti PHP dengan Python.) ... Tapi kemudian ini bukan pertanyaan untuk GIS.SE
underdark
Terima kasih banyak untuk semua yang merespons! Ini semua adalah jawaban yang membantu dan Anda telah memberi saya banyak hal untuk ditindaklanjuti. Saya ingin "menerima" semuanya, tetapi saya telah memberikan poin ke @canisrufus karena saya menemukan paragraf terakhirnya sangat berguna dan saya belum pernah menemukan web.py sebelumnya. GeoDango terlihat keren juga. Tepuk tangan!
JamesS
@jamesS saya akan memperluas paragraf terakhir saya, tetapi mulai tampak tidak masuk akal dari topik. Jika Anda memiliki pertanyaan, atau ingin monolog yang lebih panjang tentang cara mengatur, Anda dapat menghubungi saya di obrolan di sini.
canisrufus
@ James Ada kemajuan dalam hal itu? Bekerja di topis yang sama, saya baru mulai mengembangkan proyek Django
Luca Moiana
Hai @Luca Moiana. Sebagai prototipe, saya mengikuti saran dalam jawaban yang diterima di bawah ini menggunakan web.py, Apache dan PostGIS (tetapi situs web saya pada akhirnya tidak menyertakan peta). Beberapa tahun kemudian, kami telah mengadopsi Sistem Informasi Hidrologi CUAHSI , yang sangat bagus. Dibutuhkan sedikit pengaturan, tetapi menawarkan berbagai alat untuk menyimpan, mencari, mengeksplorasi, menganalisis dan memvisualisasikan data lingkungan.
JamesS

Jawaban:

13

Jika Anda sudah tahu jalan tentang Python dan SQL, tidak akan terlalu sulit untuk membangun situs web menggunakan kerangka kerja web python. Dua yang sederhana - cherry.py dan web.py - muncul di pikiran. Saya pikir belajar jalan Anda di sekitar objek mapper relasional Django mungkin lebih bekerja daripada nilainya.

Python memiliki perpustakaan bernama psycopg2 (http://initd.org/psycopg/, dan tutorial: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ) yang memungkinkan Anda menjalankan kueri terhadap PostGRESQL / PostGIS dengan mudah. Ini juga memiliki modul CSV (http://docs.python.org/library/csv.html) yang akan membuat membuat CSV Anda dari kata query menjadi mudah.

Seperti yang dikatakan orang lain, membuat peta di ujung depan menambah kerumitan. Anda akan membutuhkan sesuatu seperti OpenLayers untuk menampilkan peta, dan sesuatu seperti MapServer atau GeoServer untuk membuat gambar peta dari basis data Anda (atau sumber data lainnya). Itu mungkin akan lebih baik sebagai langkah kedua.

Untuk saat ini, "semua" sepertinya Anda butuhkan adalah satu halaman web: formulir yang memungkinkan Anda memilih parameter kueri yang Anda inginkan. Mereka menekan "kirim", parameter kueri dikirim ke server (Apache akan menjadi pilihan yang baik), yang kemudian menjalankan skrip Anda, yang menanyakan database, membuat file CSV yang sesuai dan mengembalikannya ke browser. Mudah seperti py;)

canisrufus
sumber
2
Anda TIDAK PERLU MapServer / GeoServer untuk membuat gambar. Anda bisa mendapatkan data langsung dari PostGIS dan menampilkannya sebagai data vektor di peta Anda. Namun, tergantung pada kompleksitas data Anda, Anda dapat mentransfer sejumlah besar data. Itu tergantung situasi. Juga, menampilkannya sebagai data vektor memberi Anda pilihan untuk mengklik pada suatu objek untuk menunjukkan / mengedit data itu.
Mr_Chimp
@ mr_chimp Oh, itu poin yang bagus. Kekhawatiran saya adalah lapisan latar belakang, tetapi orang hanya bisa menggunakan Google Maps atau OSM atau lainnya. Bahkan, saya cenderung berpikir bahwa layer vektor umumnya merupakan solusi yang lebih baik (untuk pengguna), tetapi ketika Anda menunjukkan ada batasan. Dan tentu saja, cara paling sederhana untuk mentransfer vektor adalah dengan memiliki sesuatu seperti MapServer atau GeoServer melayani mereka;)
canisrufus
Seperti biasa, ini adalah kasus menggunakan alat yang tepat untuk pekerjaan itu. Karena JamesS sudah memiliki database PostGIS, ia mungkin juga hanya mengambil data langsung dari sana. Kecuali saya lupa sesuatu, mengatur MapServer / apa pun hanya akan menjadi langkah tambahan (meskipun biasanya itu akan menjadi cara tercepat).
Mr_Chimp
8

GeoJango

Pengaturannya cukup mudah dan mendapatkan fungsionalitas dasar. Ini Python, jadi setidaknya Anda terbiasa dengan bahasa tersebut. Mungkin berlebihan untuk kebutuhan Anda. Tetapi, jika Anda ingin mengembangkan situs, Anda punya kerangka kerja yang matang untuk membangunnya.

Sean
sumber
5

Jika Anda tidak ingin / perlu membuat peta. Yang Anda butuhkan hanyalah server web dan bahasa pemrograman (saya lebih suka Apache karena mudah digunakan dan diatur, tetapi ada opsi lain) dan kemudian Postgres dengan PostGIS atau beberapa database lain.

Jika file excel Anda diformat dengan baik, mengimpor data ke dalam basis data harus sederhana. Anda dapat menulis skrip yang dapat menghasilkan pernyataan INSERT. Kueri yang Anda gambarkan terdengar seperti itu juga dapat dikelola.

Jika / ketika Anda ingin melakukan bagian pemetaan, Apache, GeoServer dan OpenLayers akan menjadi solusi yang sederhana dan gratis. GeoServer (seperti yang Anda tahu) dapat dengan mudah menggunakan PostGIS untuk WMS atau format output lainnya. Yang harus Anda lakukan adalah menambahkan toko yang terhubung ke PostGIS, dan kemudian menambahkan lapisan dari tabel di PostGIS.

Alat pemetaan gratis lainnya yang bisa Anda lihat adalah Mapserver dan MapGuide. Open Source MapGuide melakukan beberapa hal yang sangat keren tetapi lebih rumit dan dokumentasinya sedikit ketinggalan.

MySQL juga memiliki ekstensi spasial, tetapi tidak memiliki banyak fitur dan fungsi spasial seperti PostGIS.

Jika Anda terbiasa dengan python saya akan melihat GeoDjango ... Saya tidak tahu banyak tentang itu secara pribadi tetapi saya sudah mendengar hal-hal baik

Nate
sumber
4

Anda dapat menemukan ikhtisar desain aplikasi pemetaan web dan masalah pengembangan, lebih lanjut ke kode sumber sepenuhnya didokumentasikan untuk aplikasi pemetaan web lingkungan berbasis pada Google Maps dan database spatio-temporal PostgreSQL / PostGIS, dalam MSc saya yang relatif baru dalam disertasi Ilmu Komputer: " Desain dan pengembangan prototipe yang menangani manajemen data, analisis, dan penyampaian vektor lingkungan spatio-temporal menggunakan teknologi Open Source. Kerangka umum dan studi kasus difokuskan pada pengelolaan air tanah di wilayah pesisir "

Disertasi dapat diunduh dari http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf

Ezio
sumber