LEADTOOLS Image File Support (Leadtools.Codecs assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.29
EnumGeoKeys(String,Int32) Method
See Also 
Leadtools.Codecs Namespace > RasterCodecs Class > EnumGeoKeys Method : EnumGeoKeys(String,Int32) Method



fileName
A System.String containing the input file name.
pageNumber
1-based index of the page from which to enumerate the tags.
fileName
A System.String containing the input file name.
pageNumber
1-based index of the page from which to enumerate the tags.
Enumerates all the GeoKeys in a Geo TIFF file.

Syntax

Visual Basic (Declaration) 
Overloads Public Sub EnumGeoKeys( _
   ByVal fileName As String, _
   ByVal pageNumber As Integer _
) 
Visual Basic (Usage)Copy Code
Dim instance As RasterCodecs
Dim fileName As String
Dim pageNumber As Integer
 
instance.EnumGeoKeys(fileName, pageNumber)
C# 
public void EnumGeoKeys( 
   string fileName,
   int pageNumber
)
C++/CLI 
public:
void EnumGeoKeys( 
   String^ fileName,
   int pageNumber
) 

Parameters

fileName
A System.String containing the input file name.
pageNumber
1-based index of the page from which to enumerate the tags.

Example

This example will show all the geo keys in the given file then loads them and adds them to a destination file

Visual BasicCopy Code
Private myGeoKeys As RasterCollection(Of RasterTagMetadata)
Private geoKeyFileName As String

Private Sub EnumGeoKeysExample(ByVal srcFileName As String, ByVal destFileName As String)
   Dim codecs As RasterCodecs = New RasterCodecs()

   geoKeyFileName = srcFileName
   myGeoKeys = New RasterCollection(Of RasterTagMetadata)()

   AddHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFound
   codecs.EnumGeoKeys(srcFileName, 1)
   RemoveHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFound

   ' We read all the tags now, save them to the file
   Console.WriteLine("{0} GeoKeys read, saving them to the destination file", myGeoKeys.Count)
   codecs.WriteGeoKeys(destFileName, 1, myGeoKeys)

   ' Clean up
   codecs.Dispose()
End Sub

Private Sub codecs_GeyKeyFound(ByVal sender As Object, ByVal e As CodecsEnumGeoKeysEventArgs)
   Console.Write("GeoKey: Id={0}, Count={1}, Type={2}, DataLength={3}, Data=", e.Id, e.Count, e.MetadataType, e.Buffer.Length)

   ' Load this GeoKey
   Dim codecs As RasterCodecs = TryCast(sender, RasterCodecs)
   Dim geoKey As RasterTagMetadata = codecs.ReadGeoKey(geoKeyFileName, 1, e.Id)
   Dim data As Byte() = geoKey.GetData()
   Dim i As Integer = 0
   Do While i < data.Length
      Console.Write("{0:X} ", data(i))
      i += 1
   Loop
   Console.WriteLine()

   ' Add it to our collection
   myGeoKeys.Add(geoKey)
End Sub
C#Copy Code
RasterCollection<RasterTagMetadata> myGeoKeys;
string geoKeyFileName;

void EnumGeoKeysExample(string srcFileName, string destFileName)
{
   RasterCodecs codecs = new RasterCodecs();

   geoKeyFileName = srcFileName;
   myGeoKeys = new RasterCollection<RasterTagMetadata>();

   codecs.GeoKeyFound += new EventHandler<CodecsEnumGeoKeysEventArgs>(codecs_GeyKeyFound);
   codecs.EnumGeoKeys(srcFileName, 1);
   codecs.GeoKeyFound -= new EventHandler<CodecsEnumGeoKeysEventArgs>(codecs_GeyKeyFound);

   // We read all the tags now, save them to the file
   Console.WriteLine("{0} GeoKeys read, saving them to the destination file", myGeoKeys.Count);
   codecs.WriteGeoKeys(destFileName, 1, myGeoKeys);

   // Clean up
   codecs.Dispose();
}

void codecs_GeyKeyFound(object sender, CodecsEnumGeoKeysEventArgs e)
{
   Console.Write("GeoKey: Id={0}, Count={1}, Type={2}, Data Length={3}, Data=", e.Id, e.Count, e.MetadataType, e.Buffer.Length);

   // Load this GeoKey
   RasterCodecs codecs = sender as RasterCodecs;
   RasterTagMetadata geoKey = codecs.ReadGeoKey(geoKeyFileName, 1, e.Id);
   byte[] data = geoKey.GetData();
   for(int i = 0; i < data.Length; i++)
      Console.Write("{0:X} ", data[i]);
   Console.WriteLine();

   // Add it to our collection
   myGeoKeys.Add(geoKey);
}
SilverlightCSharpCopy Code
RasterCollection<RasterTagMetadata> myGeoKeys;
Stream geoKeyStream;
void EnumGeoKeysExample(Stream inStreamGeyKey, Stream outStreamGeyKey)
{
   RasterCodecs codecs = new RasterCodecs();

   geoKeyStream = inStreamGeyKey;
   myGeoKeys = new RasterCollection<RasterTagMetadata>();

   codecs.GeoKeyFound += new EventHandler<CodecsEnumGeoKeysEventArgs>(codecs_GeyKeyFound);
   codecs.EnumGeoKeys(inStreamGeyKey, 1);
   codecs.GeoKeyFound -= new EventHandler<CodecsEnumGeoKeysEventArgs>(codecs_GeyKeyFound);

   // We read all the tags now, save them to the file
   Debug.WriteLine("{0} GeoKeys read, saving them to the destination file", myGeoKeys.Count);
   codecs.WriteGeoKeys(outStreamGeyKey, 1, myGeoKeys);
}

void codecs_GeyKeyFound(object sender, CodecsEnumGeoKeysEventArgs e)
{
   Debug.WriteLine("GeoKey: Id={0}, Count={1}, Type={2}, DataLength={3}, Data=", e.Id, e.Count, e.MetadataType, e.Buffer.Length);

   // Load this GeoKey
   RasterCodecs codecs = sender as RasterCodecs;
   RasterTagMetadata geoKey = codecs.ReadGeoKey(geoKeyStream, 1, e.Id);
   byte[] data = geoKey.GetData();
   for(int i = 0; i < data.Length; i++)
      Debug.WriteLine("{0:X} ", data[i]);
   Debug.WriteLine("");

   // Add it to our collection
   myGeoKeys.Add(geoKey);
}
SilverlightVBCopy Code
Private myGeoKeys As RasterCollection(Of RasterTagMetadata)
Private geoKeyStream As Stream
Private Sub EnumGeoKeysExample(ByVal inStreamGeyKey As Stream, ByVal outStreamGeyKey As Stream)
   Dim codecs As RasterCodecs = New RasterCodecs()

   geoKeyStream = inStreamGeyKey
   myGeoKeys = New RasterCollection(Of RasterTagMetadata)()

   AddHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFound
   codecs.EnumGeoKeys(inStreamGeyKey, 1)
   RemoveHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFound

   ' We read all the tags now, save them to the file
   Debug.WriteLine("{0} GeoKeys read, saving them to the destination file", myGeoKeys.Count)
   codecs.WriteGeoKeys(outStreamGeyKey, 1, myGeoKeys)
End Sub

Private Sub codecs_GeyKeyFound(ByVal sender As Object, ByVal e As CodecsEnumGeoKeysEventArgs)
   Debug.WriteLine("GeoKey: Id={0}, Count={1}, Type={2}, DataLength={3}, Data=", e.Id, e.Count, e.MetadataType, e.Buffer.Length)

   ' Load this GeoKey
   Dim codecs As RasterCodecs = TryCast(sender, RasterCodecs)
   Dim geoKey As RasterTagMetadata = codecs.ReadGeoKey(geoKeyStream, 1, e.Id)
   Dim data As Byte() = geoKey.GetData()
   Dim i As Integer = 0
   Do While i < data.Length
      Debug.WriteLine("{0:X} ", data(i))
      i += 1
   Loop
   Debug.WriteLine("")

   ' Add it to our collection
   myGeoKeys.Add(geoKey)
End Sub

Remarks

To enumerate all the keys stored in a stream, use EnumGeoKeys(Stream,Int32).

For multipage Geo TIFF files, you can enumerate the GeoKeys from a particular page. Specify the page number whose GeoKeys to enumerate.

The GeoKeyFound event is called for each GeoKey value stored in the three standard Geo TIFF tags (34735, 34736 and 34737). For enumerating the other standard Geo TIFF data stored as separate tags, you can use EnumTags(String,Int32). Or, you can call ReadTag(String,Int32,Int32) for each of these tags (since there are not that many of them to warrant the use of EnumTags(String,Int32)).

For more information, refer toImplementing GeoKeys (GeoTIFF tags).

Requirements

Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)

See Also