SIP: GeoTIFF – obraz rastrowy z georeferencją i geokodowaniem, cz.2. Znaczniki

Wyróżnia się trzy grupy znaczników w TIFF-ie:
• znaczniki standardowe, w których zostają zapisane podstawowe informacje dotyczące pliku, np.: wymiary obrazu, zastosowany rodzaj kodowania, ilość bitów przypadających na jednostkę zapisanych danych;
• znaczniki rozszerzone, inne dane dotyczące pliku
• znaczniki prywatne,

W znacznikach standardowych i rozszerzonych jest podstawowa informacja o rastrze, ale brak w niej odniesienia do przestrzeni. Format GeoTIFF powstał na drodze powszechnego zaakceptowania i zestandaryzowania znaczników prywatnych.

Plik TIFF jest złożony z trzech sekcji:
• nagłówka ogólnego – Image File Header (IFH),
• nagłówka(-ów) szczegółowego – Image File Directory (IFD),
• właściwych danych obrazowych.

Tylko nagłówek ogólny ma stałą pozycję i rozmiar (8-bajtów).
Najważniejszy jest segment IFD, w którym opisana jest szczegółowo organizacja obrazu.

GeoTIFF

Tagi (znaczniki) i GeoKeys (geoklucze)

Jest sześć tagów (znaczników) TIFF zarezerwowanych dla GeoTIFF-a:

ModelPixelScaleTag (33550)
ModelTransformationTag (33264)
ModelTiepointTag (33922)
GeoKeyDirectoryTag (34735)
GeoDoubleParamsTag (34736)
GeoAsciiParamsTag (34737)

Code
Nazwa
Właściciel / użycie w aplikacjach
Dec
Hex
33550
830E
ModelPixelScaleTag
SoftDesk / powszechne
33918
847E
INGR Packet Data Tag
Intergraph / lokalne.
33919
847F
INGR Flag Registers
Intergraph / lokalne
33920
8480
IrasB Transformation Matrix
Intergraph / tylko  IrasB
33922
8482
ModelTiepointTag
Intergraph / powszechne
34264
85D8
ModelTransformationTag
JPL Carto Group / powszechne
34735
87AF
GeoKeyDirectoryTag
SPOT / powszechne
34736
87B0
GeoDoubleParamsTag
SPOT / powszechne
34737
87B1
GeoAsciiParamsTag
SPOT / powszechne
42112
A480
GDAL_METADATA
GDAL library …
42113
A481
GDAL_NODATA
GDAL library

GeoTIFF wykorzystuje również tzw. geoklucze (GeoKeys), których konstrukcja jest zasadniczo taka sama jak w przypadku standardowych znaczników TIFF, ale przechowuje takie informacja jak: odwzorowanie, układ współrzędnych, punkt odniesienia i elipsoidy.

Wśród powyższych znacznik GeoKeyDirectoryTag jest punktem wejścia dla wszystkich geokluczy (GeoKeys), tj. wszystkie GeoKeys są dostępne poprzez  ten znacznik.

Znacznik GeoKeyDirectoryTag zawiera następujące pola z informacje:

(1) Tag = 34735 (87AF.H) – wartość, oznaczenie tagu
(2) Type =  3 – typ danych wyrażony jednocyfrową liczbą całkowitą dodatnią (integer)
(3) N – liczba całkowita  >= 4,  wskazująca liczbę wartości zawartych w tej zmiennej
(4) Adres pliku z tym wartościami

Specyfikacja dopuszcza również pola:

(5) Alias: ProjectionInfoTag, CoordSystemInfoTag – powiązania z innymi tagami
(6) Owner: SPOT Image, Inc

Wartości geokluczy (GeoKey), wchodzących w skład znacznika GeoKeyDirectoryTag, są tablicą czterech lub więcej jednocyfrowych liczb całkowitych dodatnich (jak wskazuje w drugim i trzecim polu GeoKeyDirectoryTag), które pogrupowano w bloki po 4:

{{KeyDirectoryVersion, KeyRevision, MinorRevision, NumberOfKeys},

{KeyID, TIFFTagLocation, Count, ValueOffset}
… ,
{KeyID, TIFFTagLocation, Count, ValueOffset}}

Pierwsza grupa zawiera informacje nagłówka klucza (tzw. Header), w tym numer wersji i numer geokluczy (GeoKeys).

Po nagłówku są bloki kluczy (jeden wiersz to jeden GeoKey), który każdy zawiera cztery pola.

Ilość bloków wskazane jest przez wartość NumberOfKeys w nagłówku.

Pierwsze pole KeyID jest numerem  identyfikacyjnym. KeyID mówi o wartości zawartych lub wskazanych  przez ten klucz.

Drugie pole, TIFFTagLocation, wskazuje, z którego znacznika TIFF można uzyskać wartości geoklucza (GeoKey). Podobnie jak w przypadku znacznika TIFF,  jeśli pole to zawiera wartość zero, to mówi, że istnieje tylko jednocyfrowa liczba całkowita dodatnia (integer)  w kluczu i wartości są przechowywane bezpośrednio w czwartym polu klucza, w obszarze ValueOffset.

Trzecie pole,  Count,  stanowi liczbę wartości zawartych w kluczu.

Ostatnie pole, ValueOffset, wskazuje na pozycję w tablicy wartości zmiennej TIFF, o których mowa w polu TIFFTagLocation.

Różnica pomiędzy TIFF a GeoTIFF polega na tym, że znacznik TIFF przekazuje takie parametry jak np. ImageWidth podczas GeoTIFF (za pomocą kluczy zawartych w znacznikach) daje informacje geoprzestrzenne, takie jak np. GeogPrimeMeridianGeoKey, który określa lokalizację głównego południka do geograficznego układu współrzędnych, ale o tym w innej części.

Definicja układu współrzędnych

Następujące klucze w znaczniku GeoKeyDirectoryTag odpowiadają za informacje o układzie współrzędnych:
ModelTypeGeoKey
1 =ModelTypeProjected
2 =ModelTypeGeographic
3 =ModelTypeGeocentric
RasterTypeGeoKey
1 =RasterPixelIsArea
2 =RasterPixelIsPoint
ProjCoordTransGeoKey
1 = TransverseMercator
7 = Mercator
14 = Stereographic
……..
32767 = definiowany przez użytkownika
ProjectedCSTypeGeoKey
…..
32633 =WGS84_UTM_zone_33N
32634 =WGS84_UTM_zone_34N
32635 =WGS84_UTM_zone_35N
………..
32767 = definiowany przez użytkownika
GeographicTypeGeoKey
4019 =GRS1980
4024 =Krassowsky1940
4030 =WGS84

Definicje układu pikselowego

GeoTIFF zawiera klucze:

PixelIsArea – który przekazuje współrzędne lewego górnego narożnika pierwszego piksela (Xo, Yo),
PixelIsPoint – który przekazuje współrzędne środka lewego górnego piksela (Xo, Yo),

Znaczniki współrzędnych i skali
Znaczniki odpowiedzialne za przekazanie współrzednych i skali to: ModelTiepointTag  i ModelPixelScaleTag
Najczęściej występują razem.

ModelTiepointTag (2,3)

0          0          0

X0        Y0        0

ModelPixelScaleTag (1,3)

Sx        Sy        0

ModelTiepointTag (2,3) to de facto macierz, gdzie:
0          0          0 – współrzędne początku układu
X0        Y0        0 – współrzędne piksela

Dla NMT (numerycznego modelu terenu) można zastosować:
0          0          0
X0        Y0        Z0
gdzie Z0 – stała dodawana do wysokości