Компиляция osm2shp для Ubuntu

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу 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

То значит все прошло удачно.

Ссылки по теме