Opsi untuk menampilkan vektor PostGIS di OpenLayers

22

Saya sangat baru dalam pemetaan web, jadi pertanyaan ini mungkin agak salah kaprah.

Saya ingin memiliki antarmuka web yang sangat sederhana menggunakan OpenLayers (atau bahkan Google Maps jika itu akan lebih mudah) yang dapat menampilkan sejumlah tabel titik dan poligon yang saat ini ada di PostGIS.

Saya ingin ini sesederhana (dan serendah mungkin):

  • Saya tidak ingin harus membuat ubin (kecuali ada alasan yang sangat bagus), atau memiliki lapisan middleware yang besar dan kompleks.
  • Kinerja tidak harus fenomenal, karena ini untuk penggunaan internal dan karenanya tidak perlu skala di luar beberapa pengguna bersamaan.
  • Penataan lapisan vektor sangat minim.
  • Alat open source lebih disukai karena saya hampir tidak memiliki anggaran untuk ini.

Apa pendekatan yang direkomendasikan untuk ini?

fmark
sumber

Jawaban:

14

Cara termudah untuk mengatur peta online dari sumber PostGIS adalah menggunakan Geoserver. Manual Pengguna Geoserver berisi pengantar yang baik untuk menggunakan PostGIS sebagai sumber data . Anda pada dasarnya menambahkan penyimpanan data yang berisi informasi koneksi dan setelah itu Anda dapat menerbitkan tabel apa pun yang berisi geometri. Selain PostGIS, Anda dapat menggunakan banyak sumber data lain juga:

teks alternatif

Dari dalam antarmuka web Geoserver, Anda juga dapat melihat pratinjau lapisan pada halaman web OpenLayers. Anda dapat menggunakan sumber dari halaman pratinjau ini untuk membangun aplikasi OpenLayers Anda sendiri.

Geoserver menawarkan banyak opsi gaya untuk data vektor dan raster. Untuk permulaan, Anda mungkin cukup senang dengan hanya menyesuaikan beberapa gaya pra-dibuat yang datang dengan instalasi.

Secara default, Geoserver tidak memasang dan OpenLayers tidak meminta ubin. Jika Anda tidak membutuhkan kinerja tinggi, Anda tidak perlu repot dengan ubin.

Secara pribadi, saya pikir OpenLayers lebih mudah digunakan daripada Google Maps API dan Anda akan mandiri dari Google. Jika Anda membutuhkan peta latar belakang, Anda mungkin ingin melihat OpenStreetMap sebagai gantinya.

underdark
sumber
8

Jika Anda benar-benar tidak ingin lapisan middleware besar, Anda dapat menggunakan TinyOWS ( http://tinyows.org/trac ) - Saya belum pernah mencobanya tetapi diklaim kecil dan cepat. Plus itu menggunakan standar OGC jadi jika Anda memutuskan untuk menerbitkan ke khalayak yang lebih luas dan tidak dapat terus beralih ke GeoServer atau MapServer akan memungkinkan Anda untuk tetap menggunakan kode klien yang sama tanpa perubahan.

Ian Turton
sumber
ah ya, lupa tentang tinyOWS, sepertinya agak sulit untuk dikonfigurasikan, dan ini hanya untuk PostGIS
dodobas
pertanyaan hanya ditanyakan tentang postgis
Ian Turton
6

Anda dapat menggunakan aplikasi apa pun yang dapat menjalankan protokol WFS. Dengan Openlayers Anda dapat dengan mudah menggunakan data PostGIS melalui protokol WFS. Ada beberapa aplikasi FLOSS yang dapat melakukan ini. Misalnya, FeatureServer , Geoserver , MapServer ... Jika Anda baru dalam pemetaan web, saya akan merekomendasikan Geoserver karena sangat mudah untuk memulainya.

Lihat contoh Openlayers ini dengan WFS .

Mario Miler
sumber
Tautan terakhir rusak.
Adam Matan
1
Saya mencoba semuanya dan mereka bekerja. Mungkin yang terakhir hanya sementara.
Mario Miler
4

Openlayers mendukung sejumlah besar format data vektor (GeoJSON, GML, KML ..), yang dapat ditampilkan dan ditata menggunakan lapisan OpenLayers Vector.

Mungkin middleware paling sederhana adalah FeatureServer yang dapat menyajikan data PostGIS ke sebagian besar format yang didukung OL. Pengaturannya mudah, dan memiliki dukungan untuk permintaan spasial / atribut yang sederhana.

Tapi, jika Anda membutuhkan sesuatu yang lebih kuat, Geoserver bisa menjadi solusi yang layak.

dodobas
sumber
Tidak ada cinta untuk mapserver :(
dassouki
1
sebenarnya mapserver adalah cinta pertamaku, berkencan di suatu tempat sekitar tahun 2001, tapi ... kami baru saja mulai banyak bertengkar, jadi kami harus mengerem :)
dodobas
Jadi, jika saya memberikan url openlayers ke geojson / gml / kml, apakah itu hanya dapat merendernya?
fmark
1
ya, tetapi jika Anda membutuhkan pemfilteran, bahkan dengan kotak pembatas sederhana, daripada Anda harus menggunakan WFS
dodobas
4

Anda dapat memberi makan json, kml amd wkt dari postgis seperti st_asgeojson (), st_asKML () untuk skrip server PHP atau JSP dan kemudian menggunakan kelas ajax openlayers untuk menghubungkan sumber data dari server Anda


sumber
Saya pikir paling sesuai dengan kasus penggunaan saya saat ini. Jika terlalu lambat, saya akan mencoba TinyOWS dan server peta tugas berat lainnya. Bisakah Anda memberikan contoh kode untuk sisi openlayers, dengan asumsi saya punya skrip PHP di suatu tempat mengembalikan geojson / kml / wkt?
fmark
@chaipat: Apakah Anda memiliki contoh (skrip php dan cuplikan pembuka yang sesuai)?
underdark
2

Anda dapat dengan mudah melakukan ini menggunakan Geomajas yang akan membaca data Anda dari database menggunakan Hibernate atau Geotools. Ini semua Java, yang mungkin menjadi masalah adalah Anda lebih suka bahasa lain.


sumber
1

Yang bisa Anda lakukan adalah menggunakan pustaka OpenLayers dan bahasa server untuk mendorong semua tipe geometri postgis ke dalam Openlayers. Anda akan membutuhkan:

  • Openlayers.Layer.Vector untuk membuat Layer ke data vektor
  • Openlayers OpenLayers.Protocol.HTTP untuk membaca data dari server Postgis
  • OpenLayers.Strategy.Fixed opsional
  • OpenLayers.Feature.Vector semua vektor untuk kelas ini dari klien
  • OpenLayers.Format.GeoJSON atau OpenLayers.Format.JSON
  • Bahasa sisi server untuk membuat permintaan ke Postgis dan memompa geometri ke klien
  • Pengurai JSON pada server dan klien untuk mengangkut data ke dalam format ini

Dengan ini, Anda dapat dengan mudah menampilkannya tanpa middleware lagi.

cavila
sumber