Mencari saran tentang peta jalan paket sumber terbuka generik? [Tutup]

17

Saya hanya ingin meminta saran dari guru GIS open source tentang tumpukan yang disarankan untuk digunakan untuk proyek yang saya bayangkan, karena saya tidak sepenuhnya memahami batas kemungkinan dengan sebagian besar paket. Saya tahu saya bisa melakukan apa yang saya inginkan dengan menggunakan berbagai paket ESRI, tetapi saya ingin lebih murah dan terbuka untuk dilihat dunia. Saya yakin saya bisa menghadapi tantangan apa pun dan mempelajari karya-karya dengan cukup baik untuk mewujudkan proyek, saya hanya ingin menghindari jalan yang salah sejak awal.

Visi situs saya: Dalam hal UI, situs yang mencari NON-GIS! Sesuatu yang lebih sesuai dengan whereis.com dengan segala sesuatu (atau hampir semuanya) dilakukan pada kotak yang melayang di atas peta dasar. Spesifikasinya tidak penting sekarang, hanya menekankan tidak ada lapisan SIG dengan kotak centang di panel terpisah, dll. Dalam hal interaksi pengguna, pengguna terdaftar dapat membuat fitur (seperti lokasi minum air mancur, jalur berjalan, dll.) Di atas pangkalan memetakan, dan mengedit fitur mereka sendiri. Jika mungkin, edit HANYA fitur mereka sendiri yang mereka buat. Peta kolaboratif, sungguh.

Saya masih sebagian besar dalam mode penelitian, bermain-main dengan berbagai paket tetapi hanya demi pengenalan umum dan bukan pengujian nyata (yang akan memerlukan mempelajari mereka secara rinci terlebih dahulu!). PostGIS tampaknya merupakan cara yang tepat untuk menjadi DB (s) yang mendasarinya, dengan Geoserver / Mapserver sebagai middleware yang paling mungkin. Openlayers hampir pasti akan menjadi peta yang licin, karena saya sudah nyaman dengan itu dan tahu kekuatannya.

Jadi itu membawa saya ke dua masalah utama yang membutuhkan sebagian besar saran:

1) Apa UI lapisan atas terbaik untuk situs seperti ini?

Apakah itu contoh Django yang disesuaikan (atau bahkan Django-CMS), atau contoh turunan GeoExt atau pustaka lain (tidak yakin apakah Anda dapat membuat login / registrasi / UI penuh dengannya), kerangka kerja CMS / kerangka kerja yang berbeda ( tidak, bukan drupal atau apapun yang membatasi!), atau sesuatu yang sama sekali berbeda?

2) Apakah mungkin pengguna situs terdaftar hanya mengedit fitur mereka sendiri?

Saya ingin menghindari tempat "graffiti" massal seperti OSM dan pengalaman proyek kolaborasi lainnya. Tampaknya dari bacaan dan saran saya sebelumnya bahwa Geoserver tidak dapat memiliki otentikasi pengguna tingkat fitur.

Bisakah Mapserver?

Saya bahkan tidak tahu apakah populasi pengguna situs (dari CMS, atau framework) bahkan dapat langsung terhubung ke geoserver / mapserver.

Jika konsep seperti itu tidak mungkin dilakukan dengan solusi open source, adakah cara lain untuk mencapai tujuan itu?

Sudahkah pengguna terotentikasi mengedit versi yang tidak dipublikasikan dari lapisan fitur utama (agar tidak mengacaukan yang asli) dan secara otomatis menggabungkannya ke versi yang diterbitkan setiap 24 jam sambil mempertahankan cadangan harian dari yang asli?

Agak bingung bagaimana mencapai maksud ini.

Dan ya, saya sudah melihat GeoNode juga, tapi saya hanya ingin satu peta keseluruhan (tetap sederhana) dan UI-nya tidak cukup interaktif (sebelum masuk ke GeoExplorer) atau terlalu mirip GIS di GeoExplorer. Sepertinya terlalu kalengan solusi untuk proyek ini.

Maaf menjadi begitu terbuka berakhir di sini dan samar-samar, tapi saya berharap dapat memulai jalan di mana hal di atas mungkin dan tidak berjalan ke dinding beberapa bulan dari sekarang, hanya harus mulai dari awal lagi karena jalan # 1 tidak pernah memiliki fungsi itu sejak awal!

Salah satu contoh terbaik yang bisa saya temukan adalah http://www.gpsies.com Saya tahu ini menggunakan leaflet, tetapi tidak yakin dengan kerangka dan basis data yang mendasarinya. Pengguna dapat membuat / mengunggah fitur mereka sendiri, tetapi tidak mengedit yang lain.

Jeremy
sumber
5
Bit tentang OpenStreetMap graffiti mungkin agak salah arah; OSM sesekali mengalami vandalisme, tapi itu pengecualian, bukan norma. Izin per pengguna memiliki cacat yang jelas bahwa sebagian besar pengguna bersifat sementara dan dengan demikian Anda akan memiliki data yang belum selesai atau sampah, tanpa ada cara bagi orang lain untuk menyelesaikan atau menghapusnya.
tmcw
Itu adalah poin yang sangat valid, dan yang akan saya ingat. Dengan proses pencadangan yang tepat, model terbuka lebar bisa menjadi yang paling bermanfaat. Saya bahkan jauh dari mengembangkan pada titik ini, saya punya banyak ruang untuk belajar dan menumbuhkan ide. Terima kasih!
Jeremy

Jawaban:

8

Karena saya sedang membangun sesuatu yang agak mirip sekarang, saya akan memberi tahu Anda bagaimana saya melakukannya dan Anda dapat memilih untuk mengubah apa pun yang Anda inginkan darinya untuk bagian lain.

Django (dengan GeoDjango ) cukup bagus untuk ini sebagai kerangka dasar untuk python (sekali lagi, jika itu adalah hal Anda, Anda bisa melakukan ini dalam bahasa lain).

Pendekatan saya untuk pengeditan tingkat pengguna mirip dengan apa yang dijelaskan CaptDragon. Saya menggunakan kerangka otentikasi Django . Untuk proyek ini, API saya sedang dibuat menggunakan Django's Tasty Pie yang sudah memiliki kerangka kerja yang memungkinkan Anda membuat RESTful API yang tepat dengan autentifikasi yang dipertimbangkan dengan cukup mudah.

Mapserver saya (atau Geoserver atau apa pun yang Anda pilih untuk digunakan) tidak pernah terpapar langsung ke dunia luar (hanya server lokal yang memiliki akses ke itu) ... semua ubin dilayani menggunakan server ubin ( geowebcache , tilecache , tilestache apa pun ).

Saya tidak perlu menyebutkan Openlayers, karena Anda sudah memilih itu. Pilihan bagus.

PostgreSQL / PostGIS adalah no-brainer. :)

Sebagai perpustakaan javascript, Anda tidak akan pernah salah dengan jQuery. Jika Anda akan mengizinkan beberapa pengeditan, Anda dapat mengambil manfaat dari memiliki beberapa struktur objek javascript Anda menggunakan sesuatu seperti backbone.js . Ambil ini dengan sebutir garam. Beberapa orang menyukainya - yang lain membencinya.

Jika Anda tidak ingin situs Anda terlihat sangat jelek, bantulah diri Anda sendiri dan gunakan kerangka kerja css seperti Bootstrap atau Kompas atau alternatif, seharga $ 20, beli saja dari themeforest atau wrapstrap (jika Anda ingin membuka sumbernya, Anda dapat ingin melihat lisensi jika Anda akan membelinya). Menghubungkan salah satu dari ini memakan waktu sekitar sehari dan membuat perbedaan besar pada bagaimana situs Anda terlihat!

Secara pribadi, saya telah melihat Django-cms (dan Pinax ) beberapa kali dan saya tidak pernah dapat meyakinkan diri saya bahwa itu sepadan dengan masalahnya. Saya belum pernah menyesali keputusan itu.

Karena Anda memilih proyek yang akan membutuhkan berbagai versi skema Anda (semakin banyak Anda mengembangkan, semakin banyak itu akan berubah), cukup gunakan selatan . Jangan ragu tentang itu! Serius.

Itulah yang akan saya gunakan, tetapi hal yang menyenangkan tentang Open Source adalah Anda dapat mengubah bagian yang sesuai dengan kebutuhan Anda.

Ragi Yaser Burhum
sumber
Terima kasih atas info hebatnya, bersama semua orang. Ini jelas membantu mempersempit fokus saya saat saya bergerak maju.
Jeremy
Bootstrap terlihat bagus. Bisakah Anda mengarahkan kami ke contoh situs pemetaan yang menggunakannya?
Stephen Lead
6

Saya menggunakan tumpukan yang mirip dengan Ragi, saya dekat dengan versi alpha dari aplikasi saya dan pada titik ini sepertinya ada pilihan yang benar. Ini solusinya:

Di server:

  • Server Ubuntu + apache web server + apache tomcat.
  • Postgresql + postgis sebagai basis data.
  • Geoserver, (dalam kasus saya, saya menggunakannya hanya untuk raster).
  • Django Framework + Tastypie. Tastypie melayani semua vektor melalui API dan pengguna memiliki izin 'per objek'.
  • python-gsconfig untuk mengontrol geoserver dari python.
  • laporan jasper untuk menghasilkan pdf.
  • pyjasper untuk mengontrol laporan jasper dari python.
  • Perpustakaan geostatistik berkinerja tinggi untuk interpolasi.

Di klien:

  • ExtJs 4 -> Itu fantastis, extjs bekerja sangat baik dengan tastypie dan Anda memiliki banyak hal yang bekerja di luar kotak, seperti jendela dan meja. Saya mulai menggunakannya dalam kode murni tetapi Anda tidak menggunakan Sencha Architect 2 yang sangat membantu.
  • OpenLayers -> Dengan dua metode yang dimasukkan satu di toko extjs dan satu di lapisan openlayers Anda minta mereka saling memperbarui tentang perubahan data.
Pablo
sumber
Saya pasti akan meneliti opsi tastypie, terlihat menjanjikan. Sangat membantu!
Jeremy
4

Mungkinkah pengguna situs terdaftar hanya mengedit fitur mereka sendiri?

Tampaknya ini dimungkinkan menggunakan Cartaro. Ini didasarkan pada Drupal (saya tahu, Anda mengatakan tidak ada yang membatasi seperti Drupal, tapi dengarkan saya!) Dan memungkinkan pengguna untuk hanya mengedit fitur mereka sendiri, di antara opsi lainnya. Berikut screenshot yang diambil dari halaman People saat login sebagai admin, yang menunjukkan jenis izin yang dapat diatur untuk pengguna:

Izin Cartaro

Selain itu, Cartaro beroperasi pada PostGIS, GeoServer, dan OpenLayers, sehingga berpotensi memiliki semua yang Anda cari.

Apa UI lapisan atas terbaik untuk situs seperti ini?

Saya tidak tahu apa lapisan atas "terbaik", tetapi sepertinya Cartaro dapat memberikan apa yang Anda cari karena Drupal memiliki banyak pilihan UI. Sepertinya Cartaro adalah awal dalam pengembangan (saya pribadi tidak tahu siapa yang menggunakannya), tetapi memiliki potensi.

Penyamak
sumber
1
Saya menghargai informasinya, saya tidak tahu Cartaro memiliki kemampuan itu. Untuk saat ini saya akan berpegang pada model dasar yang disebutkan orang lain (setidaknya dari perspektif penelitian / pembelajaran), tapi saya mungkin melihat sedikit lebih dalam tentang CMS ini. Saya memang memberikannya sekitar satu jam senilai waktu beberapa bulan lalu dan awalnya kurang terkesan, tetapi untuk bersikap adil, saya tidak memberikannya banyak peluang pada saat itu.
Jeremy
3

Saya akan menjawab pertanyaan # 2 Ini adalah bagaimana saya mengatasi masalah mengizinkan pengguna untuk mengedit catatan mereka sendiri.

Saya membuat layanan web saya sendiri RESTFUL atau SOAP (pilihan Anda) seperti UpdateUserRecord(string WKTLocation, string otherArg)yang terkait dengan mekanisme otentikasi situs web Anda.

OpenLayers dan PostGIS membaca dan menulis Teks Terkenal (WKT) serta GML dan format standar lainnya, tetapi saya pribadi menggunakan WKT untuk meneruskan informasi geometri kembali dan formulir dari aplikasi saya, melalui layanan web dan ke dalam DB PostGIS.

Metode web saya juga seperti UpdateUserRecordhanya dapat dipanggil oleh pengguna sesi terotentikasi. A 401 Unauthorizeddikembalikan jika orang lain mencoba memanggil layanan web ini. Dalam kasus saya, saya menggunakan .NET dan FormsAuthentication dengan opsi autentifikasi menggunakan OpenAuth2 (Google, Facebook, Twitter, dll). Ini juga bisa dilakukan di PHP, Java, dll.

Jadi Anda dapat membuat metode web yang memanggil basis data PostGIS secara langsung dan memperbarui atau menyisipkan catatan sesuai keinginan Anda. Dan itulah yang saya lakukan.

Kemudian saya menggunakan GeoServer untuk WFS, kemampuan permintaan WMS dan kemudahan menampilkan informasi pada peta di mana saya akan menyediakan UserID jika permintaan memanggilnya.

Semoga ini membantu.

CaptDragon
sumber
Ini memang banyak membantu, di samping banyak yang menggunakan prinsip dasar yang sama. Saya memiliki kepercayaan diri yang lebih besar sehingga saya dapat mewujudkannya dengan fokus pembelajaran yang tepat. Terima kasih juga!
Jeremy