использование gdal2tiles для нарезки Генштабовских карт

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
edoroe
Интересующийся
Сообщения: 20
Зарегистрирован: 04 апр 2011, 21:19
Репутация: 0
Откуда: Полтава
Контактная информация:

использование gdal2tiles для нарезки Генштабовских карт

Сообщение edoroe » 06 фев 2016, 16:29

Добрый день многоуважаемые форумчане.
Решил нарезать генштабовские карты (их много по сети ходит) на тайлы. Карты привязаны для OziExplorer.

Информация о привязке:
$ gdalinfo M-36-083.map
Спойлер
Driver: MAP/OziExplorer .MAP
Files: M-36-083.map
M-36-083.jpg
Size is 2305, 2546
Coordinate System is `'
GCP Projection =
PROJCS["unnamed",
GEOGCS["Pulkovo 1942",
DATUM["Pulkovo_1942",
SPHEROID["Krassowsky 1940",6378245,298.3,
AUTHORITY["EPSG","7024"]],
TOWGS84[23.92,-141.27,-80.9,0,0.35,0.82,-0.12],
AUTHORITY["EPSG","6284"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4284"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",33],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",6500000],
PARAMETER["false_northing",0],
UNIT["Meter",1]]
GCP[ 0]: Id=, Info=
(95,142) -> (6643388.86593273,5542861.93357164,0)
GCP[ 1]: Id=, Info=
(1157,141) -> (6661310.969267,5543371.3579222,0)
GCP[ 2]: Id=, Info=
(2218,139) -> (6679232.54027211,5543940.76295034,0)
GCP[ 3]: Id=, Info=
(92,1239) -> (6643884.12293609,5524325.62731654,0)
GCP[ 4]: Id=, Info=
(1156,1237) -> (6661868.17839308,5524835.56274916,0)
GCP[ 5]: Id=, Info=
(2221,1237) -> (6679851.71739803,5525405.53959991,0)
GCP[ 6]: Id=, Info=
(88,2335) -> (6644378.15288821,5505789.7918701,0)
GCP[ 7]: Id=, Info=
(1156,2335) -> (6662424.00749536,5506300.22111705,0)
GCP[ 8]: Id=, Info=
(2224,2335) -> (6680469.36167203,5506870.75049121,0)
Metadata:
NEATLINE=POLYGON ((6643388.865932733751833 5542861.933571642264724,6679232.540272113867104 5543940.762950336560607,6680469.360438275150955 5506870.787560358643532,6644378.151901377364993 5505789.828941299580038,6643388.865932733751833 5542861.933571642264724))
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0, 2546.0)
Upper Right ( 2305.0, 0.0)
Lower Right ( 2305.0, 2546.0)
Center ( 1152.5, 1273.0)
Band 1 Block=2305x1 Type=Byte, ColorInterp=Red
Overviews: 1153x1273, 577x637, 289x319
Image Structure Metadata:
COMPRESSION=JPEG
Band 2 Block=2305x1 Type=Byte, ColorInterp=Green
Overviews: 1153x1273, 577x637, 289x319
Image Structure Metadata:
COMPRESSION=JPEG
Band 3 Block=2305x1 Type=Byte, ColorInterp=Blue
Overviews: 1153x1273, 577x637, 289x319
Image Structure Metadata:
COMPRESSION=JPEG
режу на тайлы:
$ gdal2tiles.py -w none -r antialias -n -z 12 M-36-083.map tiles

в итоге получаю дерево каталогов в котором номер тайла по X сформирован правильно, а номер тайла по Y примерно в два раза больше. Очевидно не в той проекции.
Посоветуете выбор исходной и конечной проекций ?

Заранее благодарствую за помощь !

edoroe
Интересующийся
Сообщения: 20
Зарегистрирован: 04 апр 2011, 21:19
Репутация: 0
Откуда: Полтава
Контактная информация:

Re: использование gdal2tiles для нарезки Генштабовских карт

Сообщение edoroe » 06 фев 2016, 18:30

Благодарю, случайно разобрался( наткнулся на уже используемою мною функцию преобразования, но для других тайловых серверов) :-)
Если в дальнейшем с терминологией ошибусь - поправьте, пожалуйста.

Когда я имел ввиду, что нумерация по Y не совпадает, я её сравнивал с нумерацией тайлов для широкоиспользуемых сервисов Google и OSM. Оказывается, эти сервисы работают в проекции EPSG:4326, а
gdal2tiles формирует файлы в проекции EPSG:900913.
И значение Y надо преобразовать по следующей формуле:
y = 2**$z - $y - 1

edoroe
Интересующийся
Сообщения: 20
Зарегистрирован: 04 апр 2011, 21:19
Репутация: 0
Откуда: Полтава
Контактная информация:

Re: использование gdal2tiles для нарезки Генштабовских карт

Сообщение edoroe » 06 фев 2016, 19:04

Следующий вопрос:
gdal2tiles не обрезает поля. Я имею ввиду, что изображение больше чем сама карта, в файле *.map указаны координаты углов "чистой" карты, но тайлы нарезаются для полной картинки а не для усечённой (исключая поля).
Как заставить обрезать поля ?

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: использование gdal2tiles для нарезки Генштабовских карт

Сообщение ericsson » 06 фев 2016, 20:14

Вообще-то, тайлы google maps и osm не находятся ни в какой EPSG:4326, они также используют EPSG:3857, она же EPSG:900913

edoroe
Интересующийся
Сообщения: 20
Зарегистрирован: 04 апр 2011, 21:19
Репутация: 0
Откуда: Полтава
Контактная информация:

Re: использование gdal2tiles для нарезки Генштабовских карт

Сообщение edoroe » 06 фев 2016, 21:00

Да. почитал.
Просто не совпадает нумерация тайлов.
gdal2tiles выдает TMS в формате OSGeo а OSM в формате Slippy map tilename

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: использование gdal2tiles для нарезки Генштабовских карт

Сообщение Максим Дубинин » 07 фев 2016, 07:58

edoroe писал(а):Следующий вопрос:
а вот так здесь делать не нужно
пристегивайтесь, турбулентность прямо по курсу

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 3 гостя