Liteweight CGI Server para usar na máquina local para servir a KML ao Google Earth via Python ou similar?

StackOverflow https://stackoverflow.com/questions/1885113

  •  19-09-2019
  •  | 
  •  

Pergunta

Saudações,

Quero escrever um script que lida com solicitações HTTP simples do Google Earth e envie de volta a KML para exibir os mapas que são armazenados localmente. Eu gostaria de usar o Python, mas qualquer idioma é bom. Nunca fiz nada com o CGI, mas acho que essa é a maneira mais simples de realizar minha tarefa. É isso que o Google KML Docs usa, é o Python CGI Scripts para conversar com o Google Earth. Existe um servidor CGI que eu possa baixar (e executar no Windows 7, ou se absolutamente necessário, eu poderia construir uma VM executando o Linux) na qual posso simplesmente colocar meu script Python e ir?

Basicamente, à medida que movo a tela no Google Earth, ele enviará uma solicitação ao meu servidor, que dirá ao Google Earth o que mostrar na tela. Simples.

Antecedentes: Estou dirigindo muito com meu laptop ao meu lado, com um receptor GPS USB que atualiza minha localização em tempo real no Google Earth. Mas, como estou off -line, não posso baixar dinamicamente os mapas de mapas do Google Maps para que eu possa ver nomes de rua e tal. Eu tenho baixado os ladrilhos do mapa e os corrigindo como um grande PNG para cobrir a cidade em que irei dirigir e depois importar essas imagens como uma sobreposição no Google Earth, mas gostaria de construir um servidor que seja executado localmente, torneiras em um banco de dados de ladrilhos de mapa armazenados na máquina e serve o KML para exibir esses ladrilhos como uma sobreposição, em vez de ter que fazer todo esse trabalho com antecedência cada vez que faço uma viagem.

Foi útil?

Solução

CGIHTTPSERVER na biblioteca padrão.

# current directory containing cgi-bin directory with scripts in
# subclass CGIHTTPRequestHandler and override cgi_directories to change this
#
os.chdir('/path/to/htdocs')

BaseHTTPServer.HTTPServer(('',80), CGIHTTPServer.CGIHTTPRequestHandler).serve_forever()

Não é rápido, é bastante limitado (você não pode devolver nada além de 200 OK Respostas, por um) e provavelmente não é totalmente seguro, mas para esse tipo de trabalho local está tudo bem.

Outras dicas

Se eu fosse você, eu usaria MapServer e Tilecache Para fazer exatamente isso (servindo imagens de raster georreferenciadas sobre as ligações HTTP / Python Mapscript disponíveis).

Se você deseja CGI simples, provavelmente pode usar Lighthttpd ou Nxginx ou similar.

Observe também que a raspagem dos ladrilhos do Google Map está muito provavelmente violando seus termos de uso.

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