Загрузка web-карты в QGIS по координатам выдачи
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 01 июн 2022, 21:10
- Репутация: 0
- Откуда: Berkeley, CA, USA
Загрузка web-карты в QGIS по координатам выдачи
Здравствуйте! Подскажите, пожалуйста, как можно добавить вот эту карту http://ethnomap.karelia.ru/ в QGIS.
Генерация изображения происходит на сервере, ссылка на выдачу выглядит следующим образом:
http://195.209.249.220/mapportal/litkarta_1905v2-610x843.map.png?cx={x}&cy={y}&zoom={z} , где
610x843 -- пользовательское разрешение. Можно выставить, скажем, 256x256
{x} -- x координата центроида в проекции EPSG:28406 Pulkovo 1942 / Gauss-Kruger Zone 6
{y} -- y координата центроида в проекции EPSG:28406 Pulkovo 1942 / Gauss-Kruger Zone 6
{z} -- параметр zoom, принимает значения от 0 до какого-то большого значения
Вот пример выдачи: http://195.209.249.220/mapportal/litkar ... oom=517360
Генерация изображения происходит на сервере, ссылка на выдачу выглядит следующим образом:
http://195.209.249.220/mapportal/litkarta_1905v2-610x843.map.png?cx={x}&cy={y}&zoom={z} , где
610x843 -- пользовательское разрешение. Можно выставить, скажем, 256x256
{x} -- x координата центроида в проекции EPSG:28406 Pulkovo 1942 / Gauss-Kruger Zone 6
{y} -- y координата центроида в проекции EPSG:28406 Pulkovo 1942 / Gauss-Kruger Zone 6
{z} -- параметр zoom, принимает значения от 0 до какого-то большого значения
Вот пример выдачи: http://195.209.249.220/mapportal/litkar ... oom=517360
-
- Завсегдатай
- Сообщения: 293
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 135
- Откуда: Томск
Re: Загрузка web-карты в QGIS по координатам выдачи
У разработчиков портала возможно свой альтернативный аналог WMS, не стандартные запросы на сервер. Штатными средствами QGIS в лоб не получилось подключить.
- Игорь Белов
- Гуру
- Сообщения: 2227
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1500
- Откуда: Казань
Re: Загрузка web-карты в QGIS по координатам выдачи
Понятно, что интерактивную карту не получить. Собственно, выдачи — картинки в формате PNG. По крайней мере можно сохранять их на диск и открывать как растровые слои. Для этого нужно создавать файлы привязки. URL примера выдачи:
http:// 195.209.249.220/mapportal/litkarta_1905v2-610x843.map.png?cx=6566470&cy=7129240&zoom=517360
Выделяем параметры карты:
ширина w: 610 пикселей
высота h: 843 пикселей
X центра cx: 6566470 м
Y центра cy: 7129240 м
ширина zoom: 517360 м
Вычисляем необходимые величины:
разрешение res = zoom / w = 517360 м / 610 пикселей = 848.131147540984 м/пиксель
X левого края = cx - zoom / 2 = 6566470 м - 517360 / 2 м = 6307790 м
Y верхнего края = cy + res * h / 2 = 7129240 м + 848.131147540984 м/пиксель * 843 / 2 пикселей = 7486727.27868853 м
В той же папке, где лежит растр litkarta_1905v2-610x843.map.png, конструируем файл привязки litkarta_1905v2-610x843.map.pgw:
848.131147540984
0
0
-848.131147540984
6307790
7486727.27868853
Открываем растровый слой litkarta_1905v2-610x843.map.png, указываем для него систему координат EPSG:28406.
http:// 195.209.249.220/mapportal/litkarta_1905v2-610x843.map.png?cx=6566470&cy=7129240&zoom=517360
Выделяем параметры карты:
ширина w: 610 пикселей
высота h: 843 пикселей
X центра cx: 6566470 м
Y центра cy: 7129240 м
ширина zoom: 517360 м
Вычисляем необходимые величины:
разрешение res = zoom / w = 517360 м / 610 пикселей = 848.131147540984 м/пиксель
X левого края = cx - zoom / 2 = 6566470 м - 517360 / 2 м = 6307790 м
Y верхнего края = cy + res * h / 2 = 7129240 м + 848.131147540984 м/пиксель * 843 / 2 пикселей = 7486727.27868853 м
В той же папке, где лежит растр litkarta_1905v2-610x843.map.png, конструируем файл привязки litkarta_1905v2-610x843.map.pgw:
848.131147540984
0
0
-848.131147540984
6307790
7486727.27868853
Открываем растровый слой litkarta_1905v2-610x843.map.png, указываем для него систему координат EPSG:28406.
- Вложения
-
- litkarta_1905v2-610x843.map_8bit.png (170.01 КБ) 2315 просмотров
The purpose of computing is insight, not numbers
-
- Завсегдатай
- Сообщения: 293
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 135
- Откуда: Томск
Re: Загрузка web-карты в QGIS по координатам выдачи
Вот такой дурацкий, но рабочий вариант:
Создаем в QGIS слой, в котором рисуем полигон (прямоугольник) с охватом Карелии. Далее Свойства слоя - Оформление, заливка как Генератор геометрии, тип - точка, координаты - центр охвата карты ( @map_extent_center). Полигон начинает выглядеть как точка, всегда в центре текущего охвата карты. Далее настроил эту точку как растровый маркер, путь к которому вычисляется выражением
'http:// 195.209.249.220/mapportal/litkarta_1905v2-1000x843.map.png?cx=' || $x || '&cy=' || $y || '&zoom=' || @map_extent_width
а настройка ширины - выражением @map_extent_width , для настройки размера Единицы карты (не мм!)
Все работает, при обязательном условии - карта в QGIS настроена для системы координат источника картинки, EPSG:28406 Pulkovo 1942 / Gauss-Kruger Zone 6.
Пример проекта QGIS с этой интернет картой -
Создаем в QGIS слой, в котором рисуем полигон (прямоугольник) с охватом Карелии. Далее Свойства слоя - Оформление, заливка как Генератор геометрии, тип - точка, координаты - центр охвата карты ( @map_extent_center). Полигон начинает выглядеть как точка, всегда в центре текущего охвата карты. Далее настроил эту точку как растровый маркер, путь к которому вычисляется выражением
'http:// 195.209.249.220/mapportal/litkarta_1905v2-1000x843.map.png?cx=' || $x || '&cy=' || $y || '&zoom=' || @map_extent_width
а настройка ширины - выражением @map_extent_width , для настройки размера Единицы карты (не мм!)
Все работает, при обязательном условии - карта в QGIS настроена для системы координат источника картинки, EPSG:28406 Pulkovo 1942 / Gauss-Kruger Zone 6.
Пример проекта QGIS с этой интернет картой -
Последний раз редактировалось AlexRomantsov 03 июн 2022, 05:19, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 4044
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1049
- Ваше звание: программист
- Откуда: Казань
Re: Загрузка web-карты в QGIS по координатам выдачи
красиво, в любимом народном стиле per rectum ad astra
- Игорь Белов
- Гуру
- Сообщения: 2227
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1500
- Откуда: Казань
Re: Загрузка web-карты в QGIS по координатам выдачи
Весьма изящно! Снимаю шляпу!
Поистине QGIS шайтан-машина в умелых руках.
The purpose of computing is insight, not numbers
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 01 июн 2022, 21:10
- Репутация: 0
- Откуда: Berkeley, CA, USA
Re: Загрузка web-карты в QGIS по координатам выдачи
Замечательно! Спасибо огромное Alex и Игорь!
-
- Завсегдатай
- Сообщения: 345
- Зарегистрирован: 11 дек 2006, 09:46
- Репутация: 102
- Откуда: Иркутск
Re: Загрузка web-карты в QGIS по координатам выдачи
А нет нигде на сайте места для таких неординарных решений? А то ведь утонет ответ, и наткнутся на него только случайноИгорь Белов писал(а): ↑02 июн 2022, 15:19Весьма изящно! Снимаю шляпу!
Поистине QGIS шайтан-машина в умелых руках.
-
- Завсегдатай
- Сообщения: 293
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 135
- Откуда: Томск
Re: Загрузка web-карты в QGIS по координатам выдачи
Спасибо за отзыв настоящих гурманов ГИС, рад был помочь, и спасибо pbacherikov за интересную тему, может пригодится для подобных случаев.
Для больших мониторов может не хватить (по высоте) пиксельного размера получаемой картинки. Это можно исправить, увеличив в запросе ../mapportal/litkarta_1905v2-1000x843.map.png?.
Не нашел в QGIS переменной или функции для динамического вычисления этих значений, помощь зала!
Возможно, имеет смысл перепилить генератор геометрии, вычислять не одну точку в центре, а четыре (на отступе в 1/4 от охвата карты), а параметр размера запрашиваемой картинки (1000x843) и zoom наоборот уменьшить. В примере проекта QGIS это спрятано в Оформление - Растровый маркер - Переопределение свойств пути (Url картинки). .
Если уменьшить первое значение ширины запрашиваемой карты в пикселях (1000), например сделать 800x843 - источник создаст тайл в более крупном масштабе (более крупные подписи и жирные стили), а вес тайла уменьшится (быстрее вернется). Экспериментируйте, подберите для себя нужные значения.
Для больших мониторов может не хватить (по высоте) пиксельного размера получаемой картинки. Это можно исправить, увеличив в запросе ../mapportal/litkarta_1905v2-1000x843.map.png?.
Не нашел в QGIS переменной или функции для динамического вычисления этих значений, помощь зала!
Возможно, имеет смысл перепилить генератор геометрии, вычислять не одну точку в центре, а четыре (на отступе в 1/4 от охвата карты), а параметр размера запрашиваемой картинки (1000x843) и zoom наоборот уменьшить. В примере проекта QGIS это спрятано в Оформление - Растровый маркер - Переопределение свойств пути (Url картинки). .
Если уменьшить первое значение ширины запрашиваемой карты в пикселях (1000), например сделать 800x843 - источник создаст тайл в более крупном масштабе (более крупные подписи и жирные стили), а вес тайла уменьшится (быстрее вернется). Экспериментируйте, подберите для себя нужные значения.
Последний раз редактировалось AlexRomantsov 06 июн 2022, 04:54, всего редактировалось 1 раз.
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 01 июн 2022, 21:10
- Репутация: 0
- Откуда: Berkeley, CA, USA
Re: Загрузка web-карты в QGIS по координатам выдачи
Вот что я в итоге сделал отталкиваясь исключительно от своих нужд:AlexRomantsov писал(а): ↑03 июн 2022, 05:17В примере проекта QGIS это спрятано в Оформление - Растровый маркер - Переопределение свойств пути (Url картинки).
1) Сгенерировал точечную сетку (grid) в проекции EPSG:28406 размером 5км на 5км
2) Сохранил id и координаты всех точек-центроидов в csv
3) Используя координаты, полученные в step 2, запарсил тайлы размером 5км на 5км и разрешением 512x512 с сервера и сохранил их на жёстком диске используя id точек в качестве имён файлов
4) К каждой точке сетки через тот же raster image marker прикрутил полученный в step 3 тайл (в размерах маркера как раз выставил фиксированные 5000 метров, что соответствует размеру тайлов)
5) Конвертировал полученный результат в geotiff
-
- Завсегдатай
- Сообщения: 293
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 135
- Откуда: Томск
Re: Загрузка web-карты в QGIS по координатам выдачи
да, это нормальный способ. Но только для узкого диапазона масштабов (читаемость и размер подписей "зафиксины"). Для удобства пользования надо повторить расчет сетки и загрузку тайлов для мелких масштабов, видимость слоев отсечь по масштабу.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя