суббота, 16 июня 2007 г.

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 см. здесь.

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru