gdal2tiles: Игнорирование спецификации TMS
Добавлено: 04 апр 2013, 09:29
Логика работы утилиты gdal2tiles идёт вразрез со спецификацией TMS:
1. Спецификация определяет 4 различных профиля: none, global-geodetic, global-mercator и local. Соответствующий тип профиля указывается в ресурсе TileMap. gdal2tiles поддерживает 3 профиля: mercator, geodetic и raster. Фактически, mercator - это global-mercator, geodetic - global-geodetic, raster - local. При создании тайлов gdal2tiles генерирует файл tilemapresource.xml являющийся в соответствии со спецификацией ресурсом TileMap. Если посмотреть на этот файл, то можно увидеть что gdal2tiles пихает в название профиля свои названия, в частности, mercator вместо global-mercator.
2. Вместо того, чтобы указывать систему координат для профиля global-mercator как того требует спецификация - <SRS>OSGEO:41001</SRS>, gdal2tiles пишет <SRS>EPSG:900913</SRS>.
3. Согласно спецификации 0-й уровень профиля global-mercator имеет разрешение 78271 и состоит из 4-х тайлов, gdal2tiles рендерит 0-й уровень с разрешением 156543, то есть выдает на выходе 1 тайл.
4. Проанализировав работу gdal2tiles можно сделать вывод, что в профиле mercator нумерация тайлов ведётся от точки с координатами (-20037508.3428, -20037508.3428), то есть Origin должен выглядеть так <Origin x="-20037508.3428" y="-20037508.3428"/>, вместо этого gdal2tiles пишет, например, <Origin x="49.08473471460325" y="75.08124999994993"/> - то есть координаты левого нижнего угла самого растра (а не начала отсчёта тайловой сетки), да ещё и в градусах, а не в единицах измерения слоя.
1. Спецификация определяет 4 различных профиля: none, global-geodetic, global-mercator и local. Соответствующий тип профиля указывается в ресурсе TileMap. gdal2tiles поддерживает 3 профиля: mercator, geodetic и raster. Фактически, mercator - это global-mercator, geodetic - global-geodetic, raster - local. При создании тайлов gdal2tiles генерирует файл tilemapresource.xml являющийся в соответствии со спецификацией ресурсом TileMap. Если посмотреть на этот файл, то можно увидеть что gdal2tiles пихает в название профиля свои названия, в частности, mercator вместо global-mercator.
2. Вместо того, чтобы указывать систему координат для профиля global-mercator как того требует спецификация - <SRS>OSGEO:41001</SRS>, gdal2tiles пишет <SRS>EPSG:900913</SRS>.
3. Согласно спецификации 0-й уровень профиля global-mercator имеет разрешение 78271 и состоит из 4-х тайлов, gdal2tiles рендерит 0-й уровень с разрешением 156543, то есть выдает на выходе 1 тайл.
4. Проанализировав работу gdal2tiles можно сделать вывод, что в профиле mercator нумерация тайлов ведётся от точки с координатами (-20037508.3428, -20037508.3428), то есть Origin должен выглядеть так <Origin x="-20037508.3428" y="-20037508.3428"/>, вместо этого gdal2tiles пишет, например, <Origin x="49.08473471460325" y="75.08124999994993"/> - то есть координаты левого нижнего угла самого растра (а не начала отсчёта тайловой сетки), да ещё и в градусах, а не в единицах измерения слоя.