Данные ЕМГИС Тольятти

Тайлы ЕМГИС Тольятти готовы для использования в JOSM.
URL:

http://tile.romanshuvalov.com/emgis-togliatti/{zoom}/{x}/{y}.png

Максимальный масштаб - 16.
Пользуйтесь наздоровье.

Замечание: из-за особенностей преобразования изображений потерялась чёткость и, к сожалению, некоторые номеров видны плохо. Но никто не мешает открыть исходную карту (emgis.ru) в соседней вкладке и сверяться.


(вопросы ниже уже не актуальны)


Тут тольяттинцам счастья привалило, нам разрешили использовать данные, размещенные в “Единой муниципальной геоинформационной системе г.о. Тольятти”, так как правообладатель выразил согласие.

Подробности: https://wiki.openstreetmap.org/wiki/RU:%D0%92%D0%B8%D0%BA%D0%B8%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F/%D0%95%D0%9C%D0%93%D0%98%D0%A1

Но вот незадача, тайлы там имеют непривычные координаты, например, вот тайл:
http://tech.mfc63.ru/arcgis/rest/services/basemap/ecko27_02_17/MapServer/tile/5/11826/11781

5/11826/11781

Координата Z не просто смещена: соседние масштабы в этой системе вообще отличаются не в 2 раза, т.е. мир разбит не на (2^Z)х(2^Z) квадратов, а как-то иначе.

Кто-нибудь сталкивался с подобным? Цель - получить шаблон для JOSM, чтобы использовать слой в качестве подложки. Ну или хотя бы просто формулу, а аккуратно сграббить и перенарезать картинки я и сам смогу.

И ровно через 5 секунд после публикации этого поста я решил стереть хвост URL с целью что-то найти. И нашёл:
http://tech.mfc63.ru/arcgis/rest/services/basemap/ecko27_02_17/MapServer/

Нужна утилита, которая преобазует координаты из проекции EPSG:3857 (или EPSG:4326, пофиг) в следующую проекцию:


PROJCS["Local Conditional",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Local"],PARAMETER["False_Easting",27478.878],PARAMETER["False_Northing",19463.17],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",-1.272472],PARAMETER["Longitude_Of_Center",49.3933174],PARAMETER["Latitude_Of_Center",53.4992761],UNIT["Meter",1.0]]

Есть такая? Из набора gdal вижу только преобразователи картинок.

Решил задачу так:

#!/usr/bin/env python

import os
import sys
import string
import osgeo.osr

from osgeo import ogr
from osgeo import osr

if (len(sys.argv) <> 3):
        print 'Usage: wkt2proj.py X Y'
else:
		emgis_spatial_ref="+proj=ortho +lat_0=53.4992761 +lon_0=49.3933174 +x_0=27478.878 +y_0=19463.17 +ellps=WGS84 +units=m +no_defs"
		target_srs = osgeo.osr.SpatialReference()
		target_srs.ImportFromProj4(emgis_spatial_ref)
		
		source_srs = osgeo.osr.SpatialReference()
		source_srs.ImportFromEPSG(3857)
		
		transform = osr.CoordinateTransformation(source_srs, target_srs)
		
		point = ogr.CreateGeometryFromWkt("POINT ("+sys.argv[1] + " " + sys.argv[2]+")")
		point.Transform(transform)
		
		print point.ExportToWkt()[7:-1]

Продолжаю работу.

К вечеру у вас в джосме появится слой ЕМГИС Тольятти. Возникли сложности.

Рекомендую завести утенка

Новая задача:

Загрузить вот этот spatial reference (внимание на азимут!):

PROJCS["Local Conditional",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Local"],PARAMETER["False_Easting",27478.878],PARAMETER["False_Northing",19463.17],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",-1.272472],PARAMETER["Longitude_Of_Center",49.3933174],PARAMETER["Latitude_Of_Center",53.4992761],UNIT["Meter",1.0]]

В питон.

target_srs.ImportFromWkt(emgis_spatial_ref)

Ругается:

ERROR 6: No translation for Local to PROJ.4 format is known.

Тайлы ЕМГИС Тольятти готовы для использования в JOSM.
URL:

http://tile.romanshuvalov.com/emgis-togliatti/{zoom}/{x}/{y}.png

Максимальный масштаб - 16.
Пользуйтесь наздоровье.

Замечание: из-за особенностей преобразования изображений потерялась чёткость и, к сожалению, некоторые номеров видны плохо. Но никто не мешает открыть исходную карту (emgis.ru) в соседней вкладке и сверяться.

Что-то тайлы вперемешку сыпятся https://yadi.sk/i/xEeusbXS3UCDFU.

Очень странно. Очистил кэш, проверил - у меня все в порядке. С другими слоями проблем нет? (Очистите кэш перед проверкой.)

С JOSM точно все в порядке, версия стабильная?

На всякий случай удалил каталог с кэшем, всё тоже самое https://yadi.sk/d/Vi8QwQdX3UCJWt (была не та ссылка)

Ёшкин крот!
http://tile.romanshuvalov.com/emgis-togliatti/14/10442/5300.png

У меня оказывается тайлы размером 1024х1024 вместо 256х256. Упс. Исправляю-с.

Исправлено. Можно сбросить кэш и проверять.

Оно и без сброса кэша пошло. Разрешение бы получше, векторизатор что-то бесформенное вместо зданий делает.

Не в разрешении дело. Оригинал был повернутый. И при поворачивании имеем отстой. А поскольку по каким-то неведоым причинам gdalwarp давал дичайшие артефакты при попытке сгладить картинку любым из алгоритмов, пришлось делать без сглаживания. Знаю, что некрасиво, но если найдете вариант лучше - дайте знать.

P.S. Кстати, теперь мы знаем, что JOSM у некоторых некорректно рендерит тайлы размером, отличным от 256х256.

А вариант склеить полную картинку, качественно ее повернуть и распилить обратно не рассматривался ??

Вполне верно отображает и 512*512, больше размера доселе не попадалось.

Я работал с тайлами вдвое меньшего масштаба и размером 1024х1024, из которых потом вырезал 16 штук 256х256. Так что вопрос в том как и чем повернуть с качеством повыше. gdalwarp не справился. И да, у меня из данных только исходная и конечная проекции, как при помощи gdal сделать матрицы трансформации я тоже не знаю. Если предложите способ - попробую.

Для желающих повысить чёткость. Вот вам картинка:
http://tile.romanshuvalov.com/emgis-togliatti/temp2.tif.gz (распакуйте естессно)
А вот преобразование, при котором ухудшается качество:

gdalwarp -s_srs "+proj=omerc +lat_0=53.4992761 +lonc=49.3933174 +alpha=-1.272472 +k=1 +x_0=27478.878 +y_0=19463.17 +gamma=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs" -t_srs EPSG:3857 temp2.tif temp3_test.tif

Кто сможет сделать красивей - вперёд. (спойлер: параметр -r bilinear или -r cubicspline или любой другой выдаёт какую-то хрень.)

Для справки, после преобразования выполняется еще и вот это:

gdalwarp -q -overwrite -t_srs EPSG:3857 -te_srs EPSG:3857 -te 5488790.12710186932, 7078680.31543351617, 5493682.09691212419, 7083572.28524376824 -ts 1024 1024 temp3_test.tif temp4_test.tif

Результат является правильным тайлом z=13 x=5218 y=2648 и его уже ровненько можно разрезать на 16 шт. по 256х256 для 15-го масштаба.

Во-первых, чистый поворот для +proj=omerc задается параметром +gamma, а не +alpha (уже здесь на форуме обсуждалось)
Во вторых, в josm “пользовательская проекция” +proj=tmerc тоже позволяет задать поворот параметром +gamma (чистый proj4 этого не умеет), это сделано как раз для дебильных
повернутых городских проекций.
В третьих, оригинал наверняка был не +ellps=WGS84, а +ellps=krass, если использовать +lon_0=51 +ellps=krass, будет ли вообще нужен поворот ?
Вообще “пользовательская проекция” josm всегда должна иметь приоритет перед gdalwarp.
gdalwarp для таких целей это просто абсолютное зло.

Я не очень силен в проекциях. Если напишете готовую строку в формате +proj, попробую пересчитать с ней. Исходная проекция в формате WKT выше в посте №6.

А где она указывается? В слоях TMS не вижу. Или вы предлагаете вообще для всего JOSM’а установить пользовательскую проекцию? Так это ничего не даст, тайлы подложки все равно должны быть в меркаторе.

Ваши предложения?