Это старая версия документа.
Формат zmp и создание карт
Каждый картографический сервис в SASPlanet описывается в «zmp». Это zip-архив или папка с расширением .zmp
, в которой хранится текстовое описание сервиса в особом формате. Один «zmp» соответствует одной карте и независим от других. Сама аббревиатура является производным от слов: zip map.
Готовые zmp распространяются через git-репозиторий отдельно от SAS.Planet. Сразу после установки программы обновите набор zmp.
Общий принцип
SAS.Planet скачивает тайлы с сервера и сохраняет их в кеш. В zmp описывается, как формируется ссылка на конкретный тайл и особенности HTTP-запроса на скачивание с конкретного сервера. При создании zmp чаще всего копируют поведение браузера при просмотре online-карт. Удобно пользоваться встроенными в браузер инструментами веб-разработчика, так, для Firefox нажмите F12, после чего откройте веб-страницу с картой.
Обучающие примеры:
Структура ZMP
Коллекция zmp карт располагается в подпапках Maps
программы. Изначально в программе использовались только zip-архивы с расширением .zmp
, затем появилась возможность хранить описание в неархивированных папках. Каждый zmp может содержать следующие файлы и папки:
params.txt (обязательно) — параметры карты;
-
info.txt — словесное описание карты в
HTML;
24.bmp — файл иконки, отображаемой на панели инструментов. Содержимое этого файла — изображение произвольного размера в формате BMP, PNG, ICO и других (но с расширением BMP). В ранних версиях программы требовались иконки 18.bmp
(BMP, 18×18 pix, цвет фона RGB(255,0,255)) и 24.bmp
24×24 pix, цвет фона RGB(255,0,255)).
графические файлы, ссылка на которые размещена в info.txt
(например, легенда карты);
EmptyTiles — директория, содержащая образцы тайлов, которые не будут сохраняться после скачивания с сервера (например, полностью прозрачные тайлы). В некоторых случаях сервер отдаёт «пустышки» в формате, отличном от формата обычных тайлов, например, обычные тайлы — jpg, а «пустышка» — png. SAS.Planet же переписывает все принятые тайлы в формат, указанный в параметре Ext
(см. ниже). В таких случаях в качестве образцов необходимо использовать исходные файлы, отправленные сервером, а не брать их из кэша программы.
params.txt
Параметры файла params.txt:
Раздел [PARAMS]
asLayer — если равно 1, карта используется как слой, накладываемый поверх основной карты.
pnum — порядковый номер карты в меню. Не обязателен.
-
ParentSubMenu — название пункта родительского меню для данной карты на русском языке.
ParentSubMenu_en — название пункта родительского меню для данной карты на английском языке.
ParentSubMenu_uk — название пункта родительского меню для данной карты на украинском языке.
name — имя карты на русском языке.
name_en — имя карты на английском языке.
name_uk — имя карты на украинском языке.
-
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. Кеш легко подключается к JOSM, QGIS:tms:file:///home/user/SAS.Planet/cache_ma/vesat/{z}/{x}/{y}.jpg
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 | cache_tms/ /{z}/{x}/{-y}.{ext} | Тикет 2848. Тип кеша известен как TMS (спецификация osgeo.org). OSM Wiki. |
5 | Google Earth | cache_ge/ | |
51 | GoogleEarth Terrain | | |
6 | BerkeleyDB | cache_db/ | Wikipedia |
61 | BerkeleyDB (Versioned) | | |
7 | DBMS (СУБД) | | |
71 | SQLite3 | cache_sqlite/ /z{z+1}/0/0/0.0.sqlitedb | Тикет 1376. Создаётся несколько баз SQLite. |
72 | MBTiles | Экспорт *.mbtiles | Тикет 1376, OSM wiki. Формат основан на SQLite, но так ограничен, что пригоден только для экспорта. |
8 | GeoCacher | | |
9 | RAM (на диск не записываются) | | Тикет 1755 |
-
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. По-умолчанию включён режим 1.
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]
Раздел [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, даже если парсер смог считать настройки из параметров полигона
Некоторые из параметров карты могут быть изменены внутри программы без редактирования файла params.txt
. Для этого нужно зайти в Параметры→Параметры карты или нажать Ctrl+Alt+P. Пользовательские изменения настроек карт сохраняются в файле Maps/maps.ini
.
GetUrlScript.txt
Файл GetUrlScript.txt содержит скрипт, формирующий полные адреса ссылок на тайлы данной карты. Скрипты пишутся на обычном Pascal.
Основными параметрами тайла являются масштаб и координаты по осям x
и y
. Масштаб обозначается переменной GetZ
(начинается с единицы), координаты по осям x
и y
- соответственно переменными GetX
и GetY
. Эти переменные привязаны к тайловой сетке, принятой для Google Maps.
info.txt
Файл info.txt содержит текстовую информацию о карте. Используется синтаксис HTML (в частности, абзацы надо разделять тегом <BR>).
Также возможен вывод графических файлов (например, легенды карты), через тег <img src=”path\to\image.bmp”/>
. Ссылаться можно в т.ч. на изображения в папке zmp.