Рендеринг прямоугольной области
Для рендеринга карт используется программа 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 следует добавить строки с нестандартными тэгами
в файл default.style следует добавить строки с нестандартными тэгами
node,way class text linear
node,way name text linear
node number text linear
и переименовать его в gas_style
3. Далее берем утилиту [generate_tiles.py]
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-сервере.
Комментариев нет:
Отправить комментарий