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!
sumber
Jawaban:
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;)
sumber
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.
sumber
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
sumber
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
sumber