Qual é a melhor solução de mapeamento da web de código aberto para lidar com mais de 3000 polígonos [fechado]


12

Eu tenho mais de 3000 polígonos que representam bacias hidrográficas (18 bacias hidrográficas principais). Na primeira etapa, todas as 18 bacias hidrográficas serão exibidas e sua lista será colocada na barra lateral esquerda. Se algum usuário passar o mouse sobre o mapa, apenas o pop-up mostrará o nome do divisor de águas. Se qualquer usuário clicar em qualquer divisor de águas no mapa, ele abrirá a janela pop-up com detalhes. Com um zoom maior, todas as bacias hidrográficas serão exibidas.

Estou pedindo seu conselho sobre qual solução de código aberto é a melhor para lidar com essa grande quantidade de polígonos?

Eu estava pensando em Leaflet ou OpenLayers, mas não sei se eles conseguem lidar com grandes quantidades de polígonos.

Além disso, você sugere armazená-los no mysql ou?


3
Você pode rasterizar esses polígonos? ou talvez use um servidor de recursos como um servidor geográfico ou servidor de recursos?
Dassouki 29/08/2012

Respostas:


12

Eu criaria um serviço de imagem (camada raster) e o serviria com o Web Map Service (WMS) . Dessa forma, você pode usar qualquer estrutura de API com a qual se sinta confortável, desde que ela ofereça suporte ao WMS (o OpenLayers suporta ). Você pode usar o WMS para mostrar uma camada de todos os recursos de polígono e, em seguida, usar o GetFeatureInfo do WMS para clicar nas informações desse polígono.

Se, por algum motivo, você precisar dos dados vetoriais no mapa, poderá criá-los dinamicamente ao clicar com os dados de resposta GetFeatureInfo.


5

Consulte TileMill , que pode rasterizar a interação UTFGrid em um arquivo MBTiles e hospedá-lo no MapBox ou em uma implementação de servidor MBTiles de código aberto, como o TileStache .

Aqui está ele com muitos e muitos polígonos . Essa abordagem exige que você rasterize - também conhecido como assar - blocos, mas é essencialmente a única maneira de fazer o que você deseja, sem ter recursos massivos de servidor, um aplicativo personalizado ou um conjunto muito restrito de navegadores.


Eu gosto deste exemplo. Você pode me dizer como posso rasterizar arquivos de forma? No TileMill? Obrigado.
againstflow

Sim, é a maneira mais comum. Aqui está a documentação sobre como adicionar dicas de ferramentas dessa maneira . Se você é super alérgico a ferramentas GUI e a um profissional Python / Mapnik, há também uma rota cli que evita tudo isso, mas é um pouco enigmática.
tmcw

2

A dependência de escala e um banco de dados indexado espacialmente serão essenciais para esse problema. Você deve poder representar bacias hidrográficas usando pelo menos dois, possivelmente três ou quatro níveis. Por exemplo, você pode dividir os dados em Maior (18), Menor (alguma combinação de todas as bacias hidrográficas de escala média que se enquadram no mesmo Maior) e Terciário (os 3000 polígonos). Isso daria três camadas / serviços vetoriais diferentes.

Use a dependência de escala para desenhar apenas o serviço apropriado, dependendo do nível de zoom do usuário.

Use um banco de dados com indexação espacial para garantir que os serviços sejam desenhados rapidamente e desenhe apenas a parte necessária para preencher a janela de exibição atual.

Como alternativa, você pode considerar a criação de blocos dos mapas da bacia hidrográfica (novamente, criados com base nas escalas apropriadas para cada camada) e servi-los dessa maneira.

Já existem muitas perguntas neste site que recomendam soluções apropriadas de código aberto para empregar essas estratégias.


0

Além do TileMill, você pode conferir o MangoMap , ele não é de código aberto, mas atualmente é gratuito e é capaz de lidar com esse tipo de dados.

[Aviso: trabalho com o MangoMap, mas estou respondendo porque é apropriado neste caso]

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.