Печать карты на бумаге с собственного tms и wms сервера

Всем доброго времени суток!

Подскажите пожалуйста, как правильно решить подобную задачу:

Условие:

  1. Есть сервер с тайлами, отдающий тайлы через modtile (tms) - подложка
  2. Там же установлен tilecache-сервер, который отдаёт прозрачные слои со специфичными данными, накладываемыми поверх подложки (tms) - слоёв может быть много

Задача:
Необходимо распечатать на листе A0/A1 карту определённого района с определённым масштабом так, чтобы поверх подложки (описанный в пункте 1 tms-сервер, либо Bing-снимки) были нанесены объёкты с определённых слоёв, указанных в пункте 2 условия.

Подскажите, пожалуйста, как правильнее сделать.

Пока видится три варианта:

  1. Копать и пилить https://github.com/migurski/paperwalking.git (сырец сайта http://walking-papers.org/)
  2. Проанализировать ссылки на png, выдаваемые серверами, написать код, который будет скачивать нужные квадраты всех нужных слоёв с сервера, склеить эти png с помощью утилит (imagemagick?), свести эти слои в единый png-файл (imagemagick?), выдать пользователю готовый png в многие мегабайты.
  3. Реализовать какой-то другой вариант :slight_smile:

Второй вариант или QGis.

Насколько понимаю это умеет SASPlanet.

один минус - в саспланете нет кнопочки “Распечатать” :slight_smile:
а так, он еще функциональнее.

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

не обращай внимание, сие - шутка весьма глупая, на уровне почему айфон 5с кофе не варит :slight_smile:
чтобы бумагу не марать, я слои нарезал и на цифровик заливал. вполне юзабельно получалось.

у саспланеты нету систем внешнего управления, но можно написать скрипты при помощи Autoit.

Стесняюсь спрсить, а какой масштаб?
Дело в том, что если территория велика (судя по фомату A0 можно такое предположить), а тайлы в традиционной для OSM проекции Меркатора, то масштаб изображения будет переменным с юга на север. Так что понадобится не только привести изображение к какому-то разрешению для печати для получения нужного масштаба, но и еще - перепроецировать его, скажем - в UTM, дабы избежать искажений.
Есть смысл смотреть в сторону ГИС, к числу которых SASPlanet не относится.

Попробовал SASPlanet, но не до конца разобрался - надо будет на работе поглядеть плотнее…

Пока суть да дело - написал пару скриптов на баше, которые выкачивают с указанной области нужные слои и склеивают всё это в набор файлов:
https://github.com/progserega/wms2png

Весь Приморский край.

Хм, ну дак я выкачиваю квадраты 256x256 и клею их - фактически это просто “портянка” того, что показывает мой локальный сайт на leaflet… Зачем что-то конвертировать?

Разве что за тем, чтобы можно было более менее нормально работать с картами северных районов, где меркаартор всё растягивает… И если там пытаться совмещать, к примеру, wms-слой в меркаарторе и снимок с самолёта - то привязка будет плыть. Вы это имели ввиду или что-то иное?

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

Приморский край - не Красноярский, расхождение масштаба (от крайнего юга до крайнего севера) составит порядка cos(42°)/cos(48°) ~ 1,11

Я имел в виду то, что если кто-то по карте в проекции Меркатора (там нет удвоенного “а”) собирается измерять расстояния линейкой или как-то еще, при этом охват карты с севера на юг (который мы теперь знаем, но не знали) вдруг оказался бы большим, то так делать было бы нельзя из-за переменного масштаба, а нужно было бы перепроецировать все это дело.
Вы же сами знаете, что Меркатор все растягивает тем сильнее, чем ближе к северу. Важно не северный район или южный, а важно, сколько карта охватывает с севера на юг.
Ну и если бы вы захотели километровую сетку наложить - все равно пришлось бы тащить в ГИС.

Для повышения образованности, во что надо перепроицировать ?

Я уже писал - например, в UTM.

Я тут еще вот что забыл написать.
Есть чудесная штука - wms-минидрайвер для GDAL. Большинство в курсе, что GDAL умеет конвертировать растровые картографические форматы. Но на самом деле, возможности чуть шире - в виде входного файла можно указать xml-файл с описанием тайлового сервиса, а на выходе получить готовую склейку. Тормоз, конечно, но работает.
http://www.gdal.org/frmt_wms.html
Пример минидрайвера для OSM есть тут http://danielbrannstrom.wordpress.com/2011/01/16/exporting-data-from-openstreetmap-using-gdal/
Еще может оказаться полезной для производительности вот эта ссылка (см. ответ):
http://gis.stackexchange.com/questions/44717/whats-the-difference-between-gdalwarp-and-gdal-merge-for-mosaicing

Спасибо всем за информацию!