Компиляция osm2shp для Ubuntu
по адресу http://gis-lab.info/qa/osm2shp-ubuntu.html
Пошаговая инструкция по компиляции osm2shp.
Для начинающего пользователя Unix, запуск инструмента osm2shp может оказаться нетривиальной задачей, для того, чтобы он все-таки смог это сделать и создана эта инструкция. Обращаем внимание, что описания приводимые на самом OSM недостаточно подробно описывают процесс, особенно для новичков. В этом описание предполагается, что пакеты make, gcc, g++, subversion уже установлены. Наверняка есть какая-то несуразица в подходе (несколько смущает последняя часть с переписыванием путей в Makefile), прошу учесть базовое знакомство с Unix автора данных строк.
Примечание: текущая версия библиотеки libosm и использующего ее конвертера osm2shp (ревизия 2911) не работают с текущим форматом OSM XML 0.5 на момент написания статьи и предназначены для данных версии 0.4.
Сначала установим дополнительные библиотеки shapelib и libshp-dev для создания shape-файлов, expat и libexpatl-dev для чтения XML синтаксиса.
apt-get install shapelib libshp-dev apt-get install expat libexpat1-dev
Эти пакеты при установке потребуют дополнительных, установим и их, проблем быть не должно. Если не установить libshp-dev, make будет выдавать сообщение об ошибке:
/usr/bin/ld: cannot find -lshp
Если не установить libexpat1-dev, make будет выдавать сообщение об ошибке:
/usr/bin/ld: cannot find -lexpat
Если директории с исходниками еще нет, создадим и перейдем в нее:
mkdir src
cd ~/src
Перед установкой самого osm2shp, необходимо установить две дополнительные библиотеки libosm и ccoord:
svn co http://svn.openstreetmap.org/applications/lib/libosm svn co http://svn.openstreetmap.org/applications/lib/ccoord
Ревизия этих библиотек и osm2shp на момент написания статьи: 10355.
Для начала разберемся с библиотекой libosm.
cd libosm
Отредактируем Components.cpp:
pico Components.cpp
Найдем и заменим:
#include <libshp/shapefil.h>
на
#include <shapefil.h>
Запустим сборку и установку:
make make install
Разберемся с библиотекой ccoord:
cd ../ccoord
make
Инструкций по make install для этой библиотеки не существует, поэтому выполним необходимые действия вручную:
cp libccoord.a /usr/local/lib
cp *.h /usr/local/include
Сборка дополнительных библиотек завершена, перейдем к собственно osm2shp:
cd .. svn co http://svn.openstreetmap.org/applications/utils/export/osm2shp cd osm2shp
Здесь потребуется сделать ряд замен в osm2shp.cpp и Makefile. Сначала исправим osm2shp.cpp:
pico osm2shp.cpp
Найдем и заменим:
#include <libshp/shapefil.h>
на
#include <shapefil.h>
Теперь очередь Makefile:
pico Makefile
Заменим:
-I../../../lib/libosm
на
-I/usr/local/lib
Заменим:
../../../lib/libosm/libosm.a
на
/usr/local/lib/libosm.a
Заменим:
../../../lib/ccoord/libccoord.a
на
/usr/local/lib/libccoord.a
Заменим:
../../../lib/libosm/libosm.a
на
/usr/local/lib/libosm.a
Вот и все, проверим и если на:
./osm2shp
Нам в ответ выдается:
Usage: osm2shp OSMfile nodeSHPfile waySHPfile areaSHPfile features.xml
То значит все прошло удачно.