Страница 1 из 1

Точная привязка тайлов Google/ Yandex

Добавлено: 07 апр 2013, 18:25
ANAT01
Задача: Получить точно привязанные растры из тайлов Google и Yandex

Исходные данные:
1) Тайлы полученые через SAS.Планета
2) Точные координаты объектов (здания/строения в местной СК)

Требования:
1) Привязка с точностью порядка 1-2 метров
2) Растр должен быть составным
3) Чтобы работало в Qgis и Mapinfo

Посмотрел карты google через плагин OpenLayers для Qgis. В целом хорошо. Где-то садится порядка 2-3 мертров, но в основном 13 и более метров. К тому-же большой минус в том, что тайлы не кэшируются и нужно постоянное подключение к интернету.
Смотрел также через SAS.Планета. Там есть экспорт (*.tab например) но минус в том что тайлы склеиваются в один кусок. Мне нужно на город и при крупных масштабах вес такой склейки исчисляется в сотнях мегабайт и он тяжело ворочается (насколько я понимаю для рендера лучше много мелких чем один большой).

Из всего из этого возникают вопросы:
1) Есть ли готовые решения для подобной задачи (привязка кучи тайлов)?
2) Как бьются тайлы google и яндекс (координаты углов тайла для определенного масштаба)?
3) Что вы посоветуете посмотреть/почитать по теме?

Я с такой задачей не сталкивался. Есть ли возможности "пакетной" привязки растров в Qgis или Mapinfo - это, допустим, я определю точки соответствия для каждого тайла и сохраню во внешний файл (.txt например), тогда есть ли вариант (консольная программа допустим) по нажатию волшебной кнопки "собирать" все это дело воедино.

UPD: Нашел в SAS.Планета разбитие на куски. Но как потом все это дело перепривязать?!

Re: Точная привязка тайлов Google/ Yandex

Добавлено: 07 апр 2013, 18:43
Denis Rykov
1. Склеить тайлы в один растр (например, как описано тут);
2. Привязать получившийся растр;
3. Разбить растр на тайлы.

Re: Точная привязка тайлов Google/ Yandex

Добавлено: 07 апр 2013, 19:00
ANAT01
ОК. Смысл понял.
Как потом побить на тайлы?
Можно ли получить из крупного масштаба мелкие без привязки?

Re: Точная привязка тайлов Google/ Yandex

Добавлено: 07 апр 2013, 19:08
Denis Rykov
В тайловых сервисах на каждом масштабном уровне рендерятся различные объекты, так, например, на одних уровнях вы увидите дома, на других - нет, поэтому вам придётся вначале сделать столько растров, сколько масштабных уровней вам нужно (в OpenStreetMap их 18), привязать их и затем разбить на тайлы, например, с помощью gdal2tiles, причем в вашем случае при тайлировании нужно будет явно указывать масштабный уровень, то есть для 5 уровня --zoom=5, для 10 - --zoom=10 и т.д, тип профиля в терминах gdal2tiles - --profile=raster.

Re: Точная привязка тайлов Google/ Yandex

Добавлено: 07 апр 2013, 19:26
ANAT01
Мне нужен слой спутниковые снимки. Там на разных масштабах разные искажения и очень не хочется делать привязку каждого масштаба. Масштабы нужны для "облегчения" навигации по карте в ГИС. Впрочем это уже вторичный вопрос и на мелких масштабах пойдет "грубая" привязка.
А вот вопрос с разбивкой большого файла на куски остался. Из того что приходит на ум: Jake's MapBasic Toolbar для Mapinfo. Там можно в принципе побить на поименованные куски, а для обратного собирания изготовить простенький скриптик.

Re: Точная привязка тайлов Google/ Yandex

Добавлено: 07 апр 2013, 19:44
Denis Rykov
Если исходные данные растровые, то просто склеиваете растр из тайлов какого-нибудь высокого масштабного уровня, привязываете его, а затем нарезаете на тайлы в gdal2tiles, он автоматом вам нагенерирует тайлы с различным разрешением. Подробнее о тайловых сетках можете почитать в одной из моих последних статей.

Re: Точная привязка тайлов Google/ Yandex

Добавлено: 08 апр 2013, 12:44
novice
UPD: Нашел в SAS.Планета разбитие на куски. Но как потом все это дело перепривязать?!
По директории, в которой хранится тайл можно однозначно определить его привязку. Сами формулы, которые выполняют привязку, есть в исходниках SASPlanet и в википедии. Привязка(по которой можно однозначно построить карту) хранится в двух файлах .pngw или .jpgw и в файле .jpg.aux.xml или .png.aux.xml. Оба файла привязки должны лежать рядом с тайлом.