Облегченный сервер CGI для использования на локальном компьютере для обслуживания KML в Google Earth через Python или аналогичный?

Привет,

Я хочу написать сценарий, который обрабатывает простые HTTP-запросы из Google Планета Земля и отправляет обратно KML для отображения фрагментов карты, которые хранятся локально. Я ХОЧУ использовать Python, но подойдет любой язык. Я никогда ничего не делал с CGI, но думаю, что это самый простой способ выполнить мою задачу. Это то, что используют документы Google KML, это скрипты Python CGI для связи с Google Earth. Есть ли сервер CGI, который я могу загрузить (и запустить в Windows 7, или, если это абсолютно необходимо, я могу создать виртуальную машину под управлением Linux), на который я могу просто бросить свой скрипт Python и работать?

По сути, когда я перемещаюсь по экрану в Google Планета Земля, он отправляет запрос на мой сервер, который сообщает Google Планета Земля, что показывать на экране. Простой.

Предыстория: я много езжу с ноутбуком рядом со мной, с USB-приемником GPS, который обновляет мое местоположение в режиме реального времени в Google Earth. Но, поскольку я НЕ в сети, я не могу динамически загружать фрагменты карты из Google Maps, чтобы видеть названия улиц и тому подобное. Я загружал фрагменты карты и соединял их вместе в один большой PNG, чтобы покрыть город, в котором я буду ехать, а затем импортировал эти изображения в виде наложения в Google Планета Земля, но я хотел бы создать сервер, который работает локально. в базу данных фрагментов карты, хранящихся на компьютере, и обслуживает KML для отображения этих фрагментов в качестве наложения вместо того, чтобы выполнять всю эту работу заранее каждый раз, когда я совершаю поездку.


person Jake    schedule 11.12.2009    source источник


Ответы (2)


CGIHTTPServer в стандартной библиотеке.

# 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()

Это не быстро, это довольно ограничено (вы не можете вернуть ничего, кроме 200 OK ответов, например) и, вероятно, не полностью безопасно, но для такой локальной работы это нормально.

person bobince    schedule 11.12.2009

На вашем месте я бы использовал MapServer и Tilecache, чтобы сделать именно это (обслуживание растровых изображений с географической привязкой через доступные привязки http / python mapscript).

Если вам нужен простой cgi, вы, вероятно, можете использовать lighthttpd или nxginx или что-то подобное.

Также обратите внимание, что очистка фрагментов карты Google, скорее всего, нарушает их условия использования.

person ChristopheD    schedule 11.12.2009
comment
Сервер lighttpd не имеет модуля mod_wsgi. Использование CGI, как вы предлагаете, в любом случае даже не требует mod_wsgi. - person Graham Dumpleton; 11.12.2009