SASGIS

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

SAS.Wiki

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

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

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


zmp

Это старая версия документа.


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

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

Готовые zmp распространятся через git-репозиторий. SASPlanet по умолчанию поставляется с основным набором карт.

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

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

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

Структура ZMP

Коллекция zmp карт располагается в подпапках Maps программы. Изначально в программе использовались только zip-архивы с расширением .zmp, затем появилась возможность хранить описание в неархивированных папках. Каждый zmp может содержать следующие файлы и папки:

  • params.txt (обязательно) — параметры карты;
  • GetUrlScript.txt (обязательно, если не используется упрощенное добавление карт) — скрипт, отвечающий за формирование ссылки на тайл карты и пользовательских заголовков;
  • info.txt — словесное описание карты в HTML;
  • графические файлы, ссылка на которые размещена в info.txt (например, легенда карты);
  • EmptyTiles — директория, содержащая образцы тайлов, которые не будут скачиваться с сервера (например, полностью прозрачные тайлы). В некоторых случаях сервер отдаёт «пустышки» в формате, отличном от формата обычных тайлов, например, обычные тайлы — jpg, а «пустышка» — png. SAS.Планета же переписывает все принятые тайлы в формат, указанный в параметре Ext (см. ниже). В таких случаях в качестве образцов необходимо использовать исходные файлы, присланные сервером, а не брать их из кэша программы.
  • 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)).

params.txt

Параметры файла params.txt:

Раздел [PARAMS]

  • asLayer — если равно 1, карта используется как слой, накладываемый поверх основной карты.
  • pnum — порядковый номер карты в меню. Не требуется.
  • GUIDглобальный уникальный идентификтаор карты. Просто случайный номер, можно сгенерировать онлайн
  • ParentSubMenu — название пункта родительского меню для данной карты на русском языке.
  • ParentSubMenu_en — название пункта родительского меню для данной карты на английском языке.
  • ParentSubMenu_uk — название пункта родительского меню для данной карты на украинском языке.
    • существует возможность указать иерархическое меню разделив пункты символом «\» (например ParentSubMenu=Google\Планеты)
  • name — имя карты на русском языке.
  • name_en — имя карты на английском языке.
  • name_uk — имя карты на украинском языке.
  • CacheType — тип кэша, в который будут записываться тайлы данной карты:
    • 0 — по умолчанию
    • 1 — GoogleMV
    • 2 — SAS.Planet
    • 3 — EarthSlicer 1.95
    • 4 — GlobalMapper Tiles (GMT) cache_gmt/z{z}/{x}/{y}{ext}
    • 41 — GlobalMapper Aux
    • 42 — GlobalMapper Bing
    • 43 — Mobile Atlas Creator (MOBAC) cache_ma/{z}/{x}/{y}{ext}
    • 44 — OsmAnd+ Tiles
    • 45 — Tile Map Service (TMS) cache_tms/{z}/{x}/{-y}{ext}
    • 5 — Google Earth
    • 51 — GoogleEarth Terrain
    • 6 — BerkeleyDB
    • 61 — BerkeleyDB (Versioned)
    • 7 — DBMS (СУБД)
    • 71 — SQLite3
    • 8 — GeoCacher
    • 9 — RAM (на диск не записываются)
  • DefURLBase — неизменная часть адреса ссылки на тайлы карты. Или шаблон URL адреса в случае упрощенного добавления карт.
  • projection — проекция карты. 1 — Меркатор на сфероид, 2 — Меркатор на эллипсоид, 3 — широта/долгота.
  • sradiusa — радиус большой полуоси эллипсоида.
  • sradiusb — радиус меньшей полуоси эллипсоида.
  • EPSG — код проекции карты.
  • NameInCache — имя папки в кэше, в которую будут записываться тайлы карты.
  • separator — разделитель в виде горизонтальной черты, отображаемый в меню после данной карты (1 — отображать, 0 — не отображать).
  • Ext — расширение тайла (.jpg, .png, .bmp, .gif). Задаёт формат, в котором принудительно будут сохраняться карты, если ContentType другой.
  • UseDwn — если равно 1, то скачивать тайлы карты разрешено.
  • Sleep — величина паузы между загрузками отдельных тайлов в миллисекундах.
  • DefHotKey — сочетание горячих клавиш для данной карты.
  • ContentType — тип загружаемых данных (например, image/jpeg, image/png). Можно использовать одновременно несколько типов.
  • 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 - удалять ВСЕ тайлы из мем-кэша, если истёк TTL у самого СТАРОГО тайла; 1 - удалять ВСЕ тайлы из мем-кэша, если истёк TTL у самого МОЛОДОГО тайла; 2 - удалять только те тайлы, у которых истёк TTL. По-умолчанию включён режим 1.
  • RestartDownloadOnMemCacheTTL - автоматически перезакачивать тайлы в пределах видимой области экрана при очистке мем-кэша (работает только если 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, даже если парсер смог считать настройки из параметров полигона

Некоторые из параметров карты могут быть изменены внутри программы без редактирования файла 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.

Перевод этой страницы: