úÁÍÅÔÉÍ, ÞÔÏ ÎÁÂÏÒ ÄÁÎÎÙÈ GDAL É ÍÏÄÅÌØ ÒÁÓÔÒÏ×ÙÈ ËÁÎÁÌÏ× ÉÚÎÁÞÁÌØÎÏ ÂÁÚÉÒÕÅÔÓÑ ÎÁ ÓÐÅÃÉÆÉËÁÃÉÉ ÒÅÇÕÌÑÒÎÙÈ ÐÏËÒÙÔÉÊ ËÏÎÓÏÒÃÉÕÍÁ OpenGIS.
äÏÐÏÌÎÉÔÅÌØÎÙÅ Ó×ÅÄÅÎÉÑ Ï ÏÐÒÅÄÅÌÅÎÉÑÈ ËÏÏÒÄÉÎÁÔÎÙÈ ÓÉÓÔÅÍ Ó ÐÏÍÏÝØÀ ÓÔÒÏË OpenGIS WKT É ÓÐÏÓÏÂÁÈ ÒÁÂÏÔÙ Ó ÎÉÍÉ ÍÏÖÎÏ ÎÁÊÔÉ × ÒÁÚÄÅÌÅ osr_tutorial, Á ÔÁËÖÅ × ÄÏËÕÍÅÎÔÁÃÉÉ ÎÁ ËÌÁÓÓ OGRSpatialReference.
ëÏÏÒÄÉÎÁÔÎÁÑ ÓÉÓÔÅÍÁ, ×ÏÚ×ÒÁÝÁÅÍÁÑ ÍÅÔÏÄÏÍ GDALDataset::GetProjectionRef() ÏÐÉÓÙ×ÁÅÔ ÇÅÏÄÅÚÉÞÅÓËÉÅ ËÏÏÒÄÉÎÁÔÙ, ÏÐÒÅÄÅÌÑÅÍÙÅ Ó ÐÏÍÏÝØÀ ÍÁÔÒÉÃÙ ÁÆÆÉÎÎÏÇÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ, ×ÏÚ×ÒÁÝÁÅÍÏÊ ÆÕÎËÃÉÅÊ GDALDataset::GetGeoTransform(). ëÏÏÒÄÉÎÁÔÎÁÑ ÓÉÓÔÅÍÁ, ×ÏÚ×ÒÁÝÁÅÍÁÑ ÍÅÔÏÄÏÍ GDALDataset::GetGCPProjection() ÏÐÉÓÙ×ÁÅÔ ÇÅÏÄÅÚÉÞÅÓËÉÅ ËÏÏÒÄÉÎÁÔÙ ÎÁÚÅÍÎÙÈ ËÏÎÔÒÏÌØÎÙÈ ÔÏÞÅË, ÓÐÉÓÏË ËÏÔÏÒÙÈ ÄÁ£Ô ÍÅÔÏÄ GDALDataset::GetGCPs().
úÁÍÅÔÉÍ, ÞÔÏ ÐÕÓÔÁÑ ÓÔÒÏËÁ (""), ×ÏÚ×ÒÁÝÁÅÍÁÑ × ËÁÞÅÓÔ×Å ÏÐÒÅÄÅÌÅÎÉÑ ËÏÏÒÄÉÎÁÔÎÏÊ ÓÉÓÔÅÍÙ, ÏÚÎÁÞÁÅÔ ÏÔÓÕÔÓÔ×ÉÅ ÉÎÆÏÒÍÁÃÉÉ Ï ËÏÏÒÄÉÎÁÔÎÏÊ ÓÉÓÔÅÍÅ.
íÁÔÒÉÃÁ ÁÆÆÉÎÎÏÇÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÓÏÓÔÏÉÔ ÉÚ ÛÅÓÔÉ ËÏÜÆÆÉÃÉÅÎÔÏ×, ×ÏÚ×ÒÁÝÁÅÍÙÈ ÍÅÔÏÄÏÍ GDALDataset::GetGeoTransform(), ËÏÔÏÒÁÑ ÏÔÏÂÒÁÖÁÅÔ ÓÔÒÏËÕ/ÓÔÏÌÂÅÃ × ÐÒÏÓÔÒÁÎÓÔ×Ï ÇÅÏÄÅÚÉÞÅÓËÉÈ ËÏÏÒÄÉÎÁÔ ÐÏ ÓÌÅÄÕÀÝÅÍÕ ÓÏÏÔÎÏÛÅÎÉÀ:
Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)
Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)
÷ ÓÌÕÞÁÅ ÉÚÏÂÒÁÖÅÎÉÊ, ×ÅÒÈÎÑÑ ÒÁÍËÁ ËÏÔÏÒÙÈ ÏÒÉÅÎÔÉÒÏ×ÁÎÁ ÎÁ ÓÅ×ÅÒ, ËÏÜÆÆÉÃÉÅÎÔÙ GT(2) É GT(4) ÒÁ×ÎÙ ÎÕÌÀ, GT(1) ÒÁ×ÅÎ ÛÉÒÉÎÅ ÐÉËÓÅÌÁ, Á GT(5) --- ÅÇÏ ×ÙÓÏÔÅ. ëÏÏÒÄÉÎÁÔÙ (GT(0),GT(3)) ÚÁÄÁÀÔ ÐÏÌÏÖÅÎÉÅ ×ÅÒÈÎÅÇÏ ÌÅ×ÏÇÏ ÕÇÌÁ ×ÅÒÈÎÅÇÏ ÌÅ×ÏÇÏ ÐÉËÓÅÌÁ ÒÁÓÔÒÁ.
úÁÍÅÔÉÍ, ÞÔÏ ËÏÏÒÄÉÎÁÔÙ ÓÔÒÏËÁ/ÓÔÏÌÂÅà ÍÏÇÕÔ ÐÒÉÎÉÍÁÔØ ÚÎÁÞÅÎÉÑ ÏÔ (0.0,0.0) × ×ÅÒÈÎÅÍ ÌÅ×ÏÍ ÕÇÌÕ ×ÅÒÈÎÅÇÏ ÌÅ×ÏÇÏ ÐÉËÓÅÌÁ ÄÏ (ÛÉÒÉÎÁ_× ÐÉËÓÅÌÁÈ,×ÙÓÏÔÁ_×_ÐÉËÓÅÌÁÈ) × ÐÒÁ×ÏÍ ÎÉÖÎÅÍ ÕÇÌÕ ÐÒÁ×ÏÇÏ ÎÉÖÎÅÇÏ ÐÉËÓÅÌÁ. ðÏÌÏÖÅÎÉÅ ÃÅÎÔÒÁ ×ÅÒÈÎÅÇÏ ÌÅ×ÏÇÏ ÐÉËÓÅÌÁ × ÔÅÒÍÉÎÁÈ ÓÔÒÏËÁ/ÓÔÏÌÂÅà ÂÕÄÅÔ, ÔÁËÉÍ ÏÂÒÁÚÏÍ, (0.5,0.5).
typedef struct
{
char *pszId;
char *pszInfo;
double dfGCPPixel;
double dfGCPLine;
double dfGCPX;
double dfGCPY;
double dfGCPZ;
} GDAL_GCP;
óÔÒÏËÁ pszId ÄÏÌÖÎÁ ÂÙÔØ ÕÎÉËÁÌØÎÙÍ (É, ÞÁÓÔÏ, ÎÏ ÎÅ ×ÓÅÇÄÁ, ÞÉÓÌÏ×ÙÍ) ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ ÄÌÑ ËÏÎÔÒÏÌØÎÏÊ ÔÏÞËÅ × ÓÐÉÓËÅ ÔÏÞÅË ÄÁÎÎÏÇÏ ÎÁÂÏÒÁ. pszInfo --- ÜÔÏ ÏÂÙÞÎÏ ÐÕÓÔÁÑ ÓÔÒÏËÁ, ÎÏ ÏÎÁ ÔÁËÖÅ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÌÀÂÏÊ ×ÓÐÏÍÏÇÁÔÅÌØÎÙÊ ÔÅËÓÔ, ÏÔÎÏÓÑÝÉÊÓÑ Ë ÄÁÎÎÏÊ ÔÏÞËÅ. ôÅÏÒÅÔÉÞÅÓËÉ ÜÔÏ ÐÏÌÅ ÍÏÖÅÔ ÔÁËÖÅ ÓÏÄÅÒÖÁÔØ ÍÁÛÉÎÎÏ ÞÉÔÁÅÍÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÔÁÔÕÓÅ ÄÁÎÎÏÊ ÔÏÞËÉ, ÏÄÎÁËÏ × ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÜÔÁ ×ÏÚÍÏÖÎÏÓÔØ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ.
ëÏÏÒÄÉÎÁÔÙ (dfGCPPixel, dfGCPLine) ÚÁÄÁÀÔ ÐÏÌÏÖÅÎÉÅ ÔÏÞËÉ ÎÁ ÒÁÓÔÒÅ. ëÏÏÒÄÉÎÁÔÙ (dfGCPX, dfGCPY, dfGCPZ) ÚÁÄÁÀÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÐÒÉ×ÑÚËÕ ÔÏÞËÉ Ë ÇÅÏÄÅÚÉÞÅÓËÉÍ ËÏÏÒÄÉÎÁÔÁÍ (ËÏÏÒÄÉÎÁÔÁ Z ÞÁÓÔÏ ÂÙ×ÁÅÔ ÎÕÌ£Í).
íÏÄÅÌØ ÄÁÎÎÙÈ GDAL ÎÅ ÓÏÄÅÒÖÉÔ ÍÅÈÁÎÉÚÍÁ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ, ÐÏÌÕÞÁÅÍÏÇÏ ÉÚ ËÏÎÔÒÏÌØÎÙÈ ÔÏÞÅË, --- ÜÔÏ ÏÓÔÁ×ÌÅÎÏ ÄÌÑ ÐÒÉÌÏÖÅÎÉÊ ÂÏÌÅÅ ×ÙÓÏËÏÇÏ ÕÒÏ×ÎÑ. ïÂÙÞÎÏ ÄÌÑ ÜÔÏÇÏ ÐÒÉÍÅÎÑÀÔÓÑ ÐÏÌÉÎÏÍÙ ÏÔ 1-ÇÏ ÄÏ 5-ÇÏ ÐÏÒÑÄËÁ.
ïÂÙÞÎÏ ÎÁÂÏÒ ÄÁÎÎÙÈ ÓÏÄÅÒÖÉÔ ÌÉÂÏ ÁÆÆÉÎÎÏÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ, ÌÉÂÏ ËÏÎÔÒÏÌØÎÙÅ ÔÏÞËÉ, ÌÉÂÏ ÎÉÞÅÇÏ. ÷ ÒÅÄËÉÈ ÓÌÕÞÁÑÈ ÍÏÖÅÔ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ É ÔÏ, É ÄÒÕÇÏÅ, ÔÏÇÄÁ ÎÅ ÏÐÒÅÄÅÌÅÎÏ, ËÁËÏÊ ÉÚ ÓÐÏÓÏÂÏ× ÉÍÅÅÔ ÐÒÅÉÍÕÝÅÓÔ×Ï.
íÅÈÁÎÉÚÍ ÕÐÒÁ×ÌÅÎÉÑ ÍÅÔÁÄÁÎÎÙÍÉ ÈÏÒÏÛÏ ÏÐÔÉÍÉÚÉÒÏ×ÁÎ ÄÌÑ ÒÁÂÏÔÙ Ó ÏÞÅÎØ ÂÏÌØÛÉÍÉ ÂÌÏËÁÍÉ ÄÁÎÎÙÈ. ïÄÎÁËÏ ÒÁÂÏÔÁ Ó ÍÅÔÁÄÁÎÎÙÍÉ, ÐÒÅ×ÙÛÁÀÝÉÍÉ × ÒÁÚÍÅÒÅ 100KiB ÓËÏÒÅÅ ×ÓÅÇÏ ÐÒÉ×ÅÄ£Ô Ë ÓÎÉÖÅÎÉÀ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ.
÷ ÂÕÄÕÝÅÍ ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ ××ÅÄÅÎÉÅ ÎÅÓËÏÌØËÉÈ ÓÔÁÎÄÁÒÔÎÙÈ ËÌÀÞÅÊ Ó ÐÒÅÄÏÐÒÅÄÅÌ£ÎÎÏÊ ÓÅÍÁÎÔÉËÏÊ, ÏÄÎÁËÏ × ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÔÁËÏ×ÙÈ ÎÅÔ.
îÅËÏÔÏÒÙÅ ÆÏÒÍÁÔÙ ÄÁÎÎÙÈ ÓÏÄÅÒÖÁÔ ÓÏÂÓÔ×ÅÎÎÙÅ ÍÅÔÁÄÁÎÎÙÅ, × ÔÏ ×ÒÅÍÑ ËÁË ÄÒÁÊ×ÅÒÙ ÄÌÑ ÄÒÕÇÉÈ ÆÏÒÍÁÔÏ× ÍÏÇÕÔ ÏÔÏÂÒÁÖÁÔØ ÐÏÌÑ, ÓÐÅÃÉÆÉÞÎÙÅ ÄÌÑ ÄÁÎÎÏÇÏ ÆÏÒÍÁÔÁ, × ÚÁÐÉÓÉ ÍÅÔÁÄÁÎÎÙÈ. îÁÐÒÉÍÅÒ, ÄÒÁÊ×ÅÒ TIFF ×ÏÚ×ÒÁÝÁÅÔ ÓÏÄÅÒÖÉÍÏÅ ÎÅËÏÔÏÒÙÈ ÉÎÆÏÒÍÁÃÉÏÎÎÙÈ ÔÅÇÏ× × ×ÉÄÅ ÍÅÔÁÄÁÎÎÙÈ, ×ËÌÀÞÁÑ ÐÏÌÅ ÄÁÔÁ/×ÒÅÍÑ, ËÏÔÏÒÏÅ ÂÕÄÅÔ ×ÙÇÌÑÄÅÔØ ËÁË:
TIFFTAG_DATETIME=1999:05:11 11:29:56
òÁÓÔÒÏ×ÙÊ ËÁÎÁÌ ÉÍÅÅÔ ÓÌÅÄÕÀÝÉÅ Ó×ÏÊÓÔ×Á:
typedef struct
{
/- ÓÅÒÙÊ, ËÒÁÓÎÙÊ, ÇÏÌÕÂÏÊ ÉÌÉ Ã×ÅÔ -/
short c1;
/- ÚÅÌ£ÎÙÊ, ÐÕÒÐÕÒÎÙÊ ÉÌÉ ÑÒËÏÓÔØ -/
short c2;
/- ÓÉÎÉÊ, Ö£ÌÔÙÊ ÉÌÉ ÎÁÓÙÝÅÎÎÏÓÔØ -/
short c3;
/- ÁÌØÆÁ-ËÁÎÁÌ ÉÌÉ Þ£ÒÎÙÊ -/
short c4;
} GDALColorEntry;
ôÁÂÌÉÃÁ Ã×ÅÔÏ× ÔÁËÖÅ ÉÍÅÅÔ ÉÎÄÉËÁÔÏÒ ÉÎÔÅÒÐÒÅÔÁÃÉÉ (GDALPaletteInterp), ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ ÎÁ ÔÏ, ËÁË ÐÁÒÁÍÅÔÒÙ c1/c2/c3/c4 ÄÏÌÖÎÙ ÂÙÔØ ÐÒÏÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÎÙ ÐÒÉÌÏÖÅÎÉÅÍ. üÔÏÔ ÉÎÄÉËÁÔÏÒ ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ÓÌÅÄÕÀÝÉÅ ÚÎÁÞÅÎÉÑ:
äÌÑ Ó×ÑÚÙ×ÁÎÉÑ Ã×ÅÔÁ Ó ÐÉËÓÅÌÅÍ ÚÎÁÞÅÎÉÅ ÜÔÏÇÏ ÐÉËÓÅÌÁ ÉÓÐÏÌØÚÕÅÔÓÑ × ËÁÞÅÓÔ×Å ÉÎÄÅËÓÁ × ÔÁÂÌÉÃÅ Ã×ÅÔÏ×. üÔÏ ÚÎÁÞÉÔ, ÞÔÏ Ã×ÅÔÁ ×ÓÅÇÄÁ ÒÁÓÐÏÌÁÇÁÀÔÓÑ × ÔÁÂÌÉÃÅ ÎÁÞÉÎÁÑ Ó ÎÕÌÅ×ÏÇÏ ÉÎÄÅËÓÁ É ÄÁÌÅÅ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ. îÅ ÓÕÝÅÓÔ×ÕÅÔ ÍÅÈÁÎÉÚÍÁ ÄÌÑ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÇÏ ÍÁÓÛÔÁÂÉÒÏ×ÁÎÉÑ ÚÎÁÞÅÎÉÊ, ÐÒÅÖÄÅ, ÞÅÍ ÂÕÄÅÔ ÐÒÉÍÅÎÅÎÁ ÔÁÂÌÉÃÁ Ã×ÅÔÏ×.
ïÂÚÏÒÎÙÅ ÉÚÏÂÒÁÖÅÎÉÑ ÐÒÉÍÅÎÑÀÔÓÑ ÄÌÑ ÂÙÓÔÒÏÇÏ ÏÔÏÂÒÁÖÅÎÉÑ ÕÍÅÎØÛÅÎÎÙÈ ËÏÐÉÊ ÒÁÓÔÒÁ, ×ÍÅÓÔÏ ÔÏÇÏ, ÞÔÏÂÙ ÞÉÔÁÔØ ÐÏÌÎÏÒÁÚÍÅÒÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ Ó ÐÏÓÌÅÄÕÀÝÉÍ ÍÁÓÛÔÁÂÉÒÏ×ÁÎÉÅÍ.
ëÁÎÁÌ ÔÁËÖÅ ÏÂÌÁÄÁÅÔ Ó×ÏÊÓÔ×ÏÍ HasArbitraryOverviews, ËÏÔÏÒÏÅ ÒÁ×ÎÏ TRUE, ÅÓÌÉ ÒÁÓÔÒ ÍÏÖÅÔ ÂÙÔØ ÜÆÆÅËÔÉ×ÎÏ ÐÒÏÞÉÔÁÎ × ÌÀÂÏÍ ÒÁÚÒÅÛÅÎÉÉ, ÎÏ ÎÅ ÉÍÅÅÔ Þ£ÔËÉÈ ÐÉÒÁÍÉÄÁÌØÎÙÈ ÓÌÏ£×. ôÁËÉÍÉ Ó×ÏÊÓÔ×ÁÍÉ ÏÂÌÁÄÁÀÔ ÎÅËÏÔÏÒÙÅ ÁÌÇÏÒÉÔÍÙ ËÏÄÉÒÏ×ÁÎÉÑ ÉÚÏÂÒÁÖÅÎÉÊ Ó ÐÏÍÏÝØÀ âðæ É ×ÅÊ×ÌÅÔÏ×, Á ÔÁËÖÅ ÉÚÏÂÒÁÖÅÎÉÑ, ÐÏÌÕÞÁÅÍÙÅ ÉÚ ×ÎÅÛÎÉÈ ÉÓÔÏÞÎÉËÏ× (ÔÁËÉÈ, ËÁË OGDI), ËÏÇÄÁ ÍÁÓÛÔÁÂÉÒÏ×ÁÎÉÅ ÐÒÏÉÚ×ÏÄÉÔÓÑ ÎÁ ÕÄÁÌ£ÎÎÏÊ ÓÔÏÒÏÎÅ.
1.5.2.