Добавление данных с географической привязкой в ​​изображение TIFF

10

Я хочу создать .tiffфайл с географической привязкой из .pngфайла. Поэтому я преобразую .png в обычный .tiffфайл, используя следующую командную строку:

convert image.png image.tiff

Здесь все отлично работает, у меня есть действительный .tiffфайл, который отображается нормально. Затем я хочу добавить в него данные о географической привязке. Для этого я нашел инструмент под названием tiff2geotiff, я использую его так:

tiff2geotiff -4 "+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs" -c none -n "-122.5575664 38.5818201 -122.5449425 38.5896175" notgeoreferenced.tiff georeferenced.tiff

Это дает мне черное изображение, которое, импортированное в QGis, хорошо отображается в хорошем месте, за исключением того, что оно везде черное (доказательство того, что данные с географической привязкой были хорошо добавлены ).

Поэтому, когда я делаю:

gdalinfo georeferenced.tiff

Я получаю:

Warning 1: TIFFReadDirectory:Bogus "StripByteCounts" field, ignoring and calculating from imagelength
Driver: GTiff/GeoTIFF
Files: araujo_tmp.tiff
Size is 1585, 979
Coordinate System is:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.0174532925199433],
    AUTHORITY["EPSG","4326"]]
Origin = (-122.557563781738281,38.589618682861328)
Pixel Size = (0.000007966552118,-0.000007972639275)
Metadata:
  AREA_OR_POINT=Area
  TIFFTAG_DOCUMENTNAME=georeferenced.tiff
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (-122.5575638,  38.5896187) (122d33'27.23"W, 38d35'22.63"N)
Lower Left  (-122.5575638,  38.5818135) (122d33'27.23"W, 38d34'54.53"N)
Upper Right (-122.5449368,  38.5896187) (122d32'41.77"W, 38d35'22.63"N)
Lower Right (-122.5449368,  38.5818135) (122d32'41.77"W, 38d34'54.53"N)
Center      (-122.5512503,  38.5857161) (122d33' 4.50"W, 38d35' 8.58"N)
Band 1 Block=1585x1 Type=Byte, ColorInterp=Red
Band 2 Block=1585x1 Type=Byte, ColorInterp=Green
Band 3 Block=1585x1 Type=Byte, ColorInterp=Blue

Я думаю, что первое предупреждение может быть проблемой ...

Есть кто-то, кто знает, почему или другой способ сделать это? Я ищу решения в командной строке или в PHP.

Спасибо !


Решение

Я обнаружил, что gdal_translateможно добавлять данные с географической привязкой в .tiffизображения , поэтому вот командная строка, которая конвертирует из png и добавляет данные с географической привязкой ( llx ury urx llyконечно, вы должны заменить extents ( )):

gdal_translate -a_nodata 0 -of GTiff -a_srs EPSG:4326 -a_ullr llx ury urx lly pngfile.png tifffile.tiff
Жюльен Фуйе
источник
на ваш вопрос, если есть привязки gdal php, PHP в настоящее время должным образом не поддерживается GDAL / OGR. trac.osgeo.org/gdal/wiki/GdalOgrInPhp
nickves

Ответы:

7

Вместо того, чтобы использовать convert, не могли бы вы попытаться использовать gdal_translateдля преобразования png в tiff, а затем привязать его геопривязкой с помощью gdal_warp (при условии, что вы создали файл tfw для tiff)?

DMCI
источник
Вот командная строка, которую я сейчас использую:gdal_translate -scale pngfile.png tifffile.tiff
Julien Fouilhé
5

Знаете ли вы размеры изображения? Если вы знаете ограничивающие координаты изображения, вы можете использовать gdal_translate с -a_srs (это назначает проекцию) и -a_ullr (это ограничивающие координаты). Я использовал это для преобразования .jpg изображений гидролокатора из недорогого рыболовного гидролокатора в геотифов.

Райан Гарнетт
источник
1
То есть вы говорите, что мне не нужно использовать tiff2geotiff для добавления экстентов изображения (да, они у меня есть)? :) Круто ! Да, я вижу, что в документации я буду использовать его вместо tiff2geotiff, спасибо!
Жюльен Фуйе
Нет проблем, я рад, что это поможет
Райан Гарнетт