Я хочу добавить изображение карты в PDF-файл, используя TCPDF в PHP.
Как я могу это сделать? Кроме того, я хочу использовать пользовательский поставщик плиток (Mapnik, немецкий стиль). Есть ли какие-либо решения или подходы, чтобы это работало?
Заранее спасибо!
Вы можете сделать это с локальной копией mapnik и Nik4.
Тебе понадобиться:
Это довольно сложный путь, но есть и хорошие новости: вы можете использовать Docker dkiselev / nik4web image, с предустановленными postgis, mapnik, nik4 и некоторыми другими вещами.
sudo apt-get install docker
# as root
docker pull dkiselev/nik4web
Создать контейнер и запустить его
docker run -i -t -P dkiselev/nik4web /bin/bash
#from container
startup
После этого откройте localhost / nik4, и вы получите карту со стилем vith 2 для одного из штатов России. Так что вам нужно изменить стиль и область.
Во-первых, измените стиль
Стиль по умолчанию в /home/osm/styles/openstreetmap-carto
вложенная папка. Это в картосссе. Так что получите «German Style», если это в carto css, то скомпилируйте его с carto.
su - osm
# save default compiled osm style
mv styles/openstreetmap-carto/osm.xml styles/openstreetmap-carto/osm-def.xml
# compile german style
carto german_stye.mml > german_style_mapnik.xml
#replace default osm style
mv -f german_style_mapnik.xml styles/openstreetmap-carto/osm-def.xml
Если он уже распространен как правила рендеринга mapnik в xml, замените styles/openstreetmap-carto/osm.xml
,
И второй шаг — загрузить новую территорию с помощью osm2pgsql. Файл стиля osm2pgsql для стиля osm по умолчанию (я думаю, немецкий стиль использует тот же самый) /home/osm/styles/openstreetmap-carto/openstreetmap-carto.style
osm2pgsql --create --slim --cache 1000 --number-processes 2 --hstore --style /home/osm/styles/openstreetmap-carto/openstreetmap-carto.style --multi-geometry --database gis /path/to/osm/data/for/your/region.pbf
Это все. После того, как вы запустите postgresql, apache2 и mapnik (см. /bin/startup
) вы получите свой собственный OSM со своим собственным стилем и с экспортом SVG, PDF и PNG.
Других решений пока нет …