O que vem a seguir se nosso KML for muito grande / complexo para a API do Google Maps? [fechadas]

29

Nosso aplicativo da web inclui recursos simples de mapeamento (atualmente apenas marcadores e sobreposições de KML em um mapa do Google incorporado). Isso funciona muito bem; a única limitação real que enfrentamos são as sobreposições de KML que vão além das restrições de tamanho e complexidade do Google para KML .

Estamos pensando em montar nosso próprio servidor (por exemplo, GeoServer ou ArcGIS Server); mas isso parece um grande passo apenas para fornecer (por exemplo) 15 MB de KML quando o limite do Google é 10 MB.

Preciso de uma verificação de integridade: existe algum meio termo entre a API fácil e gratuita do Google para sobreposições KML e a configuração do meu próprio servidor de blocos?

Caudill de ervas
fonte
5
divida seu KML em dois arquivos KML menores - ativar e desativar os dados opcionais que você não precisa.
Mapperz
1
tabelas de fusão de uso opcional (limite de 100 mil linhas ou 100 MB de dados) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/…, consulte groups.google.com/group/fusion-tables-users-group/browse_thread/…
Mapperz
@mapperz Você só pode fazer upload de 100 MB de dados de uma só vez, mas pode importar mais linhas para a mesma tabela até 250 MB de armazenamento.
geographika
Embora eu saiba que você já sabia .. gis.stackexchange.com/questions/6615/…
geographika
O serviço Fusion Tables será encerrado em 3 de dezembro de 2019, portanto, a opção que vejo é diminuir os arquivos kml com o software - o QGIS desktop. existe também a biblioteca pyg qgis. Usei o QGIS desktop com a opção Simplify geometry usando 0.0005. Depois exporto a camada criada como kml. Você pode fazer isso como trabalho em lotes e no mesmo menu. Em seguida, você pode abrir todas as camadas criadas em um projeto separado e usar o console na área de trabalho do QGIS para converter todos os arquivos .shp em .kml
makkasi 29/11

Respostas:

12

Como você já investiu no desenvolvimento do Google Maps, sugiro inserir todos os dados no Google Fusion Tables, que podem ser analisados ​​no mapa de maneira semelhante ao KML com desempenho incrível (consulte o aplicativo WNYC Fusion Tables ). Considere isso uma atualização para o KML sem precisar modificar drasticamente o front-end.

Gady
fonte
Eu acho que é uma ótima idéia se seus dados não estiverem em um cronograma de atualização> 24 horas. Isto é o que o Google acabou de nos dizer (se o kml estiver desacelerando o navegador, use as tabelas de fusão) para fazer isso, eu diria que esta é a melhor resposta.
18711 Steve
1
Obrigado por apontar o Fusion Tables - de alguma forma isso tinha escapado totalmente da minha atenção, muito legal. Infelizmente, isso seria um pouco desajeitado para trabalhar com dados que mudavam com frequência; e as limitações gerais de armazenamento (250 MB por usuário) não nos permitem escalar.
Herb Caudill
2
Observe que o serviço experimental do Fusion Tables será encerrado em 3 de dezembro de 2019.
Jonas
12

Você pode dividir seu KML em vários KMLs com um KML pai referenciando os kmls menores. Pelo menos, isso reduzirá o tamanho dos arquivos a um nível respeitável e permitirá que você faça referência a conjuntos de dados muito maiores como KMLs.

Honestamente, o KML é realmente bom apenas para pequenos conjuntos de dados com poucos recursos e atributos associados. Eu não chegaria perto disso como uma fonte de dados de arquivo. Se você estiver vendo esses arquivos cada vez maiores, eu procuraria outro tipo de dados ou definitivamente seguiria a rota GeoServer / MapServer para conjuntos de dados distribuídos.

OptimizePrime
fonte
2
Porém, o KML de rede (com superoverlays é projetado para grandes conjuntos de dados), mas requer um servidor Web e um software de renderização O Geoserver faz um bom trabalho com esse tipo de KMZ - funciona melhor com o Google Earth, pois a API do Google Maps restringe o uso de KML.
Mapperz
Nunca tive muita sorte com superposições, exceto no Google Earth para Empresas. Embora eu não tenha passado muito tempo nisso. Definitivamente uma opção para explorar, +1 @Mapperz
OptimizePrime
1
Use o GeoServer com Oracle e funciona muito bem ao renderizar o KMZ (superoverlay) - dados ao vivo (atualizados constantemente) puxados muito úteis para os usuários - tiveram que ajustar o geoserver para acelerar a atualização.
Mapperz
8

Se você não investiu muito tempo na API do Google Maps, pode mudar para o OpenLayers, que possui um analisador KML do lado do cliente que pode ler seus próprios arquivos KML - veja o exemplo abaixo:

http://openlayers.org/dev/examples/kml-layer.html

No entanto, para um arquivo de 15 MB, isso provavelmente atrapalha o navegador. Provavelmente, também é muito lento nos servidores do Google quando você se aproxima do limite de tamanho do arquivo.

Existe realmente a necessidade do nível de detalhe de 15 MB ou você pode simplificar o KML sem perder muitas informações?

Você precisa acessar o vetor / geometria no lado do cliente? Esses dados podem ser exibidos como imagens?

Se nenhuma dessas opções for possível, você terá que olhar para algum tipo de software que serve mapas. Junto com o GeoServer do ArcGIS Server, você pode considerar o MapServer para servir o KML ou como um WFS. A vantagem de usar um servidor de mapas é que as solicitações retornarão apenas os dados no mapa - reduzindo o tráfego da rede e diminuindo o tempo de carregamento.

geographika
fonte
Depois de experimentar as tabelas do Google Fusion, a abordagem de Guddie é de longe a mais fácil de implementar. Você pode carregar apenas 100 MB de KML por vez, mas cada usuário tem uma opção de armazenamento de 250 MB (no momento da gravação).
geographika
2

Se você estiver usando a versão 3, poderá remover todas as informações de atributo, exceto um identificador exclusivo, e solicitá-las por meio de chamadas ajax a um serviço da Web sempre que um usuário clicar em um recurso. Se você tiver mais de 10 MB de pontos, provavelmente é uma boa idéia fazer algum tipo de cluster em vez de exibir todos esses pontos de uma só vez. Além disso, você pode separar as superposições de solo em arquivos KML separados.

Peter Smith
fonte
2

O MapLarge tem uma solução interessante - eles podem replicar seus dados em seus servidores e, em seguida, fazer o trabalho pesado de gerar blocos rapidamente usando seu software proprietário. Eles oferecem APIs Javascript que podem sobrepô-las nos mapas base do Google Maps, OpenLayers etc.

Confira alguns de seus exemplos - a velocidade é impressionante:

Não é gratuito, mas pode ser uma boa opção para quem não deseja que os problemas e as despesas de criar um servidor separado gerem essas camadas.

Caudill de ervas
fonte