Данная статья будет посвящена практическому применению кеширования с помощью модуля MapCache на платформе MapServer, предназначенной для публикации пространственных данных в вебе. А именно: мы подключим кадастровую карту к нашей простой одностраничной интерактивной карте, а затем с помощью модуля кеширования увеличим скорость загрузки тайлов этой карты.
Это будет очень полезный и наглядный пример использования модуля MapCache, т.к. WMS-сервис кадастровой карты временами очень сильно «тупит». Однако, перед использованием WMS-сервиса кадастровой карты в своих ГИС или веб-ГИС приложениях, рекомендую ознакомиться с условиями использования данного сервиса. Данная статья носит исключительно демонстрационный характер.
Подключаем кадастровую карту в QGIS
На данный момент актуальный URL WMS-сервиса кадастровой карты выглядит следующим образом:
http://pkk5.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer
В QGIS в меню выбираем «Слой — Добавить слой — Добавить слой WMS/WMTS» или нажимаем комбинацию клавиш Ctrl+Shift+W . Далее, в появившемся окне жмем кнопку «Создать» и указываем в поле «Адрес» наш URL, как показано на рисунке ниже. В поле «Название» можно указать произвольный текст, например, «Кадастровая карта».
QGIS для совсем начинающих. Создание шейп-файлов.
Добавление WMS слоя кадастровой карты в QGIS
Жмем «OK», затем подключаемся к WMS-сервису кадастровой карты. Меняем формат изображения на PNG, т.к. в нашем демонстрационном веб-приложении мы будем подгружать тайлы кадастровой карты поверх подложки OSM, а для этого нам необходимо обеспечить прозрачный фон тайлов, что возможно сделать в PNG-формате. Также выделяем корневой элемент (с в доступных слоях WMS. Данные настройки показаны на рисунке ниже:
Настройка WMS-службы кадастровой карты в QGIS
Далее, жмем «Добавить» и закрываем окно. Чтобы узнать, какой запрос формируется программой QGIS при обращении к WMS-сервису кадастровой карты, воспользуемся локальным прокси-сервером Fiddler. Программа является бесплатной, так что можете свободно устанавливать и использовать. Итак, устанавливаем и запускаем наш локальный прокси.
Чтобы настроить QGIS для использования совместно с нашим локальным прокси, откроем окно в меню «Установки — Параметры», далее перейдем на закладку «Сеть» и включим настройку «Use proxy for web access». См. рисунок ниже:
Настройка QGIS для использования совместно с прокси
Сохраняем настройки. Теперь подвигаем / помасштабируем нашу кадастровую карту. В программе-прокси Fiddler мы можем увидеть формируемый HTTP-запрос к WMS-службе кадастровой карты. Нажимаем на один из запросов в левой части окошка программы и справа мы получаем подробную информацию по данному запросу, а также можем наблюдать ответ в виде тайла в формате PNG.
Обратите внимание, что тайл содержит прозрачный фон. В дальнейшем нас будет интересовать параметр LAYERS в строке запроса.
Инспектирование HTTP-запроса к WMS-службе кадастровой карты
Создаем простейшее веб-ГИС приложение по использованию кадастровой карты
За основу веб-ГИС приложения возьмем код из предыдущей статьи Настройка тайлового кэширования MapServer с помощью модуля MapCache. Только вместо URL http://localhost:8888/mapcache/ подставим URL нашей WMS-службы кадастровой карты: http://pkk5.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer, а вместо значения параметра LAYERS ol_test, подставим значения слоев из HTTP-запроса, как показано на рисунке выше. В качестве подложки по-прежнему используем тайлы OSM. Также я обновил версию библиотеки OpenLayers до версии 4.6.4, центрирование карты в момент запуска выполнил на свой город Белгород и начальный индекс масштаба указал 12. Итак, наш веб-клиент будет выглядеть следующим образом:
html, body < margin:0; padding:0; height:100%; >#map Тест кадастровой карты var map = new ol.Map(< target: ‘map’, layers: [ new ol.layer.Tile(< source: new ol.source.OSM() >), new ol.layer.Tile( < source: new ol.source.TileWMS(< projection: ‘EPSG:4326’, url: ‘http://pkk5.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer’, params: >) >) ], view: new ol.View(< center: ol.proj.fromLonLat([36.6549, 50.5938]), zoom: 12 >) >);
В каталоге ms4wApachehtdocsapps (где ms4w — корневой каталог MapServer) создадим файл cadclient.html и поместим в него вышеуказанное содержимое, а также распакуем архив со свежей библиотекой OpenLayers. У вас должна получиться следующая структура каталогов и расположенных в них файлов:
Структура каталогов веб-приложения
Теперь перейдем по URL http://localhost:8888/apps/cadclient.html и получим карту с кадастровым слоем. В случае, если у вас порт, на котором запущен веб-сервер Apache, входящий в состав MapServer отличается от 8888, то вам нужно указать свой порт. О начальной установке и настройке MapServer вы можете прочесть в моей статье. Итак, результат в браузере показан на скриншоте ниже:
Запуск веб-приложения по отображению кадастровой карты
Настройка кеширования кадастровой карты
Собственно, настройка кеширования кадастровой карты выполняется достаточно просто. Если вы знакомы со статьей о кешировании в MapServer, то я вполне уверен, что данную настройку сможете выполнить самостоятельно. Но давайте все же рассмотрим этот процесс. Первым делом, в файл ms4wappsmapcachemapcache.xml добавим новый источник данных (source) и набор тайлов (tileset).
image/png 33,32,31,30,29,28,27,25,24,23,22,21,20,19,18,16,15,14,12,11,10,9,8,6,5,4,3,2,1 true http://pkk5.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer . сad disk WGS84 g PNG 5 5 10 300 600
В блоке «source» необходимо указать параметр «TRANSPARENT», чтобы тайлы в формате PNG имели прозрачный фон, а в блоке «tileset» указан новый параметр «auto_expire», который задает время кеширования тайлов на сервере.
В данном случае указано значение 600 секунд. После истечения указанного времени тайлы в кеше будут обновлены. Теперь необходимо рестартовать службу Apache и внести изменения в файл cadclient.html таком образом, чтобы URL указывал на http://localhost:8888/mapcache/, а параметр LAYERS содержал значение «cad» (имя tileset, указанное в конфигурационном файле). Все остальное остается без изменений. Таким образом, обновленный файл cadclient.html выглядит следующим образом:
html, body < margin:0; padding:0; height:100%; >#map Тест кадастровой карты var map = new ol.Map(< target: ‘map’, layers: [ new ol.layer.Tile(< source: new ol.source.OSM() >), new ol.layer.Tile( < source: new ol.source.TileWMS(< projection: ‘EPSG:4326’, url: ‘http://localhost:8888/mapcache/’, params: >) >) ], view: new ol.View(< center: ol.proj.fromLonLat([36.6549, 50.5938]), zoom: 12 >) >);
Теперь обновим страницу по адресу http://localhost:8888/apps/cadclient.html и можем заметить, что тайлы, которые уже были получены ранее, отрисовываются гораздо быстрее. Для чистоты эксперимента можно почистить кеш браузера и затем перейти в нужном масштабе к тем областям карты, которые ранее уже были получены из WMS-службы кадастровой карты. А в директории ms4wtmpms_tmpcachekad мы можем наблюдать закешированные тайлы, полученные от WMS-службы. Базовый путь к кешу на диске указывается в том же файле ms4wappsmapcachemapcache.xml в секции
Статья по начальной настройке кеширования для MapServer:
Источник: vector-sol.ru
ГИС-справочник
Первое, с чего обычно начинается рассказ о геоинформационных системах – это описание поверхности Земли и способы определения местоположения .
Не используйте кириллицу. Нигде — ни в именах файлов, ни в папках. Если в имени пользователя Windows/MacOS есть кириллица, то работайте, на.
WMS, TMS, WMTS WMS – Web Map Service – традиционный вид веб-слоя, растровый формат («картинка»). Характерен для ГИС на пред.
Источник: gis4arch.blogspot.com
Кадастровая карта в QGIS
QGIS
Вопрос формирования кадастровой карты в бесплатной геоинформационной системе QGIS на основе данных Единого государственного реестра недвижимости является той еще задачей, имеющей свои «подводные камни». В качестве источников кадастровых сведений, используемых в QGIS могут выступать:
- Геопортал Публичной кадастровой карты Росреестра.
- Растровая подложка (растр) из Sas.Планет.
- XML файлы выписок Росреестр по объекту недвижимости или кадастровому плану территории.
Подключение геопортала ПКК
Подключение Публичной кадастровой карты Росреестра в открытом проекте QGIS производится через меню «Слой / Менеджер источников» во вкладке «ArcGIS Map Service» через кнопку «Создать» формируем новое подключение геопортала, где задаем имя подключаемого сервиса и указываем адрес геопортала. В нашем случае крайней рабочей версией адреса подключения Публичной кадастровой карты в QGIS и ArcGIS, являлся следующий путь:
Далее сохраняем данный источник, после чего нажимаем на кнопку «Подключиться». В случае верного указания пути появятся доступные слои геопортала, выбрав необходимые из них для отображения, нажимаем на кнопку «Добавить».
На данный момент подключение геопортала ПКК Росреестра отключено на стороне её разработчиков, то есть данную операцию выполнить пока не возможно. Надеемся на исправление ситуации со стороны Росреестра.
Подключение через сторонний сервис
Для подключения Публичной кадастровой карты возможно использование стороннего прокси сервера. Для этого необходимо просто добавьте два новых слоя в разделе XYZ Tiles:
- Кварталы, ЗУ, ОКС – https://gext.ru/rosreestr_xyz///.png
- ЗОУИТ – https://gext.ru/rosreestr_zones_xyz///.png
Или смотрите видео по подключению ПКК через сторонний прокси-сервис.
Обновленное видео по версии QGIS 3.16
Загрузка растра ПКК
Растры с параметрами привязки в QIS удобно подключить в формате ECW, с другими форматами и файлами привязки как то туго, необходимо предварительно конвертировать в удобоваримое для QGIS. Формировать растровую подложку в виде Публичной кадастровой карты можно через программу SAS.Планет.
Для добавления растра в открытом проекте через меню «Слой / Менеджер источников» во вкладке «Растр» подключаем соответствующий файл или группу файлов в формате ECW в строке «Источник». Далее всплывшем окне «Открыть GDAL-Совместимый Набор Растровых данных» находим каталог расположения файлов и выбираем необходимые для подключения через нажатие кнопки «Ctrl» на клавиатуре и щелчка мыши. После выделения необходимых файлов нажимаем на кнопку «Открыть» и длаее кнопку «Добавить».
Если растры имеют иную проекцию, отличную от текущей в проекте, то система координат преобразуется к проекции растра.
Формирование карты через обменные форматы
В качестве формирования векторной кадастровой карты могут выступать xml файлы кадастровых планов территорий Росреестра. Но рабочих вариантов подключения КПТ в QGIS на момент написания статьи нет. Для возможности использования данных кадастровых планов территории приходится использовать обменные форматы данных:
- shp файлы с КПТ;
- mif/mid файлы с КПТ.
В QGIS подключение широко используемых обменных форматов от ArcGis (shp) и MapInfo (mif/mid) не составляет каких то трудностей, как обычный векторный слой. Для выполнения данной операции необходимо в открытом проекте через меню «Слой / Менеджер источников» во вкладке «Вектор» подключить соответствующий файл или группу файлов векторного обменного формата в строке «Источник». В сплывшем окне «Открыть OGR-Совместимый Векторный набор данных» находим каталог расположения файлов и выбираем необходимые для подключения через нажатие кнопки «Ctrl» на клавиатуре и щелчка мыши.
Следует учесть, что при подключении векторных слоев в QGIS необходимо верно указать (выбрать из списка) исходную проекцию данных для каждого из подключаемых файлов.
КПТ в форматах shp, mif/mid и dxf
Можно задаться вопросом «Как получить из xml файла кадастрового плана территории карту в векторным формате для какой либо ГИС?». Для этого я использую ГИС Панорама в демо-режиме, которая позволяет загрузить xml-файл КПТ во внутренний формат SIT (SITX) ГИС Панорама. После чего, производится экспорт в SHP или MIF/MID или DXF форматы.
Кроме этого имеются сторонние онлайн агрегаторы по преобразованию из XML файла в вышеуказанные форматы, но тем самым вы дарите им свои xml-ки. Так что пока приводит данные ресурсы в этой статье не буду.
Подключение местных систем координат
В зависимости от версии QGIS подключение параметров местной системы координат (МСК) производится через следующие форматы:
- PROJ4 — для версий QGIS 3.8 и ниже;
- WKT — для версий QGIS 3.9 и выше.
Добавление местных систем координат в QGIS производится через меню «Установки / Пользовательские проекции…». Добавляем пользовательскую систему координат через нажатие на кнопку «+», затем прописываем название проекции в каталоге по строке «Имя». Далее выбираем необходимый формат описания проекции WKT или PROJ4.
В версии QGIS 3.14 прописывание в формате PROJ4 приведет его к преобразованию в WKT формат проекции.
Прописываем параметры проекции в зависимости от выбранного формата и проверяем его на правильность оформления через кнопку «Validate».
Для общего примера возьмем универсальные параметры местных систем координат для MapInfo. Ниже приведен пример строки проекции МСК-12 зоны 1 в формате для прописывания в файле проекций MapInfo:
«МСК-12 зона 1», 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 47.55, 0, 1, 1250000, -5914743.504
МСК в формате PROJ4
На основе примера строки проекций для MapInfo в QGIS эта строка будет выглядеть следующим образом (смотрите внимательно некоторые параметры меняются знаки с «-» на «+»):
Структура файла PROJ4
+proj=tmerc +lat_0=0 +lon_0=47.55 +k=1 +x_0=1250000 +y_0=-5914743.504 +ellps=krass +towgs84=23.57, -140.95, -79.8, 0, 0.35, 0.79, -0.22 +units=m +no_defs
Данный пример строки не валиден (не может быть применен) для версии QGIS 3.14 и выше, так как исключен переход к «to wgs84».
МСК в формате WKT
Вот честно не могу сказать с какой версии произошел переход от proj4 к wkt по прописыванию параметров пользовательских проекций. Но тенденция к переходу к описанию проекций или систем координат через wkt-формат прослеживалась давно и рекомендовалась разработчиками данной программы. Покажем пример формирования такого файла в версии QGIS 3.14.
Структура файла WKT
BOUNDCRS[
SOURCECRS[
PROJCRS[«MSK-12 zone 1»,
BASEGEOGCRS[«MSK»,
DATUM[«Unknown based on Krassovsky, 1942 ellipsoid»,
ELLIPSOID[«Krassovsky, 1942»,6378245,298.3,
LENGTHUNIT[«metre»,1,
ID[«EPSG»,9001]]]],
PRIMEM[«Greenwich»,0,
ANGLEUNIT[«degree»,0.0174532925199433],
ID[«EPSG»,8901]]],
CONVERSION[«unknown»,
METHOD[«Transverse Mercator»,
ID[«EPSG»,9807]],
PARAMETER[«Latitude of natural origin»,0,
ANGLEUNIT[«degree»,0.0174532925199433],
ID[«EPSG»,8801]],
PARAMETER[«Longitude of natural origin»,47.55,
ANGLEUNIT[«degree»,0.0174532925199433],
ID[«EPSG»,8802]],
PARAMETER[«Scale factor at natural origin»,1,
SCALEUNIT[«unity»,1],
ID[«EPSG»,8805]],
PARAMETER[«False easting»,1250000,
LENGTHUNIT[«metre»,1],
ID[«EPSG»,8806]],
PARAMETER[«False northing»,-5914743.504,
LENGTHUNIT[«metre»,1],
ID[«EPSG»,8807]]],
CS[Cartesian,2],
AXIS[«(E)»,east,
ORDER[1],
LENGTHUNIT[«metre»,1,
ID[«EPSG»,9001]]],
AXIS[«(N)»,north,
ORDER[2],
LENGTHUNIT[«metre»,1,
ID[«EPSG»,9001]]]]],
TARGETCRS[
GEOGCRS[«WGS 84»,
DATUM[«World Geodetic System 1984»,
ELLIPSOID[«WGS 84»,6378137,298.257223563,
LENGTHUNIT[«metre»,1]]],
PRIMEM[«Greenwich»,0,
ANGLEUNIT[«degree»,0.0174532925199433]],
CS[ellipsoidal,2],
AXIS[«geodetic latitude (Lat)»,north,
ORDER[1],
ANGLEUNIT[«degree»,0.0174532925199433]],
AXIS[«geodetic longitude (Lon)»,east,
ORDER[2],
ANGLEUNIT[«degree»,0.0174532925199433]],
ID[«EPSG»,4326]]],
ABRIDGEDTRANSFORMATION[«Transformation from unknown to WGS84»,
METHOD[«Position Vector transformation (geog2D domain)»,
ID[«EPSG»,9606]],
PARAMETER[«X-axis translation»,23.57,
ID[«EPSG»,8605]],
PARAMETER[«Y-axis translation»,-140.95,
ID[«EPSG»,8606]],
PARAMETER[«Z-axis translation»,-79.8,
ID[«EPSG»,8607]],
PARAMETER[«X-axis rotation»,0,
ID[«EPSG»,8608]],
PARAMETER[«Y-axis rotation»,0.35,
ID[«EPSG»,8609]],
PARAMETER[«Z-axis rotation»,0.79,
ID[«EPSG»,8610]],
PARAMETER[«Scale difference»,0.99999978,
ID[«EPSG»,8611]]]]
Кадастровое деление территории
В новой версии публичной кадастровой карты была преобразована отдача границ кадастрового деления в виде векторных тайлов, что позволило получать эти границы в векторном формате. Как это делается представлено в следующем видео, где показывается 2-а варианта получения границ кадастрового деления по необходимой территории:
- скачивание файлов PBF через браузер и их загрузка в QGIS;
- подключение векторных тайлов в QGIS и сохранение границ в отдельный.
Путь для подключения векторных тайлов кадастрового деления:
Источник: terraingis.ru