RU:Mapnik

From OpenStreetMap Wiki
Jump to navigation Jump to search
Mapnik
Mapnik-logo.png
Лицензия: GNU Lesser General Public License
Платформ: Windows, macOS, и Linux
Версия: 3.1.0 (2021-01-08)
Язык: английский
Веб-сайт: https://www.mapnik.org
Исходный код: https://github.com/mapnik/mapnik
Языки
программирования:
C++ и Python

Mapnik — это программа с открытым исходным кодом для отрисовки основного Slippy Map слоя для OSM. Он поддерживает различные форматы геопространственных данных и предоставляет гибкие варианты стилей для создания различных типов карт, например "cycle map" и "noname". Также, это имя, данное основному слою, что вводит некоторых в заблуждение.

Mapnik написан на C++ и может быть написан с использованием языков привязки, таких как JavaScript (Node.js), Python, Ruby и Java. Использует библиотеку AGG и дает возможность сглаживать объекты на карте с большой точностью. Может читать данные в формате компании ESRI, PostGIS, точечные рисунки TIFF, файлы .osm, а также поддерживает любые GDAL или OGR форматы, файлы CSV и многое другое.

Официальный сайт — mapnik.org, а новые пользователи могут получить больше информации об использовании на The Mapnik Wiki GitHub и присоединиться к irc-каналу.

Обратите внимание, что Mapnik — это набор инструментов для визуализации карт и его не следует путать с какими-либо обычными таблицами стилей карт, которые могут использовать Mapnik в качестве основы. Одна из них, OpenStreetMap Carto, используется в качестве основной карты на веб‑сайте OSM.

Терминология

Долгое время термин Mapnik использовался как для библиотеки, отображающей геопространственные данные как в виде изображений, так и для стиля карты, написанного на языке стилей Mapnik XML, который используется для визуализации основной карты на www.openstreetmap.org (стиль иногда называют OSM Mapnik). С декабря 2012 года карта на сайте www.openstreetmap.org отображается с использованием порта CartoCSS этого стиля под названием OpenStreetMap Carto GitHub. Помните об этой путанице в именах, если вы читаете старые руководства в этой вики или обсуждения в списке рассылки или на форуме.

Используйте Mapnik, если вы ссылаетесь на движок рендеринга, используйте правильное имя стиля карты, если вы ссылаетесь на правила стилей.

Ошибки и предложения по отрисовке

Отчёты и ошибки, предложения и запросы по неотображаемым на карте объектам отправляйте в trac с указанием компонента "Mapnik". Пожалуйста, перед новым запросом проверяйте уже оставленные заявки.

Обзор

Пример стандартного стиля OpenStreetMap, в котором используется движок Mapnik

Mapnik может выводить изображения карт в различные графические форматы - PNG, JPEG, SVG и PDF. Основное использование Mapnik OpenStreetMap включает рендеринг многих миллионов тайлов карты (tile) размером 256 на 256 точек, которые отображаются в интерфейсе подвижной карты (Slippy Map) на JavaScript.

Создание тайлов происходит на тайл-сервере (tile.openstreetmap.org). Slippy Map подгружает плитки по адресам вида http://tile.openstreetmap.org/7/63/42.png. Получается так:

42.png

Основная статья: Slippy map tilenames

Файлы карты

Карты Mapnik настраиваются с использованием собственного формата XML (иногда называемого Mapnik XML).

Файл карты содержит:

  • список слоёв (слой применяет определённый стиль к определённому источнику данных)
  • определение для стилей, которые могут использоваться слоями

Стили Mapnik

Mapnik позволяет настраивать все картографические элементы карты — данные, значки, шрифты, цвета, узоры и даже некоторые эффекты, такие как псевдо-трехмерные здания и тени. Всё это контролируется путём определения источников данных и правил стилей, чаще всего на языке XML, характерном для Mapnik.

Правила стиля Mapnik, используемые для стандартного слоя в OSM, имеют открытый исходный код и могут использоваться в качестве основы для пользовательской визуализации данных OSM. Также доступны другие стили, например, стиль гуманитарной карты.

