Преобразование (трансформация) растра в формате TAB

Ответить
Михаил И
Новоприбывший
Сообщения: 3
Зарегистрирован: 14 фев 2023, 15:59
Репутация: 0
Откуда: Гатчина

Преобразование (трансформация) растра в формате TAB

Сообщение Михаил И » 14 фев 2023, 16:02

Всем добрый день!
Есть задачка, исходные данные таковы. Есть привязанный растр в формате TAB.

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

!table
!version 300
!charset WindowsCyrillic
Definition Table
  File "111.bmp"
Type "RASTER"
  (44.0461984616476,56.2982400383213) (458,57) Label "Pt 1",
  (44.0462834642883,56.2982240394613) (770,223) Label "Pt 2",
  (44.0462854669705,56.2981750386491) (768,463) Label "Pt 3",
  (44.0462004650842,56.2981770372676) (462,473) Label "Pt 4"
CoordSys Earth Projection 1, 104
Units "degree"
Растр привязан из имеющегося плана помещения, который изначально никак не связан с географическими координатами. Допустим, что растр расположен относительно севера наоброт, то есть его низ - сверху, а верх - снизу. Ну или под каким-нибудь углом.

Задача состоит в трансформации (скорее, повороте) этого растра таким образом, чтобы создался новый растр, ориентированный стандартно, с юга на север (North-up).

Насколько я понимаю, проекция и ситема координат при этом не меняется, должен происходить только пересчет самой картинки и видимо должен создаваться новый файл привязки.

Вроде как это можно сделать через gdalwarp, так ли это?
Кажется, gdalwarp не поддерживает напрямую формат Tab, вероятно его надо преобразовать в GeoTiff или любой другой поддерживаемый формат?

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

Re: Преобразование (трансформация) растра в формате TAB

Сообщение Игорь Белов » 14 фев 2023, 22:45

Задача выполняется в два действия.
  1. Создать датасет с опознаками:

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

    gdal_translate -a_srs EPSG:4326 -gcp 458 57 44.0461984616476 56.2982400383213 -gcp 770 223 44.0462834642883 56.2982240394613 -gcp 768 463 44.0462854669705 56.2981750386491 -gcp 462 473 44.0462004650842 56.2981770372676 -co COMPRESS=LZW 111.bmp 111a.tif
  2. Трансформировать:

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

    gdalwarp -order 1 -co COMPRESS=LZW 111a.tif 111b.tif
Кстати, использование в данной задаче географической системы координат вместо проекции вызывает недоумение.
The purpose of computing is insight, not numbers

Михаил И
Новоприбывший
Сообщения: 3
Зарегистрирован: 14 фев 2023, 15:59
Репутация: 0
Откуда: Гатчина

Re: Преобразование (трансформация) растра в формате TAB

Сообщение Михаил И » 17 фев 2023, 13:27

Добрый день! Извиняюсь за свое невежество, мой уровень знаний по проекциям и в целом о картографии очень низок.
Я, к сожалению, не могу найти в интернете полных сведений по вариантам значений параметра -a_srs. Скорее всего, я просто не умею/не знаю как найти подробное описание.
Вроде как, мы используем проекцию Гаусса-Крюгера, я бы хотел научится преобразовывать такие растры в GeoTif тоже. Есть ли где-то подробная информация, какие коды в параметре -a_srs каким проекциям соответствуют?

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

!table
!version 300
!charset WindowsCyrillic

Definition Table   
  File "111.tif" 
  Type "RASTER"    
  (8440803.6464934107,6241983.5989425704) (0,0) Label "Pt 1",
  (8440912.1430054102,6241983.5989425704) (1272,0) Label "Pt 2",
  (8440912.1430054102,6241935.8331825705) (1272,560) Label "Pt 3",
  (8440803.6464934107,6241935.8331825705) (0,560) Label "Pt 4"
            
CoordSys Earth Projection 8, 1001, "m", 45 , 0, 1,  8500000, 0 
Units "m" 
RasterStyle 4 1 
RasterStyle 7 0
RasterStyle 8 200

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

Re: Преобразование (трансформация) растра в формате TAB

Сообщение Игорь Белов » 17 фев 2023, 14:58

Михаил И писал(а):
17 фев 2023, 13:27
CoordSys Earth Projection 8, 1001, "m", 45 , 0, 1, 8500000, 0
Если установлена MapInfo, можно найти описание этой проекции в файле MAPINFOW.PRJ:

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

"GK Zone 8 (Pulkovo 1942)\p28408", 8, 1001, 7, 45, 0, 1, 8500000, 0
Строка "\p28408" в конце названия означает EPSG:28408.

Если установлен QGIS, в диалоге выбора системы координат очень удобно искать, например, по строке "gauss-kruger zone 8". В процессе ввода будут предлагаться подходящие СК, остаётся выбрать EPSG:28408 "Pulkovo 1942 / Gauss-Kruger zone 8".

Если никаких программ нет, ищете на сайте epsg.io и находите EPSG:28408 "Pulkovo 1942 / Gauss-Kruger zone 8"
The purpose of computing is insight, not numbers

Михаил И
Новоприбывший
Сообщения: 3
Зарегистрирован: 14 фев 2023, 15:59
Репутация: 0
Откуда: Гатчина

Re: Преобразование (трансформация) растра в формате TAB

Сообщение Михаил И » 02 мар 2023, 15:20

Да, все работает и поворачивается, супер!
Появился следующий вопрос. Допустим, у нас есть вектора и полигоны, импортированные из Автокада, в каком-то формате, к примеру MIF. Привязаны они по местным координатам.
Мы хотим привязать эти вектора и полигоны к реальным географическим координатам, так же, как и растровое изображение.
Можно ли поворачивать таким же образом вектора и полигоны по известной новой географической привязке?

nuk
Новоприбывший
Сообщения: 1
Зарегистрирован: 17 апр 2023, 18:46
Репутация: 0
Откуда: Мск

Re: Преобразование (трансформация) растра в формате TAB

Сообщение nuk » 17 апр 2023, 19:06

У меня такая задача - Есть растры привязанные к EPSG, и есть локальные системы координат. Есть матрицы 3х3 сдвиг+поворот для пересчета координат из EPSG в локальную СК.
Мне надо трансформировать растры с учётом этой матрицы.

Вижу два варианта:
1. Вытащить координаты углов, конвертировать их через матрицу и задать обратно в geotiff
2. Видел вариант что в систему координат в формате WKT в строку parameters можно каким то образом задать такую матрицу но не разобрался каким образом.

Могли бы подсказать как командами через гдал модно реализовать один из этих методов или предложить другой?

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Преобразование (трансформация) растра в формате TAB

Сообщение gamm » 17 апр 2023, 19:54

В самом geotiff есть возможность задать transform безотносительно проекции. Из питона это делается вызовом соответствующей функции ds.SetGeoTransform(GeoRef) , возможно и с командной строки это можно сделать, смотрите утилиты gdal. Самый простой вариант записать трансформацию в world фафйл, и указать его как приоритетный
https://gdal.org/drivers/raster/gtiff.html
https://gis.stackexchange.com/questions ... rotate-dem

Ответить

Вернуться в «GDAL/OGR»

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

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