Enumerates all the GeoKeys in a Geo TIFF stream.
public void EnumGeoKeys(Stream stream,int pageNumber)
Public Overloads Sub EnumGeoKeys( _ByVal stream As Stream, _ByVal pageNumber As Integer _)
- (BOOL)enumerateGeoKeysInStream:(LTLeadStream *)streampageNumber:(NSInteger)pageNumbercallback:(void (^)(LTCodecsEnumGeoKeysEventArgs *geoKeyInfo))handlererror:(NSError **)error
public void enumGeoKeys(ILeadStream stream, int pageNumber) public:void EnumGeoKeys(Stream^ stream,int pageNumber)
stream
A Stream containing the input image data.
pageNumber
1-based index of the page from which to enumerate the tags.
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).
This example will show all the GeoKeys in the given file and then load them and add them to a destination file
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 fileConsole.WriteLine("{0} GeoKeys read, saving them to the destination file", myGeoKeys.Count);codecs.WriteGeoKeys(destFileName, 1, myGeoKeys);// Clean upcodecs.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 GeoKeyRasterCodecs 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 collectionmyGeoKeys.Add(geoKey);}
Imports LeadtoolsImports Leadtools.CodecsImports Leadtools.ImageProcessingImports Leadtools.ImageProcessing.ColorImports Leadtools.DrawingImports Leadtools.SvgPrivate myGeoKeys As IList(Of RasterTagMetadata)Private geoKeyFileName As StringPrivate Sub EnumGeoKeysExample(ByVal srcFileName As String, ByVal destFileName As String)Dim codecs As RasterCodecs = New RasterCodecs()geoKeyFileName = srcFileNamemyGeoKeys = New List(Of RasterTagMetadata)()AddHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFoundcodecs.EnumGeoKeys(srcFileName, 1)RemoveHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFound' We read all the tags now, save them to the fileConsole.WriteLine("{0} GeoKeys read, saving them to the destination file", myGeoKeys.Count)codecs.WriteGeoKeys(destFileName, 1, myGeoKeys)' Clean upcodecs.Dispose()End SubPrivate 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 GeoKeyDim 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 = 0Do While i < data.LengthConsole.Write("{0:X} ", data(i))i += 1LoopConsole.WriteLine()' Add it to our collectionmyGeoKeys.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 fileDebug.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 GeoKeyRasterCodecs 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 collectionmyGeoKeys.Add(geoKey);}vb[Silverlight VB Example]Imports LeadtoolsImports Leadtools.CodecsImports Leadtools.ImageProcessingImports Leadtools.ImageProcessing.ColorImports Leadtools.Windows.MediaPrivate myGeoKeys As RasterCollection(Of RasterTagMetadata)Private geoKeyStream As StreamPrivate Sub EnumGeoKeysExample(ByVal inStreamGeyKey As Stream, ByVal outStreamGeyKey As Stream)Dim codecs As RasterCodecs = New RasterCodecs()geoKeyStream = inStreamGeyKeymyGeoKeys = New RasterCollection(Of RasterTagMetadata)()AddHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFoundcodecs.EnumGeoKeys(inStreamGeyKey, 1)RemoveHandler codecs.GeoKeyFound, AddressOf codecs_GeyKeyFound' We read all the tags now, save them to the fileDebug.WriteLine("{0} GeoKeys read, saving them to the destination file", myGeoKeys.Count)codecs.WriteGeoKeys(outStreamGeyKey, 1, myGeoKeys)End SubPrivate 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 GeoKeyDim 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 = 0Do While i < data.LengthDebug.WriteLine("{0:X} ", data(i))i += 1LoopDebug.WriteLine("")' Add it to our collectionmyGeoKeys.Add(geoKey)End Sub
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
