Как записать координаты в файл TIF, используя libgeotiff - PullRequest
2 голосов
/ 16 ноября 2011

Я пытаюсь создать TIF-файл, используя библиотеку GeoTiff. Мне удалось записать все данные в обычный файл TIF, используя стандартную функцию TIF библиотеки, но я не могу понять, как использовать функции для добавления координат углов.

Я искал, например, в Интернете и дошел до возможности добавить информацию, касающуюся геолокации изображения: модель, растр, угловая единица и т. Д. Но я не вижу никаких клавиш для добавления информация о углах, которую я должен получить при выводе информации тега с помощью listgeo: Corners Coordinate

...
GTIFKeySet(gtif, GeogCitationGeoKey, TYPE_ASCII, 7, "WGS 84");
GTIFKeySet(gtif, GeogAngularUnitsGeoKey, TYPE_SHORT, 1, 9102);
GTIFKeySet(gtif, GeogSemiMajorAxisGeoKey, TYPE_DOUBLE, 1, 6378137.0);
GTIFKeySet(gtif, GeogInvFlatteningGeoKey, TYPE_DOUBLE, 1, 298.257223563);
...

Может ли кто-нибудь указать, где я могу найти документацию о том, как записать эти координаты, или какую клавишу / функцию мне нужно использовать для этого, если это возможно?

Приветствие.

1 Ответ

2 голосов
/ 16 ноября 2011

Это, вероятно, лучше всего подходит в качестве комментария, но из-за его размера я опубликую его как ответ.Мои знания ГИС немного заржавели, но давайте посмотрим, как listgeo выводит информацию о углу:

static void GTIFPrintCorners( GTIF *gtif, GTIFDefn *defn, FILE * fp_out,
                              int xsize, int ysize, int inv_flag, int dec_flag )

{
    printf( "\nCorner Coordinates:\n" );
    if( !GTIFReportACorner( gtif, defn, fp_out,
                            "Upper Left", 0.0, 0.0, inv_flag, dec_flag ) )
    {
        printf( " ... unable to transform points between pixel/line and PCS space\n" );
        return;
    }

    // Ommited ...
}

Глядя на GTIFReportACorner, кажется, что он преобразует координаты изображения (0, 0) в соответствующие географические координаты, используяGTIFImageToPCS вместо того, чтобы смотреть прямо на какой-то тег.

Моя ставка в том, что GTIFImageToPCS будет работать нормально, если вы добавите другую информацию, такую ​​как проекция, данные и, возможно, местоположение центра изображения (точки привязки?).

...