←Select platform

EnumGeoKeys(Stream,int) Method

Summary

Enumerates all the GeoKeys in a Geo TIFF stream.

Syntax
C#
VB
Objective-C
C++
Java
public void EnumGeoKeys( 
   Stream stream, 
   int pageNumber 
) 
Public Overloads Sub EnumGeoKeys( _ 
   ByVal stream As Stream, _ 
   ByVal pageNumber As Integer _ 
)  
- (BOOL)enumerateGeoKeysInStream:(LTLeadStream *)stream  
                      pageNumber:(NSInteger)pageNumber  
                        callback:(void (^)(LTCodecsEnumGeoKeysEventArgs *geoKeyInfo))handler  
                           error:(NSError **)error 
public void enumGeoKeys(ILeadStream stream, int pageNumber) 
public: 
void EnumGeoKeys(  
   Stream^ stream, 
   int pageNumber 
)  

Parameters

stream
A Stream containing the input image data.

pageNumber
1-based index of the page from which to enumerate the tags.

Remarks

To enumerate all the keys stored in a disk file, use EnumGeoKeys.

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. Or, you can call ReadTag for each of these tags (since there are not that many of them to warrant the use of EnumTags).

For more information, refer to Implementing GeoKeys (GeoTIFF tags).

Example

This example will show all the GeoKeys in the given file and then load them and add them to a destination file

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
using LeadtoolsExamples.Common; 
 
 
IList<RasterTagMetadata> myGeoKeys; 
string geoKeyFileName; 
 
void EnumGeoKeysExample(string srcFileName, string destFileName) 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   geoKeyFileName = srcFileName; 
   myGeoKeys = new List<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); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Drawing 
Imports Leadtools.Svg 
 
 
Private myGeoKeys As IList(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 List(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#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Examples; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Windows.Media; 
 
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); 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Windows.Media 
 
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 

Requirements

Target Platforms

Help Version 20.0.2020.4.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly