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

Пирамиды не работают

Добавлено: 21 апр 2010, 10:52
SS_Rebelious
QGIS отказывается строить/читать пирамиды геотифоф, преобразованных в данный формат из jpeg с привязкой мапинфо.

1. Берём jpeg-изображение, привязанное в мапинфо.
2. Конвертируем гдалтулзом в геотиф ".tif".
3. Открываем полученный геотиф в кугисе, заходим в свойства, пирамиды. Пытаемся посторить пирамиды (неважно, встроенные или внешние). Получаем сообщение "для данного типа растров данная операция не поддерживается".
4. Делаем круглые глаза О_о; не сдаёмся и лезем в гдалтулз - построение пирамид и строим пирамиды для нашего геотифа.
5. С помощью гдалинфо убеждаемся, что пирамиды построены

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

Driver: GTiff/GeoTIFF
Files: D:/GIS-Lab/WGS-84/MI_VE-parts_2-1.tif
Size is 6672, 8192
Coordinate System is `'
GCP Projection = GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.2572235630016,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]]
GCP[  0]: Id=1, Info=
          (0,0) -> (106.710205078125,57.1243140842962,0)
GCP[  1]: Id=2, Info=
          (6672,8192) -> (111.29150390625,53.9431547022493,0)
GCP[  2]: Id=3, Info=
          (0,8192) -> (106.710205078125,53.9431547022493,0)
GCP[  3]: Id=4, Info=
          (6672,0) -> (111.29150390625,57.1243140842962,0)
GCP[  4]: Id=5, Info=
          (3336,4096) -> (109.000854492188,55.5659220302579,0)
GCP[  5]: Id=6, Info=
          (3336,0) -> (109.000854492188,57.1243140842962,0)
GCP[  6]: Id=7, Info=
          (0,4096) -> (106.710205078125,55.5659220302579,0)
GCP[  7]: Id=8, Info=
          (6672,4096) -> (111.29150390625,55.5659220302579,0)
GCP[  8]: Id=9, Info=
          (3336,8192) -> (109.000854492188,53.9431547022493,0)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 8192.0)
Upper Right ( 6672.0,    0.0)
Lower Right ( 6672.0, 8192.0)
Center      ( 3336.0, 4096.0)
Band 1 Block=6672x1 Type=Byte, ColorInterp=Red
  Overviews: 3336x4096, 1668x2048, 834x1024, 417x512, 209x256
Band 2 Block=6672x1 Type=Byte, ColorInterp=Green
  Overviews: 3336x4096, 1668x2048, 834x1024, 417x512, 209x256
Band 3 Block=6672x1 Type=Byte, ColorInterp=Blue
  Overviews: 3336x4096, 1668x2048, 834x1024, 417x512, 209x256
проверяем заоодно в каком-нибудь вьюэре.
6. Открываем растр в кугис, лезем в свойства - пирамиды и видим, что пирамид нет О_о, точнее он их почему-то не видит.

r 13311

UPD. Если делать всё то же самое, но если изначальная привязка jpeg была аркгисовская, то проблем c пирамидами не возникает

UPD2: r 13340 - картина та же.

Re: Пирамиды не работают

Добавлено: 21 апр 2010, 11:45
Дмитрий Барышников
Если изображение не трансформировано, а только зарегистрировано (содержит GCP или матрицу преобразования с поворотом), то QGIS использует врапер (WRAP). Текущая версия gdal не позволяет строить и использовать(!) пирамиды для таких растров. Я зарелизил патч в багтраке gdal (http://trac.osgeo.org/gdal/ticket/2076). Как он работает (если работает :) ) можно посмотреть при помощи моей программы (http://code.google.com/p/wxgis/downloads/list). Я проверял на этом изображении от сюда ftp://ftp.remotesensing.org/pub/geotiff/samples/misc/
P.S. Это уже обсуждалось здесь - viewtopic.php?f=35&t=3421

Re: Пирамиды не работают

Добавлено: 21 апр 2010, 12:18
SS_Rebelious
Bishop писал(а):P.S. Это уже обсуждалось здесь - viewtopic.php?f=35&t=3421
да, видел этот топик, но подумал, что у меня другая проблема.

Простите, а что делает ваша программа? При нажатии на превью, она у меня вылетает.

Дело в том, что гдал тулз строит пирамиды, действительно строит - проверял и гдалинфо и вьюэрами и в других гис.
Bishop писал(а):Если изображение не трансформировано, а только зарегистрировано (содержит GCP или матрицу преобразования с поворотом), то QGIS использует врапер (WRAP)
То есть мне надо как-то по другому преобразовывать мапинфовскую привязку в геотиф? Как именно?

Re: Пирамиды не работают

Добавлено: 21 апр 2010, 12:49
SS_Rebelious
SS_Rebelious писал(а):о есть мне надо как-то по другому преобразовывать мапинфовскую привязку в геотиф? Как именно?
То есть изначальный jpeg файл конвертнуть в тиф, построить пирамиды, а потом уже этот тиф конвертить в геотиф?

Re: Пирамиды не работают

Добавлено: 21 апр 2010, 14:25
Дмитрий Барышников
SS_Rebelious писал(а):Простите, а что делает ваша программа? При нажатии на превью, она у меня вылетает.
Аналог ArcCatalog (просмотр гис файлов и операции с ними). Сгенерил аналогичный файл - дома посмотрю из-за чего ошибка вылетает. Альфа версия - уж не обессудьте.
SS_Rebelious писал(а):То есть мне надо как-то по другому преобразовывать мапинфовскую привязку в геотиф? Как именно?
Надо сделать полное перепроецирование. В ArcGIS это делает команда Rectify из Georeferencing. А у вас получается аналог работы команды Update Georeferencing из Georeferencing (т.е. обновляется метаданные привязки, а пикселы на месте остаются). Попробуйте с помощью QGIS экспортнуть в другой формат и у результата строить пирамиды.

Re: Пирамиды не работают

Добавлено: 21 апр 2010, 17:09
SS_Rebelious
Bishop писал(а):Альфа версия - уж не обессудьте.
Да я всё понимаю, баг репорт был, однако)))
Bishop писал(а):Надо сделать полное перепроецирование.
Это действительно то, что нужно. Ниже решение, которое я сейчас изложу для тех, кто вдруг столкнётся с такой-же проблемой.
Итак, у меня имеется набор геотифов в которых в метаданные забиты точки привязки в WGS84 (хотя конвертируя мапинфовскую привязку в геотиф изначально я надеялся на большее, чем включение точек привязки в теги), но сам растр остаётся непересчитанным и кугис не хочет работать с его пирамидами. Чтобы физически применить проекцию к растру я воспользовался функцией "растр->добавить проекцию" и выбирал WGS84 - ту в которой он и привязан :mrgreen: . Эта функция физически преобразовала растр, заменив информацию о точках привязки на информацию о проекции. Вот как теперь выглядит растр, информация о котором содержится в моём первом посте:

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

Driver: GTiff/GeoTIFF
Files: D:/GIS-Lab/WGS-84/MI_VE-parts_2-1.tif
Size is 8678, 6026
Coordinate System is:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.2572235630016,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.0174532925199433],
    AUTHORITY["EPSG","4326"]]
Origin = (106.710205078124940,57.124314084296280)
Pixel Size = (0.000527906366199,-0.000527906366199)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  ( 106.7102051,  57.1243141) (106d42'36.74"E, 57d 7'27.53"N)
Lower Left  ( 106.7102051,  53.9431503) (106d42'36.74"E, 53d56'35.34"N)
Upper Right ( 111.2913765,  57.1243141) (111d17'28.96"E, 57d 7'27.53"N)
Lower Right ( 111.2913765,  53.9431503) (111d17'28.96"E, 53d56'35.34"N)
Center      ( 109.0007908,  55.5337322) (109d 0'2.85"E, 55d32'1.44"N)
Band 1 Block=8678x1 Type=Byte, ColorInterp=Red
Band 2 Block=8678x1 Type=Byte, ColorInterp=Green
Band 3 Block=8678x1 Type=Byte, ColorInterp=Blue
Таким образом, мы видим, что растр изменил разрешение и выглядит так как должен, а встроенные пирамиды исчезли. Но это не беда, ибо теперь кугис с удовольствием строит их из свойств слоя.

Re: Пирамиды не работают

Добавлено: 21 апр 2010, 21:28
Дмитрий Барышников
SS_Rebelious писал(а): Да я всё понимаю, баг репорт был, однако)))
Спасибо за выловленную ошибку. Патч на http://trac.osgeo.org/gdal/ticket/2076 обновил.