Apa cara terbaik untuk menampilkan ribuan poligon di Openlayers?

10

Saya mencoba membuat peta Openlayers yang akan menampilkan ribuan poligon. Dan ketika pengguna mengklik masing-masing, saya ingin beberapa metadata ditampilkan. Bekerja dengan set data yang besar ini sepertinya akan sangat menantang. Tapi saya mencoba mencari tahu apakah ada cara standar untuk melakukan ini. Pada titik ini, saya pikir saya juga harus

  1. tampilkan poligon saya dengan WMS dan gunakan getfeatureinfo
  2. Tampilkan dengan WFS, Muat dengan Strategy.BBOX, dan gunakan GetFeature untuk mendapatkan meatadata.

Apakah ada cara logis saya melewatkan memuat semua data ini ke dalam peta dan memiliki kecepatan yang baik. Saya melihat halaman ini dan mencoba mencari tahu apa yang mereka lakukan: http://protectedplanet.net/

KyleK
sumber

Jawaban:

5

Saya tidak suka strategi BBOX karena saya pikir mungkin lambat karena jumlah permintaan yang mungkin dihasilkan.

Saya akan menggunakan kombinasi dari kedua hal yang Anda sebutkan.

tampilkan poligon dengan WMS dan gunakan getfeatureinfo ... kemudian gunakan WFS, untuk memuat garis besar fitur ketika diklik dan / atau mendapatkan informasi lebih lanjut dari database.

protectedplanet.net tidak menggunakan openlayers hanya google maps. Mereka mungkin menyimpan semua informasi dalam KML / KMZ.

CaptDragon
sumber
Terima kasih banyak! Saya kira saya berada di jalur yang benar. Tetapi saya bertanya-tanya apakah protectedplanted menggunakan KML, haruskah saya melakukan itu karena kecepatannya? Dan apakah data KML dilayani oleh WFS?
KyleK
Saya tidak tahu pasti apakah itu KML, hanya tebakan saja. Tetapi jika itu tidak dilayani oleh WFS karena WFS menggunakan GML. Hal tentang menggunakan google apis dan KML adalah Anda harus memiliki KML itu di URL publik tempat SEMUA ORANG dapat melihatnya. Jika itu bukan masalah, maka mungkin Anda bisa mencobanya. Ini karena Google menyerap KML ini ke server mereka dan mengembalikannya ke API. Karena dua alasan ini, saya tidak dapat menggunakan google maps API karena sensitivitas beberapa proyek.
CaptDragon
Anda dapat membatasi akses ke URL KML publik Anda untuk hanya mengizinkan agen pengguna yang menyajikan string parser Google KML.
Sarge
3

Pendekatan utama di sini adalah memisahkan rasterisasi dengan interaksi. Salah satu pendekatan (yang saya bertanggung jawab sebagian) adalah UTFGrid , yang telah digunakan oleh NPR, dll dan diintegrasikan ke dalam TileMill dan Mapnik . Ini juga digunakan oleh CartoDB dan Google Maps menggunakan pendekatan serupa untuk Fusion Tables.

Planet yang dilindungi juga menggunakan ubin raster (misalnya, ini:) http://184.73.201.235/blue/8/78/93dan memiliki server langsung di belakangnya untuk kueri berbasis poin (misalnya, yang ini ).

Re: CaptDragon: tidak ada WFS atau KML yang terlibat.

WMS dan WFS tidak akan memberi Anda kinerja yang cukup baik untuk situs publik. Strategi BBOX tidak akan berfungsi jika Anda membiarkan pengguna memperbesar.

tmcw
sumber
FYI: Anda bisa men-cache layanan raster WMS yang akan memberi Anda ubin.
CaptDragon
1
Ya, tapi itu bukan masalah utama di sini, ini interaktivitas. Anda tidak dapat melakukan cache cara WFS / WMS GetFeature bekerja karena mereka tidak dirancang untuk di-cache secara bersamaan.
tmcw
Saya menyimpan hasil CSW, WFS, dan WMS GetFeature, GetRecord, dll setiap saat. Ini hanya standar format untuk interoperabilitas dan tidak menentukan di mana sumber, apakah di-cache atau tidak, disimpan.
CaptDragon
Permintaan GetFeature WFS yang khas adalah permintaan untuk satu koordinat; cache untuk permintaan itu hanya baik untuk kecocokan persis - yang jarang terjadi dalam hal interaksi pengguna. Alternatif seperti ubin cache UTFGrid data dan secara optimis dapat mengisi cache, tidak seperti cache untuk jutaan potensi koordinat tunggal. Dengan cara ini standar tidak menentukan cache-keramahannya.
tmcw
Wow- Terima kasih atas semua bantuannya. Karena saya menggunakan OpenLayers dan peta saya ada di 4326 (yang tidak didukung oleh TileMill), apakah Anda akan merekomendasikan CartoDB sebagai sarana untuk menyimpan dan mengakses data saya melalui ini?
KyleK