Привязка растра(ов) и тайлизация. Что я делаю не так.

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
Oval
Участник
Сообщения: 64
Зарегистрирован: 30 дек 2014, 14:40
Репутация: 15

Привязка растра(ов) и тайлизация. Что я делаю не так.

Сообщение Oval » 31 дек 2014, 11:11

Попытался по сведениям из сети самостоятельно привязать сначала один, а потом три больших растра и подготовить тайлы с помощью пакета GDAL.
Результат получил неоднозначный с вопросами, которые ниже, а пока пошагово покажу что делал:
1. Растры большие по размеру 20 000 х 20 000. Сделал уменьшенные копии и привязал их вручную в GoogleEarth. Сохранил результаты привязки в KML откуда получил WGS-84 координаты всех углов.
2. По инструкции https://developers.google.com/kml/articles/raster начал растеризацию одного из растров:
2.1 Первый вариант

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

gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 60.506686 56.86384779 -gcp 20000 0 60.53936839 56.86453079 -gcp 20000 20000 60.5406218 56.8465308 Ekb16_17.tif out_.vrt

gdalwarp -of VRT -t_srs EPSG:4326 out_.vrt out.vrt

gdal2tiles -p geodetic -k out.vrt
Результат получился неоднозначный:
Изображение
2.2 Второй вариант. Теже самые шаги но без

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

gdalwarp -of VRT -t_srs EPSG:4326 out_.vrt out.vrt
Результат получше:
Изображение
Попиксельное сравнение одинаковых участков двух вариантов не выявило никаких различий. (Зачем тогда вобще нужна команда gdalwarp?)
3. Привязка нескольких растров:
Завожу координаты прямо в GeoTIFF:

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

gdal_translate -a_srs EPSG:4326 -gcp 0 0 60.506686 56.86384779 -gcp 20000 0 60.53936839 56.86453079 -gcp 20000 20000 60.5406218 56.8465308 Ekb16_17.tif Ekb16_17_.tif

gdal_translate -a_srs EPSG:4326 -gcp 0 0 60.66481325 56.95679108 -gcp 20000 0 60.69771383 56.95734496 -gcp 20000 20000 60.69878045 56.93944602 Ekb21_22.tif Ekb21_22_.tif

gdal_translate -a_srs EPSG:4326 -gcp 0 0 60.66597832 56.9388369 -gcp 20000 0 60.69879873 56,93943418 -gcp 20000 20000 60.70024946 56.92138972 Ekb20_22.tif Ekb20_22_.tif
пытаюсь создать vrt файл:

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

gdalbuildvrt -addalpha out.vrt Ekb16_17_.tif Ekb21_22_.tif Ekb20_22_.tif
получаю ошибку:

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

0...10...20...30.Warning 6: gdalbuildvrt does not support ungeoreferenced image.
 Skipping Ekb16_17_.tif
..40...50...60..Warning 6: gdalbuildvrt does not support ungeoreferenced image.
Skipping Ekb21_22_.tif
.70...80...90...100 - done.
Warning 6: gdalbuildvrt does not support ungeoreferenced image. Skipping Ekb20_2
2_.tif
путем гугления ввожу команды:

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

gdalwarp Ekb16_17_.tif Ekb16_17__.tif
gdalwarp Ekb20_22_.tif Ekb20_22__.tif
gdalwarp Ekb21_22_.tif Ekb21_22__.tif
и делаю тайлы:

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

gdalbuildvrt -addalpha out.vrt Ekb16_17__.tif Ekb21_22__.tif Ekb20_22__.tif
gdal2tiles -p geodetic -k out.vrt
В результате растры хоть и привязались, но имеют схожий с первым вариантом непрезентабельный вид с черными треугольниками по краям:
Изображение
Вопросы:
1. Как правильно растеризировать много растров без этих треугольников по краям? (Без команды gdalwarp?)
2. Как улучшить качество растеризации? Сейчас оно теряется:
Качество исходного растра
Изображение
Качество тайлов при одинаковом масштабе
Изображение

Oval
Участник
Сообщения: 64
Зарегистрирован: 30 дек 2014, 14:40
Репутация: 15

Re: Привязка растра(ов) и тайлизация. Что я делаю не так.

Сообщение Oval » 31 дек 2014, 11:34

Oval писал(а): 2. Как улучшить качество растеризации? Сейчас оно теряется:
Да, при растеризации происходит поворот исходного растра, но поворот растра стандартным редактором картинок Windows на схожий угол не приводит к потере качества.

Oval
Участник
Сообщения: 64
Зарегистрирован: 30 дек 2014, 14:40
Репутация: 15

Re: Привязка растра(ов) и тайлизация. Что я делаю не так.

Сообщение Oval » 31 дек 2014, 11:41

ПС: после растеризации gdal2tiles индикатор прогресса отчитывается о проделанной работе, но возникает ошибка:
Изображение
может быть это причина ухудшения качества? (например не генерируется последний исходный зум?)

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Привязка растра(ов) и тайлизация. Что я делаю не так.

Сообщение Донецков » 31 дек 2014, 13:51

про потерю качества что-то встречалось в теме про wxGIS...

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Привязка растра(ов) и тайлизация. Что я делаю не так.

Сообщение Дмитрий Барышников » 31 дек 2014, 18:24

1. gdal_translate преобразовывает из одного растрового формата в другой. Привязкой, в чистом виде, эта утилита не занимается. Максимум, что может сделать - это перекрыть (или назначить) новую систему координат и/или экстент. Вы как раз при помощи нее указываете точки привязки.
2. gdalwarp - как раз занимается привязкой. Причем, при привязке происходит изменение пикселов, и не обязательно, что линейно, могут быть полиномы 2-го и 3-го порядка. Т.е., пикселы переносятся в новые сеста на ракстре на основе того как вы расставили точки в шаге 1.
3. Для удаления черных "рамок" можно либо добавить ключи к gdalwarp (-dstalpha -dstnodata none -wo "UNIFIED_SRC_NODATA=YES") либо использовать утилиту nearblack (http://gdal.org/nearblack.html)
4. По поводу ошибки - какая версия gdal?
5. По поводу качества - вы неправильно выбрали выходжную СК EPSG:4326 - лучше брать как у исходного растра или большого растра что на скриншоте

Вообще на этапе выполнения команды gdalwarp вам следует:
1. На выходе делать tiff (vrt - это просто текстовый файл и все особенность в него могут быть не добавлены).
2. Нужно поставить правильное выходное разрешение растра через ключ -tr (такое же как у лучшего из исходных или еще лучше)
3. Поиграйтесь с разными алгоритмами сглаживания - -r

Что то типа такого:
gdal_translate -of VRT -a_srs EPSG:DDDD -gcp 0 0 xxxxxx.xxxx yyyyyyy.yyy -gcp 20000 0 xxxxxx.xxxx yyyyyyy.yyy -gcp 20000 20000 xxxxxx.xxxx yyyyyyy.yyy Ekb16_17.tif out_.vrt //координаты в СК выходного изображения, например, в UTM

gdalwarp -tr 0.5 -r lanczos -dstalpha -dstnodata none -wo "UNIFIED_SRC_NODATA=YES" out_.vrt out.tif

gdal2tiles -p geodetic -k out.tiff

Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя