Перепроецирование с помощью GDAL

Не знаете, где задать вопрос? Задавайте здесь.
Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 08:32

Все таки дело, видимо, в этом файле привязке.

alexandr cherepanov
Гуру
Сообщения: 534
Зарегистрирован: 30 ноя 2006, 13:31
Репутация: 116
Откуда: Moscow

Re: Перепроецирование с помощью GDAL

Сообщение alexandr cherepanov » 22 мар 2018, 09:03

Если уверены что это 3395 тогда должно быть примерно так

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

2445.9849051256103515625
0.0
0.0
-2440.78067014107666015625
-20036285.35033643719482421875
19993654.859460629461669921875
Если все таки 3857, то

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

2445.9849051256103515625
0
0
-2445.9849051256103515625
-20036285.35033643719482421875
20036285.35033643719482421875

Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 09:22

В обоих случаях выдает ошибку:

ERROR 1: Unable to compute a GEOTRANSFORM based transformation between pixel/lin
e and georeferenced coordinates for map.tif.

Может нужно этот файл привязки как-то указать в GDAL? Как он его распознает вообще?

Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 09:26

А вот, посмотрел какая проекция была.
Я качал карту с SAS.Planet и там по умолчанию стояла такая проекция:

Projection of map - Mercator / Google maps (Sphere Radius 6378137) /EPSG:3785.

Обманул вас, наверное. Извиняюсь.

alexandr cherepanov
Гуру
Сообщения: 534
Зарегистрирован: 30 ноя 2006, 13:31
Репутация: 116
Откуда: Moscow

Re: Перепроецирование с помощью GDAL

Сообщение alexandr cherepanov » 22 мар 2018, 09:43

Создаете файл с именем map.tfw в той же папке, что файл map.tif
Вставляете туда параметры привязки для 3857.

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

2445.9849051256103515625
0
0
-2445.9849051256103515625
-20036285.35033643719482421875
20036285.35033643719482421875
Упрощаем команду до минимума
gdalwarp -s_srs EPSG:3857 -t_srs EPSG:4326 -r lanczos -co COMPRESS=LZW map.tif map_4326.tif

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2230
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1503
Откуда: Казань

Re: Перепроецирование с помощью GDAL

Сообщение Игорь Белов » 22 мар 2018, 09:52

После создания файла привязки map.tfw нужно выполнить команду

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

gdal_edit.py -a_srs EPSG:3395 map.tif
После этого привязка и система координат окажутся внутри map.tif, и не нужно никаких экспериментов.
The purpose of computing is insight, not numbers

Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 10:00

То же самое...

ERROR 1: The transformation is already "north up" or a transformation between pi
xel/line and georeferenced coordinates cannot be computed for map.tif. There is
no affine transformation and no GCPs. Specify transformation option SRC_METHOD=N
O_GEOTRANSFORM to bypass this check.

Все таки, какую СК писать то? :)

Попробовал так:
1) gdal_edit.py -a_srs EPSG:3395 map.tif
gdalwarp -s_srs EPSG:3395 -t_srs EPSG:4326 -r lanczos -co COMPRESS=LZW map.tif map_4326.tif
Не работает.
2) gdal_edit.py -a_srs EPSG:3857 map.tif
gdalwarp -s_srs EPSG:3857 -t_srs EPSG:4326 -r lanczos -co COMPRESS=LZW map.tif map_4326.tif
Не работает

Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 10:02

Причем эти команды никаких ошибок не выдают:
gdal_edit.py -a_srs EPSG:3395 map.tif
gdal_edit.py -a_srs EPSG:3857 map.tif

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2230
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1503
Откуда: Казань

Re: Перепроецирование с помощью GDAL

Сообщение Игорь Белов » 22 мар 2018, 10:28

Каюсь, виноват, был не в себе.
В файле привязки map.tfw последнее число должно быть положительным:

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

2445.98490512564
0
0
-2445.98490512564
-20036285.350336737
20036285.350336737
Регистрируем:

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

gdal_edit.py -a_srs EPSG:3395 map.tif
Перепроецируем:

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

 gdalwarp -t_srs EPSG:4326 map.tif map_4326.tif
Всё должно быть OK.
The purpose of computing is insight, not numbers

Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 10:44

Все равно не делает...

ERROR 1: The transformation is already "north up" or a transformation between pi
xel/line and georeferenced coordinates cannot be computed for map.tif. There is
no affine transformation and no GCPs. Specify transformation option SRC_METHOD=N
O_GEOTRANSFORM to bypass this check.

Хоть ты застрелись...

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2230
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1503
Откуда: Казань

Re: Перепроецирование с помощью GDAL

Сообщение Игорь Белов » 22 мар 2018, 14:01

Зачем же так мрачно! Выложите, наконец, картинку.
The purpose of computing is insight, not numbers

Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 14:57

Да обычная картинка. Вот уменьшенный вариант, полный много весит...
Вложения
map_resize.jpg
map_resize.jpg (2.24 МБ) 5507 просмотров

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2230
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1503
Откуда: Казань

Re: Перепроецирование с помощью GDAL

Сообщение Игорь Белов » 22 мар 2018, 15:28

Это просто. Превратим JPEG в GeoTIFF:

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

gdal_translate -of GTiff -a_srs EPSG:3395 -gcp 0 0 -20037508.34 20037508.34 -gcp 3000 0 20037508.34 20037508.34 -gcp 0 3000 -20037508.34 -20037508.34 map_resize.jpg map_resize.tif
Трансформируем в географическую WGS 84:

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

gdalwarp -t_srs EPSG:4326 map_resize.tif map_resize_4326.tif
Вложения
map_resize_4326.jpg
map_resize_4326.jpg (856.93 КБ) 5501 просмотр
The purpose of computing is insight, not numbers

Gerhald
Интересующийся
Сообщения: 17
Зарегистрирован: 21 мар 2018, 17:45
Репутация: 0
Откуда: Беларусь

Re: Перепроецирование с помощью GDAL

Сообщение Gerhald » 22 мар 2018, 16:14

О, здорово!
Теперь преобразует, но неправильно. Видимо из-за того, что у меня размеры оригинальной карты 16384x16384 пикселя. Как правильно теперь прописать координаты для такого изображения?
Объясните в двух словах, как распознавать эти цифры:

-gcp 0 0 -20037508.34 20037508.34 -gcp 3000 0 20037508.34 20037508.34 -gcp 0 3000 -20037508.34 -20037508.34

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2230
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1503
Откуда: Казань

Re: Перепроецирование с помощью GDAL

Сообщение Игорь Белов » 22 мар 2018, 16:17

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

gdal_translate -of GTiff -a_srs EPSG:3395 -gcp 0 0 -20037508.34 20037508.34 -gcp 16384 0 20037508.34 20037508.34 -gcp 0 16384 -20037508.34 -20037508.34 map_resize.jpg map_resize.tif
Опция -gcp задаёт точку привязки: пара координат в пикселях растра и пара координат на глобусе.
RTFM
The purpose of computing is insight, not numbers

Ответить

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

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

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