¿Cuál es la mejor manera de mostrar miles de polígonos en Openlayers?

10

Estoy tratando de crear un mapa Openlayers que muestre miles de polígonos. Y cuando el usuario hace clic en cada uno, quiero que se muestren algunos de los metadatos. Trabajar con este gran conjunto de datos parece un desafío. Pero estoy tratando de averiguar si hay una forma estándar de hacerlo. En este punto, creo que debería

  1. mostrar mis polígonos con WMS y usar getfeatureinfo
  2. Visualice con WFS, cargue con Strategy.BBOX y use GetFeature para obtener metadatos.

¿Hay alguna forma lógica de que me falte cargar todos estos datos en un mapa y tener una buena velocidad? Estaba mirando esta página y tratando de averiguar qué hicieron: http://protectedplanet.net/

KyleK
fuente

Respuestas:

5

No me gusta la estrategia BBOX, ya que creo que podría ser lenta debido a la cantidad de solicitudes que se pueden generar.

Usaría una combinación de ambas cosas que mencionaste.

muestre polígonos con WMS y use getfeatureinfo ... luego use WFS, para cargar el esquema de la característica cuando haga clic en y / u obtenga más información de la base de datos.

protectedplanet.net no utiliza capas abiertas solo mapas de google. Probablemente estén almacenando toda la información en un KML / KMZ.

CaptDragon
fuente
¡Muchas gracias! Supongo que estoy en el camino correcto entonces. Pero me pregunto si protectedplanted está usando KML, ¿debería hacerlo por su velocidad? ¿Y WFS está sirviendo esos datos KML?
KyleK
No estoy seguro si es KML, solo una suposición. Pero si es así, no está siendo atendido por WFS porque WFS usa GML. Lo que pasa con el uso de google apis y KML es que necesita tener ese KML en una URL pública donde TODOS puedan verlo. Si eso no es un problema, entonces tal vez puedas intentarlo. Esto se debe a que Google absorbe este KML en sus servidores y lo devuelve a la API. Por estas dos razones, no puedo usar la API de Google Maps debido a la sensibilidad de algunos proyectos.
CaptDragon
Puede limitar el acceso a su URL KML pública para permitir solo un agente de usuario que presente la cadena del analizador KML de Google.
Sarge
3

El enfoque principal aquí es separar la rasterización con la interacción. Un enfoque (del que soy parcialmente responsable) es UTFGrid , que ha sido utilizado por NPR, etc. y está integrado en TileMill y Mapnik . También es utilizado por CartoDB y Google Maps utiliza un enfoque similar para Fusion Tables.

El planeta protegido también usa mosaicos de trama (por ejemplo, este:) http://184.73.201.235/blue/8/78/93y tiene un servidor en vivo detrás para consultas basadas en puntos (por ejemplo, este ).

Re: CaptDragon: no hay WFS o KML involucrados.

WMS y WFS no le brindarán un rendimiento lo suficientemente bueno para un sitio público. La estrategia BBOX no funcionará si permite que los usuarios hagan zoom.

tmcw
fuente
FYI: puede almacenar en caché un servicio ráster WMS que le dará mosaicos.
CaptDragon
1
Sí, pero ese no es el problema principal aquí, es la interactividad. No puede almacenar en caché la forma en que funciona GetFeature WFS / WMS porque no están diseñados para almacenarse en caché en mosaico.
tmcw
Guardo en caché mis resultados CSW, WFS y WMS GetFeature, GetRecord, etc. todo el tiempo. Estos son solo estándares de formato para la interoperabilidad y no dictan dónde se almacena la fuente, ya sea en caché o no.
CaptDragon
Una solicitud típica de GetFeature de WFS es una solicitud de una sola coordenada; un caché para esa solicitud solo es bueno para coincidencias exactas, lo cual es raro en términos de interacción del usuario. Alternativas como los mosaicos de datos de caché UTFGrid y pueden llenar el caché de manera optimista, a diferencia de un caché para potencialmente millones de coordenadas individuales. De esta manera, el estándar dicta su compatibilidad con el caché.
tmcw
Wow- Gracias por toda la ayuda. Dado que estoy usando OpenLayers y mi mapa está en 4326 (que no es compatible con TileMill), ¿recomendaría CartoDB como un medio para almacenar y acceder a mis datos?
KyleK