SASGIS

Веб-картография и навигация

SAS.Wiki

Веб-картография и навигация

Инструменты пользователя

Инструменты сайта


zmp

Формат zmp и создание карт

Каждый картографический сервис в SASPlanet описывается в «zmp». Это папка или zip-архив с расширением .zmp, в котором хранится текстовое описание сервиса в особом формате. Один «zmp» соответствует одной карте и независим от других. Сама аббревиатура является производным от слов: zip map.

Коллекция zmp расположена в подпапках Maps в виде дерева каталогов и распространяется через git-репозитарий отдельно от SAS.Planet. В прошлом в программе использовались только zip-архивы с расширением .zmp. Сразу после установки программы обновите набор zmp.

Общий принцип

SAS.Planet скачивает тайлы с сервера и сохраняет их в тайловый кеш. В zmp описывается, как формируется ссылка на конкретный тайл и особенности HTTP-запроса на скачивание с конкретного сервера. При создании zmp чаще всего копируют поведение браузера при просмотре online-карт. Удобно пользоваться встроенными в браузер инструментами веб-разработчика, так, для Firefox нажмите F12, после чего откройте веб-страницу с картой.

Обучающие примеры:

Структура ZMP

Каждый zmp может содержать следующие файлы и папки:

  • params.txt — описывает основные параметры карты или слоя, единственный файл, который является обязательным;
  • GetUrlScript.txt — скрипт, отвечающий за формирование ссылки на тайл карты и пользовательских заголовков; не нужен если используется упрощенное добавление карт). Скрипты пишутся на обычном Pascal. Основными параметрами тайла являются масштаб и координаты по осям x и y. Масштаб обозначается переменной GetZ (начинается с единицы), координаты по осям x и y - соответственно переменными GetX и GetY. Эти переменные привязаны к тайловой сетке, принятой для Google Maps;
  • 24.bmp — файл иконки, отображаемой на панели инструментов. Содержимое этого файла — изображение произвольного размера в формате BMP, PNG, ICO и других, но имя должно быть 24.bmp. В ранних версиях программы требовались иконки 18.bmp (BMP, 18×18 pix, цвет фона RGB(255,0,255)) и 24.bmp 24×24 pix, цвет фона RGB(255,0,255)).
  • info.txt — словесное описание карты в подмножестве HTML (в частности, абзацы надо разделять тегом <BR>). Возможен вывод графических файлов (например, легенды карты), через тег <img src=”path\to\image.bmp”/>. Ссылаться можно в т.ч. на изображения в папке zmp.
  • графические файлы, ссылка на которые размещена в info.txt (например, легенда карты);
  • EmptyTiles — директория, содержащая образцы файлов, которые отдаёт сервер вместо пустых (полностью прозрачных) или отсутствующих тайлов, а также в случае бана. Такие тайлы не будут сохраняться в SAS.Planet. В некоторых случаях сервер отдаёт нормальные тайлы в одном формате (например image/jpeg), а «пустышки» в другом (например полностью прозрачный image/png). Поскольку SAS.Planet конвертирует все принятые тайлы в формат, указанный в параметре Ext (см. ниже), то в качестве образцов необходимо использовать исходные файлы, отправленные сервером, а не брать их из кэша программы.

params.txt

Некоторые из параметров карты могут быть изменены внутри программы без редактирования файла params.txt. Для этого нужно зайти в Параметры→Параметры карты или нажать Ctrl+Alt+P. Пользовательские изменения настроек карт сохраняются в файле Maps/maps.ini.

Раздел [PARAMS]

  • asLayer — если равно 1, карта используется как слой, накладываемый поверх основной карты.
  • pnum — порядковый номер карты в меню. Не обязателен.
  • GUID — случайный номер, можно сгенерировать онлайн
  • ParentSubMenu — название пункта родительского меню для данной карты на русском языке.
  • ParentSubMenu_en — название пункта родительского меню для данной карты на английском языке.
  • ParentSubMenu_uk — название пункта родительского меню для данной карты на украинском языке.
    • существует возможность указать иерархическое меню разделив пункты символом «\» (например ParentSubMenu=Google\Планеты)
  • name — имя карты на русском языке.
  • name_en — имя карты на английском языке.
  • name_uk — имя карты на украинском языке.
  • CacheType — можно переопределить тип кэша из списка в исходном коде, в который будут записываться тайлы данной карты. NB! Некоторые форматы кеша подходят только для экспорта тайлов.
CacheType Название Путь Комментарий
0 По умолчанию Ранее использовался 2, теперь 71
1 GoogleMV cache_old/ /{z+1}/{q}.{ext} Quadkey
2 SAS.Planet cache/
3 EarthSlicer 1.95 cache_es/
4 GlobalMapper Tiles (GMT) cache_gmt/ /z{z}/{x}/{y}.{ext}
41 GlobalMapper Aux cache_gmt/ Не используется?
42 GlobalMapper Bing cache_gmt/ /{z}/{y}/{x}.{ext} Тикет 780
43 Mobile Atlas Creator (MOBAC) cache_ma/ /{z}/{x}/{y}.{ext} Тикет 1936. Тип кеша известен как Slippy map. Нумерация тайлов используется в OpenStreetMap и Google. Кеш подключается к QGIS, MapProxy. Для использования с JOSM достаточно:
tms:file:///home/user/SAS.Planet/cache_ma/vesat/{z}/{x}/{y}.jpg  # Linux
tms[18]:file:///c:/SAS.Planet/cache_ma/vesat/{z}/{x}/{y}.jpg  # Windows
44 OsmAnd+ Tiles Экспорт {z}/{x}/{y}.{ext}.tile Тикет 884. Не то же самое что «OsmAnd (SQLite3)» *.sqlitedb (тикет 3577)
45 Tile Map Service (TMS) cache_tms/ /{z}/{x}/{-y}.{ext} Тикет 2848. (спецификация osgeo.org).
5 Google Earth cache_ge/
51 GoogleEarth Terrain
6 BerkeleyDB cache_db/
61 BerkeleyDB (Versioned)
7 DBMS (СУБД)
71 SQLite3 cache_sqlite/ /z{z+1}/0/0/0.0.sqlitedb Тикет 1376. Создаётся несколько баз SQLite.
72 MBTiles Экспорт *.mbtiles Тикет 1376, (спецификация MapBox). Используется одна база SQLite, но формат так ограничен, что пригоден только для экспорта.
8 GeoCacher
9 RAM (на диск не записываются) Тикет 1755
  • DefURLBase — неизменная часть адреса ссылки на тайлы карты. Или шаблон URL адреса в случае упрощенного добавления карт.
  • projection — проекция карты. 1 — меркатор на сфероид, 2 — меркатор на эллипсоид, 3 — широта/долгота.
  • sradiusa — радиус большой полуоси эллипсоида.
  • sradiusb — радиус меньшей полуоси эллипсоида.
  • EPSG — код проекции карты.
  • NameInCache — имя папки в кэше, в которую будут записываться тайлы карты.
  • separator — разделитель в виде горизонтальной черты, отображаемый в меню после данной карты (1 — отображать, 0 — не отображать).
  • Ext — расширение тайла (.jpg, .png, .bmp, .gif). Задаёт формат, в котором принудительно будут сохраняться карты, если ContentType другой.
  • UseDwn — если равно 1, то скачивать тайлы карты разрешено.
  • Sleep — величина паузы между загрузками отдельных тайлов в миллисекундах.
  • DefHotKey — сочетание горячих клавиш для данной карты.
  • ContentType — список форматов изображений (например, ContentType=image/jpeg,image/png), которые SAS.Planet ожидает получить от сервера. При несовпадении формата (например сервер вернул текст, а не картинку) отображается ошибка.
  • DefaultContentType — тип, который будет использоваться, если сервер не вернул никакого типа или если стоит игнорирование типа, возвращаемого сервером.
  • IgnoreContentType — игнорирование типа, возвращаемого сервером.
  • DetectContentType - если равно 1, то после загрузки тайла будет выполнятся анализ его содержимого и коррекция поля Content-Type в заголовках ответа сервера
  • MimeTypeSubst — подстановка типа загружаемых данных (например, «image/png8bit=image/png»).
  • TILERLEFT, TILERRIGHT, TILERTOP, TILERBOTTOM — параметры для обрезки скачиваемых тайлов соответственно слева, справа, сверху и снизу. Если получившийся прямоугольник не совпадает с квадратом 256×256, он ещё и растягивается или сжимается до этого размера.
  • UsePreloadPage — если равно 1, использовать предварительно загружаемую страницу (обязательно следует указать её адрес).
  • PreloadPage — адрес предварительно загружаемой страницы.
  • RequestHead — пользовательские HTTP-заголовки (headers), передаваемые на сервер. Поля должны отделяться символами \r\n (пример: RequestHead=Referer: maps.kosmosnimki.ru\r\nConnection: Keep-Alive).
  • Version — версия тайлов, соответствует переменной Version в GetUrlScript.txt.
  • MaxConnectToServerCount — максимальное число потоков. Значение по умолчанию устанавливается в секции [ZmpDefaultParams] файла SASPlanet.ini
  • IsUseDownloaderInScript=1 - использование скачивания внутри скрипта добавить отсюда
  • UseMemCache - использовать кэш в памяти (при CacheType=9 (RAM-кэш) отключение данной опции приведёт к ошибке), включено по-умолчанию
  • MemCacheCapacity - количество тайлов кэшируемых в память. По-умолчанию = 100
  • MemCacheTTL - время жизни тайлов (в миллисекундах), кэшируемых в память. По-умолчанию = 60000 мс. (1 мин)
  • MemCacheClearStrategy - стратегия очистки (по TTL) кэшируемых в память тайлов. Принимает значения:
    • 0 - удалять ВСЕ тайлы из RAM-кэша, если истёк TTL у самого СТАРОГО тайла;
    • 1 - удалять ВСЕ тайлы из RAM-кэша, если истёк TTL у самого МОЛОДОГО тайла (включён по-умолчанию);
    • 2 - удалять только те тайлы, у которых истёк TTL;
    • 3 - НЕ удалять тайлы по TTL.
  • RestartDownloadOnMemCacheTTL - автоматически перезакачивать тайлы в пределах видимой области экрана при очистке RAM-кэша (работает только если UseMemCache=1). По-умолчанию отключено.
  • License=© - текст лицензии, который будет выводиться в левом верхнем углу карты. Требуется для соблюдения условий распространения некоторых карт.
  • LayerZOrder - порядок отображения слоёв, по умолчанию 0. Слои с большим значением будут отображаться поверх слоев с меньшим значением
  • IsReadOnly=1 - использовать кэш в режиме «Только чтение»
  • IteratorSubRectSize - размеры по вертикали и горизонтали, измеряемые в стандартных тайлах (256х256 пикселей) при скачивании так называемых «мегатайлов», то есть тайлов с размерами более чем 256х256 пикселей. (Только в SACS)
  • IteratorSubRectAlign - если 0 - всё по умолчанию, если не 0 (1 или 2), то осуществляется точная привязка к размеру мегатайла. Если же не 1, а 2 - то будет дополнительно увеличен размер просматриваемой области, чтобы возможно было скачать даже, например, один левый верхний тайл в режиме кэш+интернет при сдвиге окна влево и вверх. Толкование малопонятное, интересующимся смотреть здесь. Только в SACS.

Раздел [ViewInfo]

  • EPSG — код проекции карты при выводе на экран.

В ночных версиях появилась возможность использовать более продвинутый хоть и медленный парсер kml, c поддержкой чтения оформления меток, линий и полигонов или принудительно задать свои настройки для конкретного zmp. Для того чтобы включить и настроить эти функции используются следующие разделы:

Раздел [PARAMS_Vector]

  • UseAppearance — если равно 1, то включается использование оформления из zmp и загруженных векторных тайлов

Раздел [PARAMS_Vector_Point] Настройки оформления точек.

  • IconName — имя иконки по-умолчанию
  • IsForceIconName — если равно 1 (это значение по-умолчанию), то будет принудительно использовать заданную в параметре IconName, даже если парсер смог считать имя иконки из праметров точки
  • IconSize — размер иконки по-умолчанию
  • IsForceIconSize — если равно 1 (это значение по-умолчанию), то будет принудительно использовать размер иконки заданный в IconSize, даже если парсер смог считать размер из праметров точки

Раздел [PARAMS_Vector_Line] Настройки оформления линий

  • LineColor — цвет линии по-умолчанию
  • IsForceLineColor — если равно 1 (это значение по-умолчанию), то будет принудительно использовать цвет из LineColor, даже если парсер смог считать настройки из параметров линии
  • LineWidth — толщина линии по-умолчанию
  • IsForceLineWidth — если равно 1 (это значение по-умолчанию), то будет принудительно использовать толщину линии заданную в LineWidth, даже если парсер смог считать настройки из параметров линии

Раздел [PARAMS_Vector_Poly] Настройки оформления полигонов

  • LineColor — цвет границы полигона по-умолчанию
  • IsForceLineColor — если равно 1 (это значение по-умолчанию), то будет принудительно использовать цвет из LineColor, даже если парсер смог считать настройки из параметров полигона
  • LineWidth — толщина границы полигона по-умолчанию
  • IsForceLineWidth — если равно 1 (это значение по-умолчанию), то будет принудительно использовать толщину линии заданную в LineWidth, даже если парсер смог считать настройки из параметров полигона
  • FillColor — цвет заливки полигона по-умолчанию
  • IsForceFillColor — если равно 1 (это значение по-умолчанию), то будет принудительно использовать цвет из FillColor, даже если парсер смог считать настройки из параметров полигона
Перевод этой страницы: