Google Earth: конвертация в формат KML шейпфайлов (shp) и трэков (nmea, gpx)

Недавно захотелось посмотреть некоторые трэки на карте Google Earth, для чего я начал искать способ конвертации шейпфайлов в формат KML, который можно открыть в этой программе. Оказалось, что все не так просто, хотя проще, чем кажется :-) Вариантов много, начиная от модулей к ESRI ArcView и другим ГИС и вьюверам и заканчивая отдельными утилитами. Вот как раз последние меня и интересовали.

Библиотека GDAL/OGR поддерживает формат KML, только нужно брать и компилировать исходники из CVS-репозитория. Или скачать уже скомпилированные. Например, можно использовать пакет программ FWTools (скомпилирован для Windows и Linux).

ogr2ogr -f KML track.kml track.shp

А вот так можно преобразовать из формата GPX:

gpx2shp -t track.gpx
ogr2ogr -f KML track.kml track_trk.shp

Здесь ключ -t у тилиты gpx2shp означает, что нужно конвертировать только трэк, при этом к названию файла добавляется постфикс _trk. В моем случае в шейпфайле содержится именно трэк и этот ключ не обязателен, но так мы точно знаем, что получится в результате конвертации. Если ключ не указывать, постфикс не добавляется.

А так из формата NMEA:

gpsbabel -t -i nmea -o gpx track.nme track.gpx
gpx2shp -t track.gpx
ogr2ogr -f KML track.kml track_trk.shp

Вот так выглядит трэк, открытый в Google Earth.


Файлы примера можно взять здесь.

Документацию по формату KML можно почитать здесь. Я сам с удивлением узнал, что можно не только векторные , но и растровые слои добавлять (см. "Ground Overlays"). Правда, только в формате JPEG, даже TIFF не поддерживается, но дареному коню...
Интересно, как преобразовать из tiff или jpeg файлов с геопривязкой в формат KML, если мне об этом вопросы будут задавать, посмотрю :-)

Раз уж я залез на сайт с документацией, бегло пробегусь по ней. Итак, что мы имеем на сегодня.

Предусмотрена возможность получать KML-файлы из сети. Эту функцию гугл окрестил "Network Links".
Кроме того, можно создавать KML-файлы "на лету", указав URL скрипта, который генерирует KML-файл по запросу, см. "CGI Scripting for KML".
Но это все привычно, в сущности, какая разница программе, получить статичный или динамически созданный файл, с сервера или с жесткого диска. А вот функция формирования динамического запроса к серверу позволит в полной мере реализовать потенциал, заложенный в методе динамической генерации KML-файлов.

Что ж, очень даже неплохо, можно реализовывать полнофункциональные клиентские приложения, притом, что труд создания вьювера взял на себя Гугл, да еще и космоснимками обеспечил на всю территорию планеты.

Еще нашел способ конвертации из NMEA или GPX напрямую в KML, правда, размер файла получается намного больше, но открывается быстро. Как я посмотрел в самом файле, там сделано красивое форматирование :-) А на самом деле, gpsbabel создает файл KML с гипертекстовым комментарием для каждой точки (скорость, координаты и проч.), что и увеличивает объем получаемого файла.

gpsbabel -t -i nmea -o kml track.nme test.kml

Такое вот приятное открытие, что gpsbabel из Debian Etch умеет и с KML работать.

Примечание: gpsbabel доступна для платформ Microsoft Windows 95, 98, ME, 2000, XP, а также для POSIX операционных систем, таких, как Linux, UnixWare, OpenServer, Solaris, FreeBSD, OSX.
Подробное описание программы gpsbabel см. здесь.

Comments

Popular posts from this blog

Открытый софт для научных расчетов

Счетчики в SQLite

Модем Huawei E1550 в debian