Menciptakan layanan pemetaan web / ubin kecil

26

Saya mencari cara skala kecil dan mudah untuk menyajikan satu atau lebih poligon shapefile online (di situs web kota tanpa infrastruktur server peta yang ada, tepatnya). Saat ini, saya sedang melakukan semua pekerjaan dengan QGIS, dan saya lebih suka tetap open-source (tidak ada anggaran yang tersisa untuk investasi perangkat lunak besar).

Meneliti topik ini menghasilkan sejumlah besar kemungkinan pendekatan, dan membuat saya cukup bingung. Apa yang saya cari adalah

  • bisa memperlihatkan poligon yang dikategorikan dalam peta tematik (- jika memungkinkan, akan lebih baik untuk mendapatkan sembulan atau untuk dapat mengambil informasi atribut - tapi itu sangat opsional)
  • Saya lebih suka melakukan sebagian besar pekerjaan (styling, dll) di QGIS
  • OSM sebagai peta dasar akan baik-baik saja

Sejauh ini, petak peta khusus pada peta dasar OSM terlihat seperti hal yang saya cari (atau apakah ada solusi yang lebih baik)? Apa cara terbaik untuk membuat ubin ini?

Sanderka
sumber
2
Apakah itu harus menjadi solusi (Web ubin) berbasis Raster? Apakah solusi vektor oke?
Mapperz
Tidak, tidak sama sekali. Saya hanya berpikir itu akan menjadi cara termudah (membuat ubin, membuat index.htm atau blok kode untuk menempel ke halaman web yang ada, salin ke direktori server, selesai). Saya pernah bekerja dengan GMapCreator pada proyek pribadi, dan itu adalah cara yang sangat cepat untuk menyelesaikan sesuatu.
SAnderka
Berapa banyak poligon di shapefile yang Anda miliki? Jika di bawah 1000, mungkin komentar @ Mapperz pada solusi vektor adalah cara untuk pergi. Solusi paling sederhana adalah dengan menggunakan Google Maps API untuk menggambar poligon dan membuat jendela pop-up informasi - tidak perlu membuat dan menyimpan gambar ubin non-interaktif. Gambar ubin dari peta adalah yang terbaik untuk informasi yang sangat padat seperti menunjukkan citra satelit, jalan, atau batas-batas saluran sensus.
b_dev

Jawaban:

13

Untuk cara sederhana untuk melakukan ini dimulai dengan QGIS Anda bisa menggunakan QGIS Mapserver yang dapat melayani peta yang Anda desain menggunakan antarmuka QGIS normal. Atau Anda mungkin ingin pergi dengan GeoServer yang berbasis Java dan mungkin lebih mudah untuk menginstal. Karena kedua program melayani peta menggunakan standar terbuka jika Anda mulai dengan satu dan perlu beralih nanti tidak perlu mengubah klien.

Setelah Anda memiliki sistem yang diatur untuk melayani peta WMS Anda akan menginginkan ujung depan klien. Saya akan merekomendasikan OpenLayers karena cukup mudah untuk memulai dan mudah dikembangkan. Ini menangani ubin WMS, WMST dan OSM tanpa masalah.

Pada akhirnya Anda mungkin perlu pindah ke petak untuk lapisan WMS Anda (katakanlah Anda mulai mendapatkan lebih dari 50-100 permintaan per menit pada perangkat keras yang masuk akal) maka Anda akan ingin melihat menempatkan cache petak di depan server peta. Jika Anda menggunakan GeoServer maka Anda dapat menggunakan GeoWebCache yang sudah ada di dalamnya atau Anda bisa menggunakan TileCache .

Ian Turton
sumber
Masalah saya adalah saya bekerja sebagai penasihat lepas dalam administrasi kota saat ini. Staf TI lokal cukup tebal dan mencoba untuk menjaga segala macam hal-hal opensource "mencurigakan" dari mesin mereka (saya berperang untuk QGIS). Oleh karena itu saya benar-benar ingin menghindari solusi apa pun yang perlu diinstal sebagai "perangkat lunak" di ruang web kotamadya.
SAnderka
Solusi impian saya adalah sesuatu yang dapat saya siapkan sendiri dan cukup salin ke ruang web mereka, masukkan html / kode JS dan selesai. Entah itu data raster atau vektor tidak benar-benar diperhitungkan pada akhirnya. Saya satu-satunya yang memahami perbedaan teknis ... Dan semua orang peduli adalah presentasi data kami yang bagus dan mudah bagi warga negara kami.
SAnderka
1
Anda hanya perlu menjelaskan kepada mereka bahwa pemetaan web bukanlah sesuatu yang dapat Anda lakukan dengan mudah tanpa perangkat lunak. Tentu Anda bisa melempar beberapa ubin sederhana di server web tetapi itu tidak akan terlihat bagus di semua skala, sulit untuk mempertahankan dan sulit untuk menambahkan fitur ketika walikota menginginkan lebih.
Ian Turton
Jadi, saya melihat Geoserver (sebagai bagian dari paket Open Geo Suite), dan tampilannya cukup bagus. Saya mengimpor shapefile saya, menatanya, bahkan menjalankan pratinjau di localhost. Tetapi bagaimana cara mendapatkan peta ini secara online di ruang web saya? Apakah saya melewatkan sesuatu? Bookmark, dll. Jelas tidak akan berfungsi karena merujuk ke harddisk lokal saya. Saya bekerja dengan cara saya melalui semua tutorial yang mungkin dan bagaimana cara melakukannya, tetapi topik itu sepertinya tidak pernah dibahas? Bisakah seseorang mengarahkan saya ke arah yang benar?
SAnderka
Anda meletakkan GeoServer di server web Anda dan menyalin direktori data dari mesin lokal Anda ke mesin jarak jauh.
Ian Turton
8

bisa memperlihatkan poligon yang dikategorikan dalam peta tematik (- jika memungkinkan, akan lebih baik untuk mendapatkan sembulan atau untuk dapat mengambil informasi atribut - tapi itu sangat opsional)

Saya lebih suka melakukan sebagian besar pekerjaan (styling, dll) di QGIS

OSM sebagai peta dasar akan baik-baik saja

Semua ini dapat dilakukan dalam QGIS dan ogr2layersplugin. Alur kerjanya sederhana:

  1. Gaya data Anda di QGIS. Gunakan simbologi lama karena saya memiliki masalah dengan New Symbologysaat menggunakan ogr2layersplugin.

  2. Luncurkan ogr2layersplugin dan tentukan pengaturan openlayers (seperti ukuran peta, kontrol peta, basemap, dll). Ini akan membuat direktori yang berisi index.htmldan lapisan data Anda dikonversi sebagai geojsonfile.

  3. Unggah direktori ke server web.

Perhatikan bahwa ini hanya untuk webmap sederhana. Untuk membuat peta dasar khusus dan fitur pemetaan web lainnya, lihat jawaban iant dan Peter.

Maning
sumber
1
Webmap sederhana berarti masih dapat diperbesar dan digulir, ya? Kedengarannya seperti sesuatu yang harus saya perhatikan ketika saya kembali ke kantor saya.
SAnderka
6

Opsi lain adalah TileMill - mendukung ubin, interaksi, dan kartografi dalam antarmuka berbasis web yang mudah digunakan, termasuk definisi gaya dalam bahasa proto-CSS yang disebut cascadenik . Dengan menggunakan TileMill, Anda dapat memutar file mbtiles yang dapat dikonsumsi dengan sesuatu seperti TileStream . Yang mengatakan, masih ada beberapa trik dengan penyebaran output yang dipetakan, tetapi ini akan memberi Anda platform yang bagus untuk menghasilkan ubin berkualitas tinggi.

scw
sumber
Tonton video demo mereka di halaman depan, ini sangat mengesankan!
joshdoe
6

Saya memutuskan untuk memberikan informasi ke mana saya akhirnya pergi untuk layanan peta ubin saya. JavaScript murni dan GeoJSONs bukan solusi, karena saya harus menangani sekitar 40k poligon dan 33k poin. Jadi saya memilih ubin. Oh, dan saya masih belum memiliki akses ke root server, jadi saya tidak dapat mengatur GeoServer atau yang serupa (tidak akan layak secara finansial untuk satu klien saat ini)

Setelah meneliti dan membaca, akhirnya saya puas dengan OpenLayers (setelah beberapa kali tampil dengan GMaps). Buku hebat Eric Hazzard "OpenLayers 2.10" (Packt Publishing, 2011) benar-benar banyak membantu saya karena juga mencakup beberapa dasar-dasar JavaScript dan tips debugging.

Saya melakukan semua pekerjaan data vektor saya di QGIS, tentu saja, itu pasti cara untuk mencari freelancer kecil seperti saya (saya juga tahu cukup banyak hal ArcGIS dari universitas, tetapi QGIS telah menawarkan semua yang saya butuhkan sejauh ini).

Mendesain peta dan membuat ubin adalah tantangan yang lebih besar. Pertama, saya mengikuti " GMapCreator " oleh CASA, tetapi melapis beberapa shapefile terbukti membosankan (saya harus memberikan data titik di atas poligon, dan kemudian garis batas kota yang melampirkan semuanya). Sangat mungkin untuk melakukan ini di GMapsCreator (dan saya melakukannya untuk tahap showcase), tetapi dibutuhkan 3 siklus rendering penuh (pertama Anda membuat ubin, kemudian ubin yang ada mendapatkan "overdrawn" dengan fitur-fitur kemudian - rendering dalam urutan yang tepat itu penting!), dan menu penataannya agak tebal dan membingungkan. Menyimpan peta Anda dan mengeditnya nanti juga merupakan masalah yang rumit.

TileMill tampak sangat menjanjikan, terutama gaya mirip CSS mereka, jadi saya melihatnya. Sayangnya, itu hanya Mac atau Linux, sehingga mungkin membuat takut beberapa orang. Saya benar-benar menyukai apa yang saya lihat, jadi saya mengatur partisi Ubuntu di hard-drive saya, mengunduhnya dan menata peta saya. Dokumentasi pada sintaks styling kadang-kadang sedikit langka, tetapi menonton video demo mereka (tertaut di situs utama) menjawab hampir semuanya. Dimungkinkan untuk melakukan beberapa hal menarik dengan gaya bersarang dan / atau bersyarat, dan beberapa pemahaman dasar CSS harus benar-benar membawa Anda ke tempat yang Anda tuju.

Pada akhirnya, TileMill membuat file tunggal, bagus * .mbtiles. Saya tidak berpikir ada cara untuk langsung menampilkan ini di OpenLayers (setidaknya saya tidak bisa menemukannya?), Jadi sudah waktunya untuk menggunakan alat lain: mbutil . Alat ini "membuka ritsleting" file-file mbtiles ke struktur folder biasa yang berisi pngs ubin data saya pada tingkat zoom yang dipilih.

Akhirnya, saya mengunggah semua file-file ini ke FTP-Server saya, melakukan beberapa pembacaan yang berat pada OL untuk meningkatkan dan memetakan webmap saya (Anda menambahkan ubin yang dibuat sebagai layer TMS, tetapi menebak url sumber yang tepat dan nama layer memerlukan waktu dan googling) dan kemudian membakar beberapa jam mengotak-atik masalah html / CSS dasar. Saya menginginkan peta lebar / tinggi 100% dengan legenda mengambang mengikuti pedoman identitas "korporat" klien saya (ini adalah kotamadya, sebagaimana disebutkan).

Oh, dan sejauh ini saya menggunakan Google Maps sebagai lapisan dasar, tetapi itu mungkin akan segera diganti oleh beberapa foto udara khusus yang disajikan melalui WMS (tidak disediakan oleh saya, tetapi survei negara bagian dan administrasi geodata).

Saya harap saya tidak melupakan sesuatu yang penting, tetapi jika saya lakukan, jangan ragu untuk bertanya! Saya akan memeriksa utas ini sesekali.

Sanderka
sumber
Tilemill sekarang tersedia untuk Windows juga. Ada juga utas yang relatif baru di milis Pengguna Openlayers tentang penggunaan mbtiles sebagai sumber data (belum mencobanya).
matt wilkie
Ah, terima kasih, senang tahu. Pasti harus mencobanya, sudah agak menjengkelkan untuk beralih antara win7 dan ubuntu sepanjang waktu.
SAnderka
3

Jika Anda memiliki di bawah 1000 poligon, pertimbangkan komentar @ Mapperz tentang solusi vektor - tidak perlu membuat dan menyimpan gambar ubin non-interaktif jika Anda hanya memiliki beberapa poligon.

Gambar ubin optimal untuk informasi yang sangat padat seperti menunjukkan citra satelit, jalan, atau 50.000 poligon saluran sensus.

Solusi paling sederhana untuk sejumlah kecil poligon adalah mengonversi shapefile ke KML dan mengunggahnya ke Google Petaku.

Jika Anda kode dalam Javascript, solusi paling interaktif adalah Google Maps API (atau OpenLayers) untuk menggambar poligon dan membuat jendela sembulan informasi. Anda bisa mulai dengan mengonversi poligon shapefile, menggunakan perpustakaan GDAL, menjadi file geoJSON (cara Javascript menyimpan informasi geografis).

Atau jika Anda pergi rute ubin Anda bisa menyimpan ubin di Amazon atau cloud Google tanpa gangguan di rumah.

Entri blog Pemetaan Tematik ini memiliki ringkasan bagus tentang keuntungan pendekatan vektor dibandingkan pendekatan ubin yang sedang Anda pertimbangkan.

Semoga berhasil!

b_dev
sumber
Saya menemukan bahwa sekitar 500 titik yang diperlakukan sebagai vektor pada tampilan tunggal cenderung memperlambat semuanya menjadi merangkak. Kami mengumpulkan semuanya lebih dari 500 poin.
Michalis Avraam
1

Saya merasa untuk Anda sobat, karena saya perlahan-lahan bekerja untuk kesimpulan yang sama. Setelah mempelajari QGIS, saya mencoba quantamnik dan mapnik. Tapi sementara itu akan port qgis styling itu perjalanan satu arah dan sistem styling arent 1 untuk 1 maka Anda harus mempelajari styling mapnik pula. Saya menduga bahwa hal yang sama berlaku untuk fungsi ekspor mapserver qgis. Tampaknya tidak ada "cara mudah" untuk meningkatkan kemampuan pada mapserver, cukup cangkul dan sediakan banyak waktu.

Mapnik, geoserver, mapserver, tampaknya ada penyembah masing-masing tetapi mapserver tampaknya menjadi jalan tengah.

Setelah mengatakan bahwa ada satu jalan pintas yang saya temukan dan itu adalah qgis memiliki opsi baris perintah untuk merasterisasi peta qgis ke resolusi dan batasan yang Anda pilih, dan membuat file worldfile. Dengan ini, Anda dapat menggunakan maptiler atau gdal2tiles untuk memasang satu layer pada satu waktu. Tidak ada gunanya untuk 20 tingkat zoom jelas, juga saya tidak tahu apa batas ukuran maksimal png.

Peter
sumber
2
QGIS MapServer berbeda dari MapServer.
Ian Turton
2
Karena potensi kebingungan ini, itu harus disebut QGIS Server.
underdark