Pergunta

Meu objetivo é exibir várias formas (polígonos, pontos, linestring) no Google Maps usando dados inseridos em um banco de dados PostGIS dinamicamente (quero dizer, com isso podemos ver modificações no mapa em tempo real). Eu estava procurando uma maneira de fazer isso que usava a estrutura espacial já fornecida no PostGIS (já designando se a forma é uma linestring ou polígono, etc.) em vez de analisar as coordenadas e depois reentrar a estrutura espacial no Google Maps. Vi que a API do Google Maps agora é compatível com os formatos de dados KML. E então eu li que tenho que converter dados do PostGIS em formato KML. Fiz algumas leituras nos fóruns sobre o processo real de converter dados do PostGIS em KML via FWTools, mas não vi nada que me ajudasse. Sou novo no KML, mas estou familiarizado com o PostGIS e o Perl e o PHP. Existe um tutorial para o processo de conversão de dados do PostGIS em KML? Onde posso começar? Obrigado por qualquer ajuda

Foi útil?

Solução

Você pode obter uma representação textual dos dados espaciais de um banco de dados pós -Gres usando uma função de conversão de texto, como

SELECT AsText(MyGemoetry) from MyTable

Em seguida, você analisa a string, cria seus objetos usando várias funções da API - dependendo do tipo de geometria PostGIS - e anexa esses objetos ao objeto principal do plug -in GE principal de uma maneira como.

Se você está familiarizado com o JavaScript e tem um conhecimento fundamental do XML, um bom começo é http://code.google.com/apis/earth/documentation/reference/

Não se esqueça de especificar IDs exclusivos para seus objetos para que você possa encontrá -los posteriormente para soltar/modificar.

Talvez você possa obter algumas inspirações aqui, exiba o arquivo "locator.js" vinculado e veja a função Paintsubfield (coord) ... essa é outra maneira, um pouco grosseira, mas eficaz, evitando mexer com muitos objetos e estruturas de pais/filhos individuais

Você também pode querer consultar Aplicações de amostra e use o Código Playground Para "prototipagem rápida"

Re "em tempo real", você precisa de pelo menos um evento para o qual possa vincular suas rotinas de geração/redraw.

Boa sorte Miked

Outras dicas

Você pode usar o PostGIS para converter para o KML diretamente:

SELECT ST_AsKML(geometry) from MyTable;

St_askml é um dos vários formatos de saída, incluindo WKT, GML, Geojson, etc.

Para mostrar dados dinâmicos no Google Earth, um padrão comum é usar KML com um NetworkLink elemento. Tem o link viewRefreshMode igual a onStop E o Google Earth fará solicitações (para um URL servido pelo PHP, presumivelmente) com os parâmetros da caixa delimitadora conectados. Use a caixa delimitadora para consultar os recursos no banco de dados PostGIS e retorne os resultados como KML. Isso é ótimo se você tiver muitos e muitos recursos, mas apenas deseja recuperar aqueles na região que o usuário está olhando.

Dependendo da complexidade do seu aplicativo, você também pode querer olhar Geodjango. (A familiaridade com o PostGIS é uma grande vantagem!)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top