SASGIS

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

SAS.Wiki

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

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

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


zmp

Различия

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

Ссылка на это сравнение

zmp [19/02/2021 21:56]
radioxoma Тайловая сетка?
zmp [05/07/2023 09:20] (текущий)
138.199.27.248 MemCacheClearStrategy
Строка 1: Строка 1:
 ====== Формат zmp и создание карт ====== ====== Формат zmp и создание карт ======
  
-Каждый картографический сервис в SASPlanet описывается в "​zmp"​. Это zip-архив ​или папка ​с расширением ''​.zmp'',​ в которой хранится текстовое описание сервиса в особом формате. Один "​zmp"​ соответствует одной карте и независим от других. Сама аббревиатура является производным от слов: **z**ip **m**a**p**.+Каждый картографический сервис в SASPlanet описывается в "​zmp"​. Это ​папка или ​zip-архив с расширением ''​.zmp'',​ в котором хранится текстовое описание сервиса в особом формате. Один "​zmp"​ соответствует одной карте и независим от других. Сама аббревиатура является производным от слов: **z**ip **m**a**p**.
  
-Готовые zmp распространяются через [[основной_репозиторий|git-репозиторий]] отдельно от SAS.Planet. Сразу после установки программы обновите набор zmp.+Коллекция zmp расположена ​в подпапках ''​Maps''​ в виде дерева каталогов и распространяется через [[основной_репозиторий|git-репозитарий]] отдельно от SAS.Planet. В прошлом в программе использовались только zip-архивы с расширением ''​.zmp''​. Сразу после установки программы обновите набор zmp.
  
 ===== Общий принцип ===== ===== Общий принцип =====
-SAS.Planet скачивает [[тайл|тайлы]] с сервера и сохранить их в кеш. В zmp описывается,​ как формируется ссылка на конкретный тайл и особенности HTTP-запроса на скачивание с конкретного сервера. При создании zmp чаще всего копируют поведение браузера при просмотре online-карт. Удобно пользоваться встроенными в браузер инструментами веб-разработчика,​ так, для Firefox нажмите //F12//, после чего откройте веб-страницу с картой.+SAS.Planet скачивает [[тайл|тайлы]] с сервера и сохраняет их в тайловый ​кеш. В zmp описывается,​ как формируется ссылка на конкретный тайл и особенности HTTP-запроса на скачивание с конкретного сервера. При создании zmp чаще всего копируют поведение браузера при просмотре online-карт. Удобно пользоваться встроенными в браузер инструментами веб-разработчика,​ так, для Firefox нажмите //F12//, после чего откройте веб-страницу с картой.
  
 Обучающие примеры:​ Обучающие примеры:​
Строка 13: Строка 13:
   * [[Простой пример с плейсхолдерами]]   * [[Простой пример с плейсхолдерами]]
   * [[Пример порезки на тайлы]]   * [[Пример порезки на тайлы]]
-  * [[Описание Паскаль скриптов]]+  * [[Описание Паскаль скриптов]] ​(GetUrlScript.txt)
   * [[Как скачивать нужные масштабы и не скачивать ненужные]]   * [[Как скачивать нужные масштабы и не скачивать ненужные]]
   * Сложный пример (подключение dll)   * Сложный пример (подключение dll)
Строка 20: Строка 20:
 ===== Структура ZMP ===== ===== Структура ZMP =====
  
-Коллекция zmp карт располагается в подпапках ''​Maps''​ программы. Изначально в программе использовались только zip-архивы с расширением ''​.zmp'',​ затем появилась возможность хранить описание в неархивированных папках. ​Каждый zmp может содержать следующие файлы и папки:+Каждый zmp может содержать следующие файлы и папки:
  
-  * **params.txt** ​(обязательно) — параметры карты;​ +  * **params.txt** ​— описывает основные ​параметры карты ​или слоя, единственный файл, который **является обязательным**
-  * **[[описание_паскаль_скриптов|GetUrlScript.txt]]** ​(обязательноесли не используется [[простой_пример_с_плейсхолдерами|упрощенное добавление карт]]) ​— скрипт, отвечающий за формирование ​ссылки на тайл ​карты ​и пользовательских заголовков; +  * **[[описание_паскаль_скриптов|GetUrlScript.txt]]** ​— скрипт, ​отвечающий ​за формирование ссылки на тайл карты и пользовательских заголовков; ​не нужен если ​используется [[простой_пример_с_плейсхолдерами|упрощенное добавление карт]]). Скрипты пишутся на обычном Pascal. Основными параметрами [[тайл|тайла]] являются масштаб и координаты по осям ''​x''​ и ''​y''​. Масштаб обозначается переменной ''​GetZ''​ (начинается с единицы),​ координаты по осям ''​x''​ и ''​y''​ - соответственно переменными ''​GetX''​ и ''​GetY''​. Эти ​переменные привязаны к [[Тайл|тайловой сетке]],​ принятой для [[maps:​Google Maps|Google Maps]]
-  * **info.txt** — словесное ​описание карты в HTML+  * **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))
-  * **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** — словесное описание карты в подмножестве HTML (в частности,​ абзацы надо разделять тегом <​BR>​). Возможен вывод графических файлов (например,​ легенды карты),​ через тег ''<​img src=”path\to\image.bmp”/>''​. Ссылаться можно в т.ч. на изображения в папке zmp.
   * графические файлы, ссылка на которые размещена в ''​info.txt''​ (например,​ легенда карты);​   * графические файлы, ссылка на которые размещена в ''​info.txt''​ (например,​ легенда карты);​
-  * **EmptyTiles** — директория,​ содержащая образцы ​тайлов, которые ​не будут сохраняться после скачивания с сервера (например, ​полностью прозрачные тайлы). В некоторых случаях сервер отдаёт ​«пустышки» в формате, отличном ​от формата обычных тайлов, ​например, обычные тайлы — jpg, а «пустышка» — png. SAS.Planet ​же переписывает все принятые тайлы в формат,​ указанный в параметре ''​Ext''​ (см. ниже). В таких случаях ​в качестве образцов необходимо использовать исходные файлы, отправленные сервером,​ а не брать их из кэша программы.+  * **EmptyTiles** — директория,​ содержащая образцы ​файлов, которые ​отдаёт сервер вместо пустых ​(полностью прозрачных) или отсутствующих тайлов,​ а также в случае бана. Такие тайлы ​не будут сохраняться в SAS.Planet. В некоторых случаях сервер отдаёт ​нормальные тайлы в одном формате (например ​//​image/​jpeg//​), а «пустышки» в другом (например полностью прозрачный //image/png//)Поскольку ​SAS.Planet ​конвертирует все принятые тайлы в формат,​ указанный в параметре ''​Ext''​ (см. ниже)то в качестве образцов необходимо использовать исходные файлы, отправленные сервером,​ а не брать их из кэша программы.
  
  
 ===== params.txt ===== ===== params.txt =====
  
-Параметры файла ​**params.txt**:+> Некоторые из параметров карты могут быть изменены внутри программы без редактирования ​файла ​''​params.txt''​. Для этого нужно зайти в //​Параметры->​Параметры карты//​ или нажать //​Ctrl+Alt+P//​. Пользовательские изменения настроек карт сохраняются в файле ''​Maps/​maps.ini''​.
  
 Раздел **[PARAMS]** Раздел **[PARAMS]**
Строка 42: Строка 42:
   *  **ParentSubMenu_en** — название пункта родительского меню для данной карты на английском языке.   *  **ParentSubMenu_en** — название пункта родительского меню для данной карты на английском языке.
   *  **ParentSubMenu_uk** — название пункта родительского меню для данной карты на украинском языке.   *  **ParentSubMenu_uk** — название пункта родительского меню для данной карты на украинском языке.
-     ​* ​ существует возможность указать иерархическое меню разделив пункты символом "​\" ​ (например ''​ParentSubMenu=Google\Планеты''​)+     * существует возможность указать иерархическое меню разделив пункты символом "​\"​ (например ''​ParentSubMenu=Google\Планеты''​)
   *  **name** — имя карты на русском языке.   *  **name** — имя карты на русском языке.
   *  **name_en** — имя карты на английском языке.   *  **name_en** — имя карты на английском языке.
   *  **name_uk** — имя карты на украинском языке.   *  **name_uk** — имя карты на украинском языке.
-  *  **CacheType** — можно переопределить тип кэша, в который будут записываться тайлы данной карты: +  *  **CacheType** — можно переопределить тип кэша ​[[https://​github.com/​sasgis/​sas.planet.src/​blob/​master/​Src/​TileStorage/​c_CacheTypeCodes.pas|из списка в исходном коде]], в который будут записываться тайлы данной карты. NB! Некоторые форматы кеша подходят только для [[Функции программы#​Экспорт карт и спутниковых снимков|экспорта тайлов]]. 
-    ​* ​— по умолчанию + 
-    ​* ​1  ​— GoogleMV +^ CacheType ^ Название ^ Путь ^ Комментарий ^ 
-    ​* ​2  ​— SAS.Planet + | По умолчанию ​                 ​| ​                                | Ранее использовался 2, теперь 71 | 
-    ​* ​3  ​— EarthSlicer 1.95 +1  ​GoogleMV ​                     | ''​cache_old/​ /​{z+1}/​{q}.{ext}''​ | [[https://​learn.microsoft.com/​en-us/​bingmaps/​articles/​bing-maps-tile-system|Quadkey]] | 
-    ​* ​4  ​— GlobalMapper Tiles (GMT) ''​cache_gmt/​z{z}/​{x}/​{y}{ext}''​ +2  ​SAS.Planet ​                   | ''​cache/''​ | 
-    ​* ​41 — GlobalMapper Aux +3  ​EarthSlicer 1.95              | ''​cache_es/''​ | 
-    ​* ​42 — GlobalMapper Bing ([[http://​www.sasgis.org/​mantis/​view.php?​id=780|тикет 780]]) +4  ​GlobalMapper Tiles (GMT)      ​| ​''​cache_gmt/​z{z}/​{x}/​{y}.{ext}'' ​| 
-    ​* ​43 — Mobile Atlas Creator (MOBAC) [[https://​wiki.openstreetmap.org/​wiki/​Slippy_map_tilenames|"​slippy ​map"]] ''​cache_ma/​{z}/​{x}/​{y}{ext}''​ +41 GlobalMapper Aux              | ''​cache_gmt/''​ | Не используется?​ | 
-    ​* ​44 — OsmAnd+ Tiles +42 GlobalMapper Bing             | ''​cache_gmt/​ /​{z}/​{y}/​{x}.{ext}''​ | [[http://​www.sasgis.org/​mantis/​view.php?​id=780|Тикет 780]] | 
-    ​45 — Tile Map Service ​([[https://​wiki.osgeo.org/wiki/Tile_Map_Service_Specification|TMS]]) ''​cache_tms/​{z}/​{x}/​{-y}{ext}''​ +43 | **[[https://​mobac.sourceforge.io/​|Mobile Atlas Creator]] (MOBAC)** | ''​cache_ma/​ /​{z}/​{x}/​{y}.{ext}''​ | [[http://​www.sasgis.org/​mantis/​view.php?​id=1936|Тикет 1936]]. Тип кеша известен как ​[[https://​wiki.openstreetmap.org/​wiki/​Slippy_map_tilenames|Slippy ​map]]. Нумерация тайлов используется в [[OpenStreetMap]] и Google. Кеш подключается к QGIS, [[https://​mapproxy.org/​docs/​nightly/​caches.html#​cache-file|MapProxy]]. Для использования с [[https://​josm.openstreetmap.de/​|JOSM]] достаточно:​ 
-    ​* ​5  ​— Google Earth +  tms:​file:///​home/​user/​SAS.Planet/​cache_ma/vesat/​{z}/​{x}/​{y}.jpg  # Linux 
-    ​* ​51 — GoogleEarth Terrain +  tms[18]:​file:///​c:/​SAS.Planet/​cache_ma/​vesat/​{z}/​{x}/​{y}.jpg ​ # Windows 
-    ​* ​6  ​— BerkeleyDB +
-    ​* ​61 — BerkeleyDB (Versioned) +44 OsmAnd+ Tiles                 | Экспорт ''​{z}/​{x}/​{y}.{ext}.tile''​ | [[http://​www.sasgis.org/​mantis/​view.php?​id=884|Тикет 884]]. Не то же самое что "​OsmAnd (SQLite3)"​ ''​*.sqlitedb'' ​([[http://​www.sasgis.org/​mantis/​view.php?​id=3577|тикет 3577]]) | 
-    ​* ​7  ​— DBMS (СУБД) +| 45 | [[https://​wiki.openstreetmap.org/​wiki/​TMS|Tile Map Service]] (TMS''​cache_tms/​{z}/​{x}/​{-y}.{ext}'' ​| [[http://​www.sasgis.org/​mantis/​view.php?​id=2848|Тикет 2848]]. ([[https://​wiki.osgeo.org/​wiki/​Tile_Map_Service_Specification|спецификация osgeo.org)]]. | 
-    ​* ​71 — SQLite3 ​([[http://​www.sasgis.org/​mantis/​view.php?​id=1376|тикет 1376]]) +5  ​Google Earth                  | ''​cache_ge/''​ | 
-    ​* ​72 — MBTiles ''​cache_MBtiles'' ​([[http://​www.sasgis.org/​mantis/​view.php?​id=1376|тикет 1376]]) +51 GoogleEarth Terrain ​          | 
-    ​* ​8  ​— GeoCacher +6  ​| [[https://​ru.wikipedia.org/​wiki/​Berkeley_DB|BerkeleyDB]] | ''​cache_db/''​ | | 
-    ​* ​9  ​— RAM (на диск не записываются) ​([[http://​www.sasgis.org/​mantis/​view.php?​id=1755|тикет 1755]])+61 BerkeleyDB (Versioned) ​       | 
 +7  ​DBMS (СУБД) ​                  | 
 +71 SQLite3 ​                      | ''​cache_sqlite/​ /​z{z+1}/​0/​0/​0.0.sqlitedb''​ | [[http://​www.sasgis.org/​mantis/​view.php?​id=1376#c10961|Тикет 1376]]. Создаётся несколько баз SQLite. | 
 +72 | [[https://​wiki.openstreetmap.org/​wiki/​MBTiles|MBTiles]] | Экспорт ​''​*.mbtiles'' ​[[http://​www.sasgis.org/​mantis/​view.php?​id=1376|Тикет 1376]], ([[https://​github.com/​mapbox/​mbtiles-spec|спецификация MapBox]]). Используется одна база SQLite, но формат так ограничен,​ что пригоден только для экспорта. | 
 +8  ​GeoCacher ​                    | 
 +9  ​RAM (на диск не записываются) ​| | [[http://​www.sasgis.org/​mantis/​view.php?​id=1755|Тикет 1755]] ​
 + 
   * **DefURLBase** — неизменная часть адреса ссылки на тайлы карты. Или шаблон URL адреса в случае [[простой_пример_с_плейсхолдерами|упрощенного добавления карт]].   * **DefURLBase** — неизменная часть адреса ссылки на тайлы карты. Или шаблон URL адреса в случае [[простой_пример_с_плейсхолдерами|упрощенного добавления карт]].
   * **[[epsg_код_проекции|projection]]** — проекция карты. 1 — меркатор на сфероид,​ 2 — меркатор на эллипсоид,​ 3 — широта/​долгота.   * **[[epsg_код_проекции|projection]]** — проекция карты. 1 — меркатор на сфероид,​ 2 — меркатор на эллипсоид,​ 3 — широта/​долгота.
Строка 92: Строка 99:
   *  **MemCacheCapacity** - количество тайлов кэшируемых в память. По-умолчанию = 100   *  **MemCacheCapacity** - количество тайлов кэшируемых в память. По-умолчанию = 100
   *  **MemCacheTTL** - время жизни тайлов (в миллисекундах),​ кэшируемых в память. По-умолчанию = 60000 мс. (1 мин)   *  **MemCacheTTL** - время жизни тайлов (в миллисекундах),​ кэшируемых в память. По-умолчанию = 60000 мс. (1 мин)
-  *  **MemCacheClearStrategy** - стратегия очистки (по TTL) кэшируемых в память тайлов. Принимает значения:​ 0 - удалять ВСЕ тайлы из RAM-кэша,​ если истёк TTL у самого СТАРОГО тайла; 1 - удалять ВСЕ тайлы из RAM-кэша,​ если истёк TTL у самого МОЛОДОГО тайла; 2 - удалять только те тайлы, у которых истёк TTL. Помолчанию включён режим 1.+  *  **MemCacheClearStrategy** - стратегия очистки (по TTL) кэшируемых в память тайлов. Принимает значения: ​ 
 +     ​* ​0 - удалять ВСЕ тайлы из RAM-кэша,​ если истёк TTL у самого СТАРОГО тайла; ​ 
 +     ​* ​1 - удалять ВСЕ тайлы из RAM-кэша,​ если истёк TTL у самого МОЛОДОГО тайла ​(включён по-умолчанию) 
 +     ​* ​2 - удалять только те тайлы, у которых истёк TTL
 +     * 3 НЕ удалять тайлы по TTL.
   *  **RestartDownloadOnMemCacheTTL** - автоматически перезакачивать тайлы в пределах видимой области экрана при очистке RAM-кэша (работает только если UseMemCache=1). По-умолчанию отключено.   *  **RestartDownloadOnMemCacheTTL** - автоматически перезакачивать тайлы в пределах видимой области экрана при очистке RAM-кэша (работает только если UseMemCache=1). По-умолчанию отключено.
   * **License=©** - текст лицензии,​ который будет выводиться в левом верхнем углу карты. Требуется для соблюдения условий распространения некоторых карт. ​   * **License=©** - текст лицензии,​ который будет выводиться в левом верхнем углу карты. Требуется для соблюдения условий распространения некоторых карт. ​
Строка 105: Строка 116:
   * **[[epsg_код_проекции|EPSG]]** — код проекции карты при выводе на экран.   * **[[epsg_код_проекции|EPSG]]** — код проекции карты при выводе на экран.
  
-В ночных версиях появилась возможность использовать более продвинутый хоть и медленный парсер kml, c поддержкой чтения оформления меток, линий и полигонов или принудительно задать свои настройки для конкретного zmp. Для того что бы включить и настроить эти функции используются следующие разделы:​+В ночных версиях появилась возможность использовать более продвинутый хоть и медленный парсер kml, c поддержкой чтения оформления меток, линий и полигонов или принудительно задать свои настройки для конкретного zmp. Для того чтобы включить и настроить эти функции используются следующие разделы:​
  
 Раздел **[PARAMS_Vector]** Раздел **[PARAMS_Vector]**
Строка 133: Строка 144:
   *  **FillColor** —  цвет заливки полигона по-умолчанию   *  **FillColor** —  цвет заливки полигона по-умолчанию
   *  **IsForceFillColor** ​ — если равно 1 (это значение по-умолчанию),​ то будет принудительно использовать цвет из **FillColor**,​ даже если парсер смог считать настройки из параметров полигона   *  **IsForceFillColor** ​ — если равно 1 (это значение по-умолчанию),​ то будет принудительно использовать цвет из **FillColor**,​ даже если парсер смог считать настройки из параметров полигона
- 
- 
-Некоторые из параметров карты могут быть изменены внутри программы без редактирования файла ''​params.txt''​. Для этого нужно зайти в //​Параметры->​Параметры карты//​ или нажать //​Ctrl+Alt+P//​. Пользовательские изменения настроек карт сохраняются в файле ''​Maps/​maps.ini''​. 
- 
- 
-===== GetUrlScript.txt ===== 
- 
-Файл **[[Описание Паскаль скриптов|GetUrlScript.txt]]** содержит скрипт,​ формирующий полные адреса ссылок на тайлы данной карты. Скрипты пишутся на обычном Pascal. 
- 
-Основными параметрами [[тайл|тайла]] являются масштаб и координаты по осям ''​x''​ и ''​y''​. Масштаб обозначается переменной ''​GetZ''​ (начинается с единицы),​ координаты по осям ''​x''​ и ''​y''​ - соответственно переменными ''​GetX''​ и ''​GetY''​. Эти переменные привязаны к [[Тайловая сетка|тайловой сетке]],​ принятой для [[maps:​Google Maps|Google Maps]]. 
- 
-===== info.txt ===== 
- 
-Файл **info.txt** содержит текстовую информацию о карте. Используется синтаксис HTML (в частности,​ абзацы надо разделять тегом <​BR>​). 
-Также возможен вывод графических файлов (например,​ легенды карты),​ через тег ''<​img src=”path\to\image.bmp”/>''​. Ссылаться можно в т.ч. на изображения в папке zmp.