Существует ряд внешних инструментов, которые могут помочь в создании стилей Mapnik. Они предлагают языки стилей, которые более компактны и легче читаются и пишутся, чем встроенный в Mapnik язык XML. TileMill и Kosmtik — это среды разработки, использующие CartoCSS в качестве обработчика стилей (для преобразования CSS-подобного CartoCSS в стиль Mapnix XML), MagnaCarto также использует язык CartoCSS, но поставляется с собственным конвертером, который также может создавать файлы карт MapServer.

Устаревшие инструменты для этих целей, разработка которых была прекращена, — это Quantumnik, плагин QGIS, Spreadnik и Cascadenik.

Список стилей можно найти GitHub Wiki, а также в списке стилей CartoCSS.

Источники информации

  • PostGIS: наиболее используемый подход для отрисовки данных OSM посредством Mapnik. Данные OSM преобразуются в формат доступный Mapnik с помощью Osmosis, osm2pgsql или Imposm, который загружает полученные данные в базу PostGIS. Встроенные в базу данных функции GIS и языка запросов SQL дают более широкие возможности отрисовки, недоступные для файлов OSM XML. Этот подход может использоваться для более сложных визуализаций и является основным источником данных, используемым стандартным слоем OpenStreetMap.
  • Shapefiles: помимо прочего, обычно требуются еще так называемые шейпфайлы (shapefiles) — они нужны для отрисовки некоторых дополнительных слоёв. Помимо PostGIS, стандартный стиль OpenStreetMap использует несколько шейп-файлов для визуализации карты. К примеру, береговая линия отрисовывается с помощью шейпфайлов, которые создают Coastline Error Checker из линий natural=coastline. Смотрите Coastline#Rendering_in_Standard_tile_layer_on_openstreetmap.org
  • OGR: Mapnik может читать из векторных источников, поддерживающих библиотеку GDAL/OGR.
  • GeoTIFF: Mapnik может отрисовывать точечные изображения GeoTIFF. В основном они используются для карт рельефа. Ограничение Mapnik состоит в том, что он не может изменять проекцию точечных изображений (преобразовывать их в желаемую проекцию без загрузки их в Mapnik). Файлы Hillshade GeoTIFF можно создавать с помощью таких инструментов, как GDAL, на основе цифровых данных о местности, таких как SRTM.
  • Растровые (точечные) изображения: подобно GeoTIFF, Mapnik также может отрисовывать точечные изображения (растровые картинки, Raster images), которые не содержат геоинформации. Ограничивающее эти картинки окно следует описать отдельными параметрами.

Наборы данных

Для отрисовки тайлов нужны два больших набора данных, так что будет разумно начать скачивать их в первую очередь.

Planet.osm

Planet.osm — это снимок базы данных OpenStreetMap. Смотрите Planet.osm

$ wget https://planet.openstreetmap.org/planet-latest.osm.bz2

Примечание: если вы хотите отрендерить небольшой участок для быстрой проверки, то можете импортировать какой-нибудь файл .osm и вам не потребуется рендерить всю планету. Рекомендуется так поступать, если вы желаете просто проверить, работает ли рендеринг перед загрузкой 13+ Гб и импорта всей планеты. Вы можете получить подходящий файл .osm, скачав и сохранив область в JOSM или используя небольшие выгрузки планеты на Planet.osm#Country_and_area_extracts.

Границы мира

Mapnik использует внешние данные shapefile для береговых линий на низких уровнях приближения. Смотрите Coastline#Main_Mapnik_Layer

wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz # (50 Мб)
wget http://tile.openstreetmap.org/processed_p.tar.bz2 # (357 Мб)
wget http://tile.openstreetmap.org/shoreline_300.tar.bz2 # (46 Мб)

После скачивания и проверки скриптов Mapnik (смотрите подробности ниже), создайте директорию mapnik/world_boundaries и распакуйте архивы, только переместите файлы из субдерикторий, так как обработка будет производиться в директории world_boundaries.

С июня 2010 дополнительно требуются ещё два файла:

wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/10m-populated-places.zip # (1.5 MB)
wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/110m-admin-0-boundary-lines.zip # (38 KB)

PostgreSQL / PostGIS

Mapnik может использовать PostgreSQL/PostGIS в качестве базы пространственных данных. Для инструкций по установке и конфигурированию PostgreSQL/PostGIS для использования с Mapnik смотрите Mapnik/PostGIS.

Если вы работаете с osm2pgsql версии старше 0.80 и планируете использовать диффы, то вам нужно активировать модуль intarray contrib. Не активируйте его, если у вас osm2pgsql 0.80 или новее:

psql gis < /usr/share/postgresql/8.3/contrib/_int.sql

osm2pgsql

osm2pgsql это конвертер и загрузчик данных Openstreetmap в PostgreSQL.

Для инструкций по установке смотрите osm2pgsql. До того, как вы начнёте впервые использовать osm2pgsql со сферической проекцией Меркатора (смотрите ниже), вам нужно инициализировать конфигурационные данные для данной проекции. Сделайте это, выполнив .sql идущий с osm2pgsql:

[Синтаксис в Windows]
$ psql -d gis -f c:\osm2pgsql\900913.sql
[Синтаксис в Linux]
$ wget http://trac.openstreetmap.org/browser/applications/utils/export/osm2pgsql/900913.sql?format=raw -O 900913.sql
$ psql -d gis -f ./900913.sql

Note не требуется делать это, если вы используете PostGIS 1.4 или выше, поскольку SRID уже включен в исходную таблицу spatial_ref_sys.

Вам также следует убедиться, что схема базы данных osm2pgsql синхронизирована with the one Mapnik acts on. Если это не так, вы увидите забавные вещи, совсем не те, что ожидали.

Схема описана в файле default.style для osm2pgsql и в osm.xml (resp. osm-template.xml) для Mapnik. Очень вероятно, что default.style в вашем пакете osm2pgsql устарел, если он не собран из svn. Так что, загружая из svn всяке OSM добро для Mapnik (смотрите ниже) вы также должны обновить default.style.

Установка Mapnik

Для установки Mapnik следуйте инструкциям, изложенным здесь: Mapnik/Installation.

Загрузка данных

Просто вызовите osm2pgsql (от имени пользователя, который будет запускать mapnik):

$ osm2pgsql -m -d gis planet-latest.osm.bz2

Этот процесс требует значительный объём свободной памяти (приблизительно, не менее 512 Мб). Если память переполнится, программа может обрушиться с какими-нибудь непредсказуемыми последствиями (к примеру, сообщения об ошибках запишутся в файл .osm). Убедитесь, что у вас достаточно свободной оперативной памяти и пространства для свопа перед запуском osm2pgsql.

Опция "-m" разрешает использование сферической проекции Меркатора, что рекомендуется. Данный выбор идёт по умолчанию с версии 0.55, SVN r8320. Некоторые более старые инструменты могут до сих пор ожидать данные, импортированные в других проекциях, таких как "latlong" или несферический Меркатор. Опции командной строки позволяют выбрать эту и иные проекции.

Последний код osm2pgsql также поддерживает простое задание границ при импорте, что ускоряет работу, если вы желаете рендерить лишь малую часть планеты. Например, если вы хотите импортировать Лондон из UK выгрузки планеты:-

$ osm2pgsql --bbox -0.5,51.25,0.5,51.75 -m -d gis uk-080213.osm.bz2

Несколько проблем, которые могут возникнуть

Неверная проекция

Если все тайлы вашей карты исчезают в промежутке 10–20 км в направлении Север/Юг, значит вы забыли добавить опцию "-m" при импорте через osm2pgsql. Начиная с osm2pgsql версии 0.55, сферический Меркатор является проекцией по умолчанию.

Cannot open data file

Если вы пытаетесь загрузить сжатый gzip файл планеты размером более 2 Гб, вы можете увидеть ошибку открытия файла. Это происходит из-за ошибки некоторых версий zlib, которым не удаётся обработать флаг O_LARGEFILE в open(). Костылём является использование внешнего процесса gzip, который не выдаёт такую ошибку. Указание имени файла "-" заставит osm2pgsql читать данные из STDIN.

gzip -dc planet-080213.osm.gz | osm2pgsql -m -

Переполнение памяти

Если ваша загрузка падает с ошибкой, похожей на

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
Setting up table: planet_osm_line
Setting up table: planet_osm_polygon
Setting up table: planet_osm_roads
Mid: Ram, scale=100

Reading in file: -
Entity: line 1: parser error : Extra content at the end of the document

^
- : failed to parse
Error occurred, cleaning up

вам вероятно нужно запускать osmpg2sql в режиме slim, который записывает промежуточные объекты на диск, вместо того, чтобы хранить их в RAM. Чтобы сделать это, запустите osm2pgsql с опцией s:

osm2pgsql -m -s -d gis planet-080213.osm.gz

Неверная проекция в pgSQL

Вы можете получить вот такую ошибку сразу после запуска:

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
  failed: ERROR:  AddGeometryColumns() - invalid SRID
CONTEXT:  SQL statement "SELECT AddGeometryColumn('','', $1 , $2 , $3 , 
$4 , $5
)"
PL/pgSQL function "addgeometrycolumn" line 4 at SQL statement

Это означает, что проекция не была инициализирована и вам нужно выполнить 900913.sql в папке osm2pgsql. Чтобы сделать это:

wget http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/900913.sql && psql -f 900913.sql gis

Чтобы всё заработало после этого, перезапустим демон базы данных:

sudo /etc/init.d/postgresql restart

Locked out

После нескольких часов, импорт может выйти с ошибкой вроде:-

ANALYZE planet_osm_line;
 failed: ERROR:  deadlock detected
DETAIL:  Process 28511 waits for AccessExclusiveLock on relation 1064115 of database 18309; blocked by process 12776.
Process 12776 waits for ShareLock on transaction 572766655; blocked by process 28511.

Error occurred, cleaning up

Такое бывает в некоторых версиях PostgreSQL, и происходит, когда идёт попытка выполнить auto-vacuum во время ANALYZE. Решением является запрет auto-vacuum в базе данных. Поскольку данные не обновляются после импорта, от процесса vacuum никакого толку. Установите в файле postgresql.conf опцию:

autovacuum = off

Затем перезапустите сервер базы данных

sudo /etc/init.d/postgresql-8.1 restart

Note: В Debian/Ubuntu вам также надо поправить /etc/cron.d/postgresql-common закомментировав две задачи pg_maintenance (добавьте '#' перед ними), которые всё равно будут вызывать vacuum в регулярном порядке:-

# Run VACUUM ANALYSE on all databases every 5 hours if pg_autovacuum is not
# running
# 2 0,5,10,15,20 * * 1-6 root if [ -x /usr/sbin/pg_maintenance ]; then /usr/sbin/pg_maintenance --analyze >/dev/null; fi

# On Sunday you may wish to run a VACUUM FULL ANALYSE as well
# If you do not run a 24/7 site, you may want to uncomment the next line 
# so as to do a regular VACUUM FULL.  If you need 24/7 connectivity, save
# VACUUM FULL for when you think you really need it.
# 10 3 * * Sun root if [ -x /usr/sbin/pg_maintenance ]; then /usr/sbin/pg_maintenance --full --analyze >/dev/null; fi

Не забывайте возвращать их, если вы делаете что-то ещё в postgres, или производительность медленно падает.

Доступ запрещён

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
 failed: ERREUR:  droit refusé pour la relation geometry_columns
CONTEXT:  instruction SQL « DELETE FROM geometry_columns WHERE
		f_table_catalog = '' AND f_table_schema = 'public' AND f_table_name = 'planet_osm_point' AND f_geometry_column = 'way' »
PL/pgSQL function "addgeometrycolumn" line 94 at EXECUTE statement
instruction SQL « SELECT AddGeometryColumn('','', $1 , $2 , $3 , $4 , $5 ) »
PL/pgSQL function "addgeometrycolumn" line 4 at SQL statement

Error occurred, cleaning up

Пользователь не имеет прав для модификации базы данных gis. Запускайте osm2pgsql от пользователя, которого вы создали для установки postgresql.

Authentication failed

Если вы не можете подключиться к postgres командой psql (такое случается, к примеру, с Ubuntu 9.10 и postgres 8.3):

 $ psql -W gis username
 psql: FATAL:  Ident authentication failed for user "username"

Даже если вы установили пароль для этого пользователя:

 $ sudo -u postgres -s -H
 postgres@aoeu$ psql 
 Welcome to psql 8.3.5, the PostgreSQL interactive terminal.
 ALTER ROLE username PASSWORD 'mypassword';

Вы можете дописать следующие строки в ваш pg_hba.conf (лежит, например, в /etc/postgresql/8.3/main):

 local   all         all                               trust   
 host    all         all         127.0.0.1/32          trust
 host    all         all         ::1/128               trust

Так вы сможете использовать аутентификацию из localhost.

Note that you may have to comment out any existing lines beginning with local all or host all. I had to comment out the following section on Ubuntu 8.10:

# "local" is for Unix domain socket connections only 
#local   all         all                               ident sameuser
# IPv4 local connections:
#host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
#host    all         all         ::1/128               md5

Unknown element

Если вы получили ошибку

Unknown Element name : changeset

значит вам нужно обновить ваш osm2pgsql до последней версии.

Отображение карты с помощью Mapnik

Распакуйте данные lowzoom и береговой линии, которые вы скачали ранее, последние два zip файла требуются с июня 2010:

cd ~/mapnik
tar xzf world_boundaries-spherical.tgz
tar xjf processed_p.tar.bz2 -C world_boundaries
tar xjf shoreline_300.tar.bz2 -C world_boundaries
unzip 10m-populated-places.zip -d world_boundaries
unzip 110m-admin-0-boundary-lines.zip -d world_boundaries

Команды выше должны переместить все шейпфайлы в директорию world_boundaries.

Если вы не сделали это раньше, экспортируйте материалы для Mapnik из репозитория OSM subversion:

svn export http://svn.openstreetmap.org/applications/rendering/mapnik
cd mapnik

Файл osm.xml будет собран из основного osm.xml и файлов XML include из директории inc/. Директория inc/ содержит 3 файла .template, которые передаются скрипту generate_xml.py:

./generate_xml.py -h

Проверьте, устраивают ли вас значения по умолчанию. Вы можете указать значения, отличные от умолчаний. В качестве образца:

./generate_xml.py --host localhost --user `whoami` --dbname gis --symbols ./symbols/ --world_boundaries ./world_boundaries/ --port 5432 --password 'something'

Данная команда берёт файлы .template из inc/ и создаёт non-template версии этих файлов, с вашими настройками. Если вы не можете или не желаете запускать скрипт, вы можете сделать это вручную. Обновление таблицы стилей теперь выполняется просто запуском 'svn update'. SVN не будет трогать сгенерированные файлы настроек. Если в файлы .template добавится новая опция, вам потребуется лишь запустить скрипт generate_xml.py ещё раз.

После того, как вы создали таблицу стилей, вы можете указать mapnik на файл osm.xml. The osm.xml file draws in the files in the inc/ directory, through the use of XML entities. Вам не нужно создавать отдельную копию таблицы стилей.

Вы можете указать, какая область должна быть отрисована, установив границы и уровень зума в generate_(tiles|image).py

Дополнительно: Поддержка запасного шрифта CJK

В данный момент включает в себя шрифт с поддержкой символов CJK (Chinese, Japanese, Korean, (Китайский, Японский, Корейский) et. al. or more generally East Asia). Чтобы добавить поддержку, вам надо открыть файл inc/fontset-settings.xml.inc и раскомментировать строки, содержащие "unifont Medium".

Older mapnik versions did not have unifont included. There you need to: Более старые версии mapnik не включают в себя unifont. В этом случае:

  1. Скачайте GNU Unifont Glyphs
  2. Распакуйте и положите файл ttf в директорию /usr/local/lib/mapnik/fonts (или эквивалентный путь) с остальными шрифтами Mapnik.

Отображение тайлов

Теперь можете вызвать

MAPNIK_MAP_FILE="osm.xml" MAPNIK_TILE_DIR="tiles/" ./generate_tiles.py

generate_tiles.py генерирует тайлы, которые могут раздаваться подходящим сервером.
Загляните внутрь файла, и вы увидите, какая часть планеты и на каком зуме будет рендериться по умолчанию. Ищите bbox и min,max zoom. Если вы хотите выбрать другую область, сходите на openstreetmap.org и щёлкните вкладку "Экспорт"; затем "Выделить другую область". Обведите желаемую область, и четыре текстовых поля покажут, какие значения вам надо указать в порядке [left,bottom,right,top].
Если у вас многоядерная машина, для ускорения генерации тайлов вы можете разделить область, например, на четыре части и запустить несколько процессов одновременно.
Дополнительно можно ускорить процесс, уменьшив влияние узких мест ввода/вывода дисковой подсистемы (iowait time). Узкие места можно найти с помощью iofile.d; в Mac OS X в этом поможет Spotlight, and Postgress statistics collector as parallel disk i/o consumers.

или

./generate_image.py

generate_image.py генерирует цельное изображение для указанных границ. По сути, он берёт тайлы и соединяет их в одну большую картинку. Это пригодится людям, которые хотят просто отрисовать ограниченную область, и избежать возни с тайлами.

Устранение ошибок тайлов

Во время или после рендеринга тайлов могут возникнуть проблемы:

  1. Если на сгенерированных тайлах видно береговую линию, но не хватает улиц, названий улиц, городов и прочих сущностей, пожалуйста проверьте, может ли пользователь базы данных выполнить вход. Скрипты и Mapnik могут тихо смириться с проблемой и рисовать одни берега, без остальных данных. Другая причина может быть в том, что Mapnik собран без поддержки PostGIS.
  2. Версии двух последних скриптов в svn предназначены для работы с Mapnik 0.5, и вы можете получить ошибки, если попытаетесь использовать их с более старой версией. Эти скрипты могут вызывать программу 'convert'.
  3. Если вместо азиатских надписей квадратики, значит вы не разрешили шрифт unifont в таблице стилей. Отредактируйте inc/fontset-settings.xml.inc и раскомментируйте строки, содержащие unifont. Шрифт unifont идёт вместе с mapnik, начиная с версии 0.7.0.
    Чтобы убедиться, что unifont корректно установлен в правильные папки, вы можете выполнить в командной строке: ls `python -c "import mapnik;print mapnik.fontscollectionpath"`. Также можно затем проверить доступные font face names: > python -c "from mapnik import FontEngine as e;print '\n'.join(e.instance().face_names())"
  4. Если вы используете файловую систему ext4 (предлагается по умолчанию в таких дистрибутивах, как openSUSE 11.2 и Ubuntu 9.10) и генерируете много тайлов, может так случиться, что скрипт упадёт, потому что не сможет больше создавать новые файлы тайлов. Это проблема файловой системы. Удалите столько файлов, сколько сможете, выполните принудительную проверку файловой системы и/или перейдите на более стабильную файловую систему.
  5. Эта ошибка может быть на некоторых unix дистрибутивах:
 untimeError: PSQL error:
 FATAL:  Ident authentication failed for user "username" (encountered during parsing of layer 'leisure')

На большинстве инсталляций Unix postgres ставится в дефолтной конфигурации для работы с использованием аутентификации 'ident same user'. Для её использования, уберите следующие параметры из конфига: user, port, host, password. Удалите все параметры из команд, например:

 ./generate_xml.py --accept-none --dbname gis --symbols ./symbols/ --world_boundaries ./world_boundaries/

Тогда mapnik подключится описанным способом, как если бы вы запустили "psql gis" в командной строке (без указания host, username или password).

Сокращение дискового пространства

