Quais são minhas opções para clustering no servidor usando ferramentas GIS de código aberto?

8

Preciso fazer um webapp que mostre mais de 40 mil pontos em um mapa. Esses pontos estão em todo o mundo. Usando o Serviço WFS e o OpenLayers, é possível fazer cluster em pequenos conjuntos de pontos, mas não é realmente útil fazer esse cluster no lado do cliente para o meu caso.

Como faço para agrupar no servidor, em um serviço WMS ou WMS lado a lado? Existem várias opções para o Google Maps. Quais são as ferramentas correspondentes no campo OSGeo?

Devdatta Tengshe
fonte

Respostas:

3

As versões mais recentes do MapServer (6.0+) suportam clustering no servidor - http://mapserver.org/mapfile/cluster.html

Desde a versão 6.0, o MapServer tem a capacidade de combinar vários recursos de uma camada de pontos em recursos únicos (agregados) com base em suas posições relativas. Somente camadas POINT são suportadas. Esse recurso foi adicionado através do MS RFC 69: Suporte para agrupamento de recursos em camadas de pontos.

A proposta para essa funcionalidade é detalhada em: http://mapserver.org/development/rfc/ms-rfc-69.html

Uma configuração de exemplo abaixo:

LAYER
  NAME "my-cluster"
  TYPE POINT
  ...
  CLUSTER
     MAXDISTANCE 20  # in pixels
     REGION "ellipse"  # can be rectangle or ellipse
     GROUP (expression)  # an expression to create separate groups for each value
     FILTER (expression) # a logical expression to specify the grouping condition
  END

Essa camada pode ser servida como qualquer outra como WMS (o MapServer também suporta ladrilhos).

Eu não tentei isso e os documentos não são claros, mas também podem oferecer suporte a um serviço WFS em cluster.

Uma alternativa é fazer cluster no nível do banco de dados, e não no servidor da Web, e você pode usar qualquer cluster WMS Server see - Spatial com PostGIS .

geographika
fonte
0

Há um par de opções. Você pode implementar uma camada WMS. Isso basicamente transformará seus recursos individuais em arquivos de imagem. Isso melhora o desempenho de grandes conjuntos de dados, mas às custas da funcionalidade do lado do cliente (por exemplo, não é possível selecionar recursos individuais no mapa).

Uma alternativa melhor (dependente do desempenho) é provavelmente implementar clustering no lado do servidor para sua camada WFS no OpenLayers .

pecoanddeco
fonte
Você poderia esclarecer o que você quer dizer com a implementação de uma camada WMS? Você está falando sobre o uso de serviços WMS?
Devdatta Tengshe