Для начинающего пользователя 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
~/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
на
#include
Запустим сборку и установку:
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
на
#include
Теперь очередь 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
То значит все прошло удачно.
http://gis-lab.info/qa/osm2shp-ubuntu.html
Последние комментарии
11 минуты 19 секунды назад
2 часа 19 минуты назад
2 часа 36 минуты назад
7 часа 15 минуты назад
7 часа 30 минуты назад
8 часа 32 минуты назад
8 часа 37 минуты назад
9 часа 27 минуты назад
9 часа 40 минуты назад
14 часа 11 минуты назад