Opções para exibir vetores PostGIS no OpenLayers


22

Eu sou muito novo no mapeamento da web, então essa pergunta pode ser um pouco equivocada.

Quero ter uma interface da web muito simples usando o OpenLayers (ou mesmo o Google Maps, se isso for mais fácil), que pode exibir várias tabelas de pontos e polígonos atualmente no PostGIS.

Eu quero que isso seja o mais simples (e o mais baixo possível de manutenção) possível:

  • Não quero ter que criar blocos (a menos que haja uma boa razão) ou ter uma camada massiva e complexa de middleware.
  • O desempenho não precisa ser fenomenal, pois é para uso interno e, portanto, não precisa ser escalado para além de alguns usuários simultâneos.
  • O estilo das camadas vetoriais é de importância mínima.
  • As ferramentas de código aberto são muito preferidas, pois quase não tenho orçamento para isso.

Qual é a abordagem recomendada para isso?

Respostas:


14

A maneira mais fácil de configurar um mapa on-line a partir de fontes PostGIS é usando o Geoserver. O Manual do Usuário do Geoserver contém uma boa introdução ao uso do PostGIS como fonte de dados . Você basicamente adiciona um repositório de dados contendo as informações de conexão e, depois disso, pode publicar qualquer tabela que contenha geometrias. Além do PostGIS, você também pode usar muitas outras fontes de dados:

texto alternativo

Na interface da web do Geoserver, você também pode visualizar as camadas em uma página da Web OpenLayers. Você pode usar a fonte desta página de visualização para criar seu próprio aplicativo OpenLayers.

O Geoserver oferece muitas opções de estilo para dados vetoriais e rasterizados. Para começar, você pode estar feliz o suficiente apenas personalizando alguns dos estilos pré-criados que acompanham a instalação.

Por padrão, o Geoserver não coloca lado a lado e o OpenLayers não solicita lado a lado. Se você não precisa de alto desempenho, não precisa se preocupar com peças de qualquer maneira.

Pessoalmente, acho que o OpenLayers é mais fácil de usar do que a API do Google Maps e você será independente do Google. Se você precisar de um mapa em segundo plano, poderá procurar no OpenStreetMap.


8

Se você realmente não quiser uma grande camada de middleware, poderá usar o TinyOWS ( http://tinyows.org/trac ) - nunca tentei, mas ele afirma ser pequeno e rápido. Além disso, ele usa os padrões OGC; portanto, se você decidir publicar para um público mais amplo e não puder continuar mudando para o GeoServer, o MapServer permitirá que você continue usando o mesmo código de cliente sem alterações.


ah sim, esqueci tinyOWS, parecia um pouco difícil de configurar, e sua somente para PostGIS
dodobas

a pergunta feita apenas sobre os postgis #
Ian Turton

6

Você pode usar qualquer aplicativo que possa suportar o protocolo WFS. Com os Openlayers, você pode facilmente usar os dados PostGIS via protocolo WFS. Existem poucas aplicações FLOSS que podem fazer isso. Por exemplo, FeatureServer , Geoserver , MapServer ... Se você é novo para web-mapping eu recomendaria Geoserver porque é muito fácil obtê-lo começou.

Veja este exemplo de Openlayers com o WFS .


O último link está quebrado.
Adam Matan

1
Eu tentei todos eles e eles funcionam. Talvez o último tenha sido temporariamente fora do ar.
Mario Miler

4

O Openlayers suporta um grande número de formatos de dados vetoriais (GeoJSON, GML, KML ..), que podem ser exibidos e estilizados usando a camada Vector OpenLayers.

Talvez o middleware mais simples possa ser o FeatureServer, que pode servir dados PostGIS para a maioria dos formatos suportados por OL. É fácil de configurar e tem suporte para consultas espaciais / de atributos simples.

Mas, se você precisar de algo mais poderoso, o Geoserver pode ser uma solução viável.


No love for mapserver :(
dassouki

1
realmente mapserver foi meu primeiro amor, em algum lugar datado por volta de 2001, mas ... nós apenas começamos a lutar muito, por isso tivemos de freio up :)
dodobas

Então, se eu der aos openlayers um URL para um geojson / gml / kml, ele poderá renderizá-los?
fmark 16/08/10

1
sim, mas se você precisar de filtragem, mesmo por caixa delimitadora simples, do que você precisa usar WFS
dodobas

4

Você pode alimentar json, kml amd wkt a partir de postgis como st_asgeojson (), st_asKML () para scripts do servidor PHP ou JSP e, em seguida, usar a classe openlayers ajax para conectar a fonte de dados do seu servidor


Acho que melhor se adapta ao meu caso de uso atual. Se estiver muito lento, tentarei o TinyOWS e os outros servidores de mapas mais pesados. Você pode fornecer um exemplo de código para o lado dos openlayers, supondo que eu tenha um script PHP em algum lugar retornando o geojson / kml / wkt?
fmark 23/08/10

@chaipat: Você tem um exemplo em mãos (script php e snippet de openlayers correspondentes)?
Subterrâneo

2

Você poderia fazer isso facilmente usando Geomajas, que leria seus dados do banco de dados usando o Hibernate ou Geotools. Isso é tudo Java, o que pode ser um problema, se você preferir outras linguagens.


1

Bem, o que você pode fazer é usar a biblioteca OpenLayers e uma linguagem de servidor para enviar todos os tipos de geometria postgis para o Openlayers. Você vai precisar de:

  • Openlayers.Layer.Vector para criar uma camada para dados vetoriais
  • Openlayers OpenLayers.Protocol.HTTP para ler dados do servidor Postgis
  • OpenLayers.Strategy.Fixed opcional
  • OpenLayers.Feature.Vector todos os vetores são desta classe no cliente
  • OpenLayers.Format.GeoJSON ou OpenLayers.Format.JSON
  • Um idioma do servidor para fazer uma solicitação ao Postgis e bombear geometrias para o cliente
  • Um analisador JSON no servidor e cliente para transportar dados para este formato

Com isso, você pode exibi-los facilmente, sem mais nenhum middleware.

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.