Если вы рендерите всю планету (то есть, bbox = (-180.0, -90.0, 180.0, 90.0)), есть пара вещей, которые могут существенно сократить занимаемое дисковое пространство.

  1. Убедитесь, что бы имеете ровно столько тайлов, соколько вам нужно.
    1. К примеру, максимальное значение x и y для 10 зума равно 1023. Значит, последним тайлом должен быть TILEDIR/10/1023/1023.png.
    2. However, you may have tiles rendered with x and y values beyond that. (I had y values up around 1300)
    3. Delete those first for each zoom level.
  2. На более высоких уровнях зума (8 и далее), многие тайлы дублируются (например пустые океаны и озёра, пространства суши без объектов).
    1. В операционных системах, которые это поддерживают, вы можете создать  символические ссылки на наборы тайлов чистой воды и чистой суши.
    2. Но, если Ваша ОС поддерживает, лучше использовать  жесткие ссылки, это даст значительно большую экономию места на современных HDD, где размер сектора составляет 4КБ, при размере тайла заливки в 103Б.

Примеры результатов (мои (athlon02)):

  1. На 9 зуме, было занято 3.8 Гб (if memory serves). Сейчас 1.4 Гб.
  2. На 10 зуме, было занято 12-13 Гб на начало. Сейчас 4.58 Гб.
  3. Ваши значения могут отличаться.

Конвертация стилей для версий > 2.0.0

При апгрейде до версии 2.0.0 меняются некоторые спецификации таблицы стилей. Все изменения можно увидеть здесь.
Стало быть, 'старые' стили тоже надо обновлять.

С mapnik2 уже идет скрипт (называется 'upgrade_map_xml.py'), который выполняет конвертацию.

Лежит в этой директории:

  ../$mapnik_home_directory/utils/upgrade_map_xml/

Просто наберите:

 ./upgrade_map_xml.py ../$mapnik_scripts/old_style.xml ../$mapnik_scripts/new_style.xml

Или замените старый файл на месте:

 ./upgrade_map_xml.py ../$mapnik_scripts/old_style.xml --in-place

Настройка рендеринга

У вас есть работающая стандартная таблица стилей, и вы можете начать настраивать свою карту.

Контуры

Есть возможность добавить контуры на вашу карту, как это сделано в cyclemap. Контуры основаны на общедоступных данных SRTM (Shuttle Radar Topograhy Mission) NASA. Также можно добавить отображение рельефа и раскраску высот, если такие данные есть в карте.

Стили

Таблица стилей это XML документ, контролирующий большинство аспектов рендеринга объектов, такие как цвет и ширина линий, изображающих различные типы дорог. Aормат не отличается компактностью и простотой восприятия, но зато он мощный и гибкий. В подвижной карте мы используем версию osm.xml, похожую на файл из SVN: applications/rendering/mapnik/osm.xml. Смотрите Mapnik Example для примера более простой таблицы стилей.

Синтаксис таблицы стилей описан здесь: XMLConfigReference. MinScaleDenominator и MaxScaleDenominator указывают минимальный и максимальный масштабы, на которых должны рендериться определённые символы/объекты.

Вы можете поиграть с со стилями mapnik онлайн здесь: http://dev.openstreetmap.nl/~panman/styledit/ Ссылка не работает...

Посмотрите Cascadenik и Spreadnik, если вы планируете разрабатывать комплексные таблицы стилей.
Для WYSIWYG разработки стилей вы можете использовать QGIS с аддоном mapnik style.

Региональное отображением имен

Для рендеринга имён name:* вместо стандартных тегов name там, где они присутствуют, вы можете либо предварительно обработать данные, либо впоследствии изменить базу данных postgis.

Настройка default.style

Если вы правите default.style, например, чтобы добавить в базу велосипедные дорожки или транспортные сети, имейте в виду, что osm2pgsql не использует default.style в рабочей директории, вместо этого он ищет /usr/share/osm2pgsql/default.style.

Можете использовать параметр --style для указания вашего собственного файла default.style. Выполните osm2pgsql -h для дополнительной информации.

Смотрите также