четверг, 23 июня 2011 г.

Linux. Open Street Map . Рендеринг прямоугольной области


Рендеринг прямоугольной области


Для рендеринга карт используется программа Mapnik - это рендер с открытым исходным кодом, который используется для рендеринга основного слоя OSM.



Пример рендеринга карты :
1. Для начала получаем актуальные данные из сырой базы данных используя OSM API
возможно потребуется указать логин и пароль учётной записи на OSM-сервере.

wget -O map.osm http://192.168.100.2:3000/api/0.6/map?bbox=26.03,54.19,31.47,56.22
или
wget -O map.osm http://login:password@192.168.100.2:3000/api/0.6/map?bbox=26.03,54.19,31.47,56.22

2. с помошью утилиты osm2pgsql импортируем полученные ранее данные в базу данных формата Mapnik/PostGIS.

./osm2pgsql -c -H 192.168.100.16 -U openstreetmap -W -d test_osm -S gas.style -E 3395 map.osm

osm2pgsql из репозитария Debian/Lenny не подойдет в нем отсутствует опция -S, поэтому нужно собирать из исходных кодов из репозитария sid'а.
в файл default.style следует добавить строки с нестандартными тэгами

node,way   class    text    linear
node,way   name     text    linear
node       number   text    linear

и переименовать его в gas_style
3. Далее берем утилиту [generate_tiles.py]
  • Ищем в коде строчку с описанием проекции

prj = Projection("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over")

коментируем ее и добавляем свою

prj = Projection("+proj=merc +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")

  • далее ищем в коде присваивание переменной mapfile и заменяем строку путём у нашему файлу стилей GAZ_MAP.xml
  • аналогично поступаем с переменной tile_dir присваивая ей путь к каталогу для сохранения тайлов.
  • Переменной bbox задаем координаты прямоугольника который необходимо отрендерить,
  • а в вызове функции render_tiles, меняем 4 и 5 параметры указывая диапазон уровней которые необходимо отрендерить.
Теперь можно выполнить команду

./render_tiles.py

результатом её работы будет структура каталогов с таилами, пригодными для отображения и помощью OpenLayers или на локальном OSM-сервере.

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

Отправить комментарий