Gets the data that is ready to be saved as GeoKeys in a GeoTIFF file.
#include "ltwrappr.h"
L_INT LFile::GetGeoKey(uTag, puType, puCount, pData)
ID of the GeoKey to get. Values of the GeoKey ID range between 0 and 65535. Possible ranges are:
Range | Meaning |
---|---|
0..1023 | Do not use; reserved for future use. |
1024..2047 | GeoTIFF configuration keys. |
2048..3071 | Geographic/Geocentric CS Parameter Keys. |
3072..4095 | Projected CS Parameter Keys. |
4096..5119 | Vertical CS Parameter keys. |
5120..32767 | Reserved. |
32768..65535 | Private use to store your own data. |
Pointer to the variable to be updated with the GeoKey type. It indicates whether the data pointed to by pData is SHORT, DOUBLE or ASCII. Possible values are:
Value | Meaning |
---|---|
TAG_ASCII | [2] The data pointed to by pData is an array of ASCII bytes. |
TAG_SHORT | [3] The data pointed to by pData is an array of SHORT values (2 bytes each). |
TAG_DOUBLE | [12] The data pointed to by pData is an array of floating points in DOUBLE format (8 bytes each). |
TAG_IFD | [13] 32-bit IFD offset. |
TAG_LONG8 | [16] Unsigned 64-bit integer (valid only for BigTIFF formats). |
TAG_SLONG8 | [17] Signed 64-bit integer (valid only for BigTIFF formats). |
TAG_IFD8 | [18] 64-bit IFD offset (valid only for BigTIFF formats). |
Pointer to the variable to be updated with the number of items required for the pData buffer. Note that this is not the required number of bytes. The required number of will be (*puCount) * number of bytes per value (1 for ASCII, 2 for SHORT, 8 for DOUBLE).
If pData passed as NOT NULL, this variable will be updated with the number of data items.
Pointer to the buffer to be updated with the data. You can pass NULL if you want to use this function's return value to determine the required buffer size.
Value | Meaning |
---|---|
> 0 | The length of the GeoKey data in bytes. |
0 | There is no GeoKey data with this GeoKey. |
< 0 | An error occurred. Refer to Return Codes. |
You can use this function to obtain GeoKey data that will be saved the next time you save a GeoTIFF (FILE_GEOTIFF) file.
If you want to get the GeoKey data from a particular file, use the LFile::ReadGeoKey function.
It is often convenient to call this function twice, as follows:
For more information about GeoKeys, refer to Implementing GeoKeys (GeoTIFF tags).
Win32, x64.
This example gets the value set for the GTModelTypeGeoKey key.
Note that the example can be simpler by not allocating memory because this particular
GeoKey has only one SHORT item. But I want to demonstrate how you call GetGeoKey twice
and get the required size in the first call
L_INT LFile__GetGeoKeyExample(LFile& file)
{
L_UINT16 *pData = NULL;
L_UINT uCount;
L_UINT uType;
L_INT nSize;
nSize = file.GetGeoKey(1024, &uType, &uCount, NULL);
if(nSize <= 0)
{
MessageBox(NULL, TEXT("The GeoKey was not set, or an error occurred!"), TEXT("FAILURE"), MB_OK);
return nSize;
}
else
{
// allocate an array large enough to store the GeoKey data
pData = (L_UINT16 *)malloc(nSize);
if(pData != NULL)
{
nSize = file.GetGeoKey(1024, &uType, &uCount, pData);
if(nSize <= 0)
{
MessageBox(NULL, TEXT("Error getting the GeoKey!"), TEXT("FAILURE"), MB_OK);
return nSize;
}
else
{
// do whatever you want with the GeoKey data
MessageBox(NULL, TEXT("works Fine!"), TEXT("SUCCESS"), MB_OK);
}
free(pData); //// free the pData buffer
}
}
return SUCCESS;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document