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

Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 19 май 2013, 22:26
Danila85
Добрый день сообществу. Помогите разобраться с gdal2tiles.

Есть привязанная карта, к примеру geoTIFF (mercator/WGS84), необходимо нарезать её на тайлы типа GMT (google map tiles) для последующего импорта в SAS.Планета. При использовании Global Mapper всё хорошо, нумерация тайлов начинается с левого верхнего угла, этот формат понимает SAS.Планета. При использовании gdal2tiles или MapTiler создаются папки с другими именами, нумерация тайлов начинается с левого НИЖНЕГО угла, полученные тайлы не получается использовать. Профиль при использовании gdal2tiles - по умолчанию, т.е. mercator.
Вопрос: что я делаю не так?

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 19 май 2013, 23:57
Александр Мурый
Если я правильно понял, SAS.Planet использует т.н. Google-тайлы, а gdal2tiles и MapTiler следуют стандарту OSGeo TMS (Tile Map Specification).
Почитайте эту тему и вот эту — там написаны решения. А здесь ещё JS-код для "конвертации" одних тайлов в другие.

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 20 май 2013, 20:02
Danila85
Да, проблема действительно в том, что gdal2tiles сохраняет тайлы в формате TMS.
Если кому-то понадобится, то "переконвертировать" существующие тайлы можно с помощью tiles_convert.py.

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 14 май 2018, 14:56
Yuraz
Коллеги, подскажите, как в JS сделать преобразование Y. Делаю тайлы в gdal2tiles.py. Тайлы получаются с нумерацией файлов по OSGeo TMS (Tile Map Specification), получается {z}/{x}/{y}, всё хорошо, только "{y}" надо другой. Преобразовать не сложно - (1<<z)-y-1 или ф-я:

Код: Выделить всё

function getY(y,z) {
	var ymax = 1 << z;
	return ymax - y - 1;
}

Код: Выделить всё

var url='http://localhost/map/{z}/{x}/{y}.png';
var mbAttr = 'My Project';
lay= L.tileLayer(url, {attribution: mbAttr})
var mymap = L.map('mapid', {
	center: [30,30],
	zoom: 10,
	layers: [lay]
});
Вопрос, как "{y}" заменить в JS?

PS. tiles_convert.py смотрел, у меня не идёт, библиотек не хватает.

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 14 май 2018, 16:13
Denis Rykov

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 15 май 2018, 16:20
Yuraz
Denis Rykov писал(а):
14 май 2018, 16:13
https
Денис, а можно ли заставить gdal2tiles.py сразу генерить нужный Y ? Чтоб с JS не заморачиваться.
У меня несколько карт, они все с "нормальным Y", если внедряю прототип по ссылке, по нему все отрабатывает, не удобно.
Можно ещё вопрос ламерский, как называется система с "нормальным Y"? По которой работают OSM, Mapbox, Esri... Отличная от OSGeo TMS (Tile Map Specification).
Заранее благодарю ))

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 15 май 2018, 16:36
freeExec
Yuraz писал(а):
15 май 2018, 16:20
как называется система с "нормальным Y"? По которой работают OSM, Mapbox
https://wiki.openstreetmap.org/wiki/Sli ... _tilenames

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 28 май 2018, 11:22
Yuraz
Коллеги, ещё вопрос возник. Есть несколько смежных GeoTiff. Режу один. Потом второй. Когда второй нарезал, некоторые файлы с первого "перезаписываются." Картина такая, что объединения естественно нет, а остается тот квадрат, который нарезался позднее.
Искал, как задать в gdal2tiles.py параметр директорию, так такого нет, режет по-файлово.
На картинке левый рисунок "исчез", и вместо него появился правый.
Как быть с границами? Заранее благодарю!
p1.jpg
p1.jpg (42.57 КБ) 13037 просмотров

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 28 май 2018, 13:41
Yuraz
"в жизни" 4 таких файла бывает на "углах" tiff-а, как на сл. фото. И по 2 файла по сторонам. Склеить с помощью Pillow наверное нет сложностей... взять основу квадрат, где больше всего пикселов, и приклеить не достающие. но все же, кто как обходит... может в отдельную тему вопрос перенести?
p1.jpg
p1.jpg (122.3 КБ) 13017 просмотров

Re: Помогите разобраться с gdal2tiles/MapTiler

Добавлено: 28 май 2018, 13:50
Ariki
Объедините исходные файлы в мозаику с помощью gdalbuildvrt, и её уже режьте на тайлы. Только убедитесь сначала, что поля растров прозрачны (есть два способа задания прозрачности: с помощью значения NODATA и с помощью альфа-канала). Если в растре прозрачности нет, но есть векторный файл с границами картинки, то можно растр обрезать по нему, например, с помощью gdalwarp. Конкретные шаги сильно зависят от исходного материала, иногда приходится повозиться.