Рендеринг карт OpenStreetMaps с помощью Mapnik в Gentoo Linux
2 октября 2009 года
Все что описано выше проверено на:
- Linux 2.6.23-gentoo-r3k1
- Mapnik 0.6.0 (sci-geosciences/mapnik)
- osm2pgsql 20090707 (sci-geosciences/osm2pgsql)
- PostgreSQL 8.3.7 (dev-db/postgresql-base, dev-db/postgresql-server)
- Python 2.6.2-r1
Установка PostGIS и PostgreSQL
1. Устанавливаем Postgis и PostgreSQL:
emerge postgresql-server --config
2. Запускаем PostgreSQL:
3. Создаем базу данных PostGIS:
su - postgres
createuser mike
createdb -E UTF8 -O mike gis
createlang plpgsql gis
psql -d gis -f /usr/share/postgresql/contrib/lwpostgis.sql
echo "ALTER TABLE geometry_columns OWNER TO mike; ALTER TABLE spatial_ref_sys OWNER TO mike;" | psql -d gis
ACCEPT_KEYWORDS="~x86" USE="postgres proj doc gdal python bidi" emerge mapnik
ACCEPT_KEYWORDS="~x86" emerge osm2pgsql
psql -d gis -f /usr/share/postgresql/contrib/90000.sql
Установка Mapnik
4. Устанавливаем Mapnik:
5. Устанавливаем данных Mapnik:
Более подробные инструкции можно найти на http://wiki.openstreetmap.org/index.php/Mapnik. Ниже только самое главное:
World boundaries (Границы, 51MB) and coastlines (Береговые линии) (~200MB):
wget http://hypercube.telascience.org/~kleptog/processed_p.zip
tar -zxvf world_boundaries-spherical.tgz
unzip processed_p.zip
mv coastlines/* world_boundaries/
rmdir coastlines
chmod -R 755 world_boundaries
mkdir /usr/local/share/mapnik
mv world_boundaries /usr/local/share/mapnik
Установка osm2pgsql
6. Устанавливаем osm2pgsql:
7. Получаем данные OSM по заданным координатам:
8. Добавляем скачанные данных в базу данных:
Генерация карты
9. Скачиваем с http://svn.openstreetmap.org/applications/rendering/mapnik/ Pyhton скрипты для генерации квадратов - http://svn.openstreetmap.org/applications/rendering/mapnik/generate_image.py и http://svn.openstreetmap.org/applications/rendering/mapnik/generate_tiles.py. Также скачиваем XML файлы описывающие стили карт - osm.xml;
10. В самом конце файлаgenerate_tiles.pyправим координаты квадрата и уровни масштабирования. Запускаемgenerate_tiles.py;
11. Используем квадраты по своему усмотрению, например с Google Maps API.