Qual é a melhor maneira de exibir milhares de polígonos em Openlayers?


10

Estou tentando criar um mapa de Openlayers que exibirá milhares de polígonos. E quando o usuário clica em cada um, quero que alguns dos metadados sejam exibidos. Trabalhar com esse grande conjunto de dados parece desafiador. Mas estou tentando descobrir se existe uma maneira padrão de fazer isso. Neste ponto, acho que devo

  1. exibir meus polígonos com WMS e usar getfeatureinfo
  2. Exiba com WFS, Carregue com Strategy.BBOX e use GetFeature para obter dados de carne.

Existe uma maneira lógica que me falta para carregar todos esses dados em um mapa e ter uma boa velocidade. Eu estava olhando esta página e tentando descobrir o que eles fizeram: http://protectedplanet.net/

Respostas:


5

Não gosto da estratégia BBOX, pois acho que pode ser lenta devido à quantidade de solicitações que podem ser geradas.

Eu usaria uma combinação das duas coisas que você mencionou.

exiba polígonos com o WMS e use getfeatureinfo ... depois use o WFS para carregar o esboço do recurso quando clicado e / ou obter mais informações do banco de dados.

protectedplanet.net não usa openlayers apenas no Google Maps. Eles provavelmente estão armazenando todas as informações em um KML / KMZ.


Great Thanks! Acho que estou no caminho certo então. Mas eu estou querendo saber se protectedplanted está usando KML, devo fazer isso por sua velocidade? E esses dados KML estão sendo servidos pelo WFS?
KyleK

Não sei ao certo se é KML, apenas um palpite. Mas, se for, não está sendo atendido pelo WFS porque o WFS usa GML. A questão sobre o uso de APIs e KML do Google é que você precisa desse KML em um URL público onde TODOS possam vê-lo. Se isso não for um problema, talvez você possa tentar. Isso ocorre porque o Google absorve esse KML em seus servidores e o retorna de volta à API. Por esses dois motivos, não posso usar a API do google maps devido à sensibilidade de alguns projetos.
CaptDragon

Você pode limitar o acesso ao seu URL KML público para permitir apenas um agente de usuário que apresente a sequência do analisador do Google KML.
Sarge

3

A principal abordagem aqui é separar a rasterização com a interação. Uma abordagem (pela qual sou parcialmente responsável) é o UTFGrid , que foi usado pela NPR, etc. e é integrado ao TileMill e ao Mapnik . Também é usado pelo CartoDB e o Google Maps usa uma abordagem semelhante para o Fusion Tables.

O planeta protegido também usa blocos de varredura (por exemplo, este:) http://184.73.201.235/blue/8/78/93e possui um servidor ativo para consultas baseadas em pontos (por exemplo, este ).

Re: CaptDragon: não há WFS ou KML envolvidos.

O WMS e o WFS não oferecem um desempenho suficientemente bom para um site público. A estratégia BBOX não funcionará se você permitir que os usuários aumentem o zoom.


FYI: você pode armazenar em cache um serviço raster WMS que fornecerá blocos.
CaptDragon

1
Sim, mas esse não é o principal problema aqui, é a interatividade. Você não pode armazenar em cache da maneira que o WFS / WMS GetFeature funciona, porque eles não foram projetados para serem armazenados em cache da mesma forma.
tmcw

Eu cache meus resultados CSW, WFS e WMS GetFeature, GetRecord, etc o tempo todo. Esses são apenas padrões de formato para interoperabilidade e não determinam onde a fonte, em cache ou não, é armazenada.
CaptDragon

Uma solicitação típica GetFeature do WFS é uma solicitação para uma única coordenada; um cache para essa solicitação é bom apenas para correspondências exatas - que são raras em termos de interação do usuário. Alternativas como UTFGrid armazenam em cache blocos de dados e podem preenchê-lo de maneira otimista, diferentemente de um cache para milhões de coordenadas únicas. Dessa maneira, o padrão determina sua compatibilidade com o cache.
tmcw

Uau- Obrigado por toda a ajuda. Sendo que estou usando o OpenLayers e meu mapa está em 4326 (que não é suportado pelo TileMill), você recomendaria o CartoDB como um meio de armazenar e acessar meus dados?
KyleK
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.