Qual è il modo migliore per visualizzare migliaia di poligoni in Openlayer?


10

Sto cercando di creare una mappa di Openlayers che mostrerà migliaia di poligoni. E quando l'utente fa clic su ciascuno, voglio che vengano visualizzati alcuni dei metadati. Lavorare con questo set di dati di grandi dimensioni sembra complicato. Ma sto cercando di capire se esiste un modo standard per farlo. A questo punto, penso che dovrei farlo

  1. mostra i miei poligoni con WMS e usa getfeatureinfo
  2. Visualizza con WFS, carica con Strategy.BBOX e utilizza GetFeature per ottenere meatadata.

C'è un modo logico che mi manca per caricare tutti questi dati in una mappa e avere una buona velocità. Stavo guardando questa pagina e cercavo di capire cosa facessero: http://protectedplanet.net/

Risposte:


5

Non mi piace la strategia BBOX in quanto penso che potrebbe essere lento a causa della quantità di richieste che possono essere generate.

Vorrei usare una combinazione di entrambe le cose che hai menzionato.

visualizza i poligoni con WMS e usa getfeatureinfo ... quindi usa WFS, per caricare la struttura del profilo quando si fa clic e / o ottenere maggiori informazioni dal database.

protectplanet.net non utilizza openlayer solo google maps. Probabilmente stanno memorizzando tutte le informazioni in un KML / KMZ.


Grazie mille! Immagino di essere sulla strada giusta allora. Ma mi chiedo se il metodo di impianto protetto stia usando KML, dovrei farlo per la sua velocità? E i dati KML vengono forniti da WFS?
KyleK,

Non so per certo se si tratta di KML, solo una supposizione. Ma se non è servito da WFS perché WFS usa GML. L'aspetto dell'utilizzo di google apis e KML è che devi avere quel KML su un URL pubblico dove TUTTI possono vederlo. Se questo non è un problema, allora forse puoi provarlo. Questo perché google assorbe questo KML nei loro server e lo restituisce all'API. Per questi due motivi, non posso usare l'API di google maps a causa della sensibilità di alcuni progetti.
CaptDragon,

Puoi limitare l'accesso al tuo URL KML pubblico per consentire solo un agente utente che presenta la stringa del parser KML di Google.
Sarge

3

L'approccio principale qui è quello di separare la rasterizzazione con l'interazione. Un approccio (di cui sono parzialmente responsabile) è UTFGrid , che è stato utilizzato da NPR, ecc. Ed è integrato in TileMill e Mapnik . Viene anche utilizzato da CartoDB e Google Maps utilizza un approccio simile per Fusion Tables.

Il pianeta protetto utilizza anche riquadri raster (ad esempio, questo:) http://184.73.201.235/blue/8/78/93e ha un server attivo dietro di esso per query basate su punti (ad esempio, questo ).

Ri: CaptDragon: non sono coinvolti WFS o KML.

WMS e WFS non offrono prestazioni abbastanza buone per un sito pubblico. La strategia BBOX non funzionerà se si consente agli utenti di eseguire lo zoom.


Cordiali saluti: è possibile memorizzare nella cache un servizio raster WMS che ti darà tessere.
CaptDragon,

1
Sì, ma questo non è il problema principale qui, è l'interattività. Non è possibile memorizzare nella cache il modo in cui funziona GetFeature WFS / WMS perché non sono progettati per essere memorizzati nella cache in modo affiancato.
tmcw,

Cache continuamente i miei risultati CSW, WFS e WMS GetFeature, GetRecord, ecc. Questi sono solo standard di formato per l'interoperabilità e non determinano dove è archiviata la fonte, memorizzata nella cache o meno.
CaptDragon,

Una tipica richiesta GetFeature di WFS è una richiesta per una singola coordinata; una cache per quella richiesta è valida solo per le corrispondenze esatte, che sono rare in termini di interazione dell'utente. Alternative come i riquadri di dati della cache UTFGrid possono riempire in modo ottimale la cache, a differenza di una cache per potenzialmente milioni di singole coordinate. In questo modo lo standard impone la sua compatibilità con la cache.
tmcw,

Wow, grazie per tutto l'aiuto. Dato che sto usando OpenLayers e la mia mappa è in 4326 (che non è supportata da TileMill), consiglieresti CartoDB come mezzo per archiviare e accedere ai miei dati?
KyleK,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.