Leadtools.Codecs Namespace > RasterCodecs Class > EnumGeoKeys Method : EnumGeoKeys(Stream,Int32) Method |
public void EnumGeoKeys( Stream stream, int pageNumber )
'Declaration Public Overloads Sub EnumGeoKeys( _ ByVal stream As Stream, _ ByVal pageNumber As Integer _ )
'Usage Dim instance As RasterCodecs Dim stream As Stream Dim pageNumber As Integer instance.EnumGeoKeys(stream, pageNumber)
public void EnumGeoKeys( Stream stream, int pageNumber )
-(BOOL)EnumGeoKeys:(LTLeadStream*)stream pageNumber:(unsigned int)pageNumber error:(NSError**)outError;
public void enumGeoKeys(ILeadStream stream, int pageNumber)
function Leadtools.Codecs.RasterCodecs.EnumGeoKeys(Stream,Int32)( stream , pageNumber )
public: void EnumGeoKeys( Stream^ stream, int pageNumber )
To enumerate all the keys stored in a disk file, use EnumGeoKeys(String,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 to Implementing GeoKeys (GeoTIFF tags).
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.ImageProcessing Imports Leadtools.ImageProcessing.Color Imports Leadtools.Drawing 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
using Leadtools; using Leadtools.Codecs; using Leadtools.ImageProcessing; using Leadtools.ImageProcessing.Color; 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); }
var myGeoKeys; var geoKeyFileName; function EnumGeoKeysExample(srcFileName, destFileName) { Tools.SetLicense(); with (Leadtools) { with (Leadtools.Codecs) { var codecs = new RasterCodecs(); Leadtools.RasterSupport.initialize(); codecs.eventsDispatchMode = Leadtools.LeadEventsDispatchMode.useCoreDispatcher; geoKeyFileName = srcFileName; myGeoKeys = new Array(); return Tools.AppInstallFolder().getFileAsync(srcFileName).then(function (loadFile) { codecs.addEventListener("geokeyfound", codecs_GeyKeyFound); return codecs.enumGeoKeysAsync(LeadStreamFactory.create(loadFile), 1) }) .then(function () { codecs.removeEventListener("geokeyfound", codecs_GeyKeyFound); // We read all the tags now, save them to the file console.info(myGeoKeys.length, " GeoKeys read, saving them to the destination file"); return Tools.AppLocalFolder().createFileAsync(destFileName, Windows.Storage.CreationCollisionOption.openIfExists) }) .then(function (saveFile) { return codecs.writeGeoKeysAsync(LeadStreamFactory.create(saveFile), 1, myGeoKeys) }) .then(function () { // Clean up codecs.close(); }); } } } function codecs_GeyKeyFound(e) { console.info("GeoKey: Id=", e.id, ", Count=", e.count, ", Type=", e.metadataType, ", Data Length=", e.buffer.length), ", Data="; Tools.SetLicense(); with (Leadtools) { with (Leadtools.Codecs) { // Load this GeoKey var codecs = e.target; return Tools.AppInstallFolder().getFileAsync(geoKeyFileName).then(function (loadFile) { return codecs.readGeoKeyAsync(LeadStreamFactory.create(loadFile), 1, e.id) }) .then(function (geoKey) { var data = geoKey.getData(); for (var i = 0; i < data.length; i++) console.info("{0:X} ", data[i]); console.info(""); // Add it to our collection myGeoKeys.push(geoKey); }); } } }
using Leadtools; using Leadtools.Codecs; using Leadtools.ImageProcessing; using Leadtools.ImageProcessing.Color; List<RasterTagMetadata> myGeoKeys; string geoKeyFileName; async Task EnumGeoKeysExample(string srcFileName, string destFileName) { RasterCodecs codecs = new RasterCodecs(); geoKeyFileName = srcFileName; myGeoKeys = new List<RasterTagMetadata>(); StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName); codecs.GeoKeyFound += new EventHandler<CodecsEnumGeoKeysEventArgs>(codecs_GeyKeyFound); await codecs.EnumGeoKeysAsync(LeadStreamFactory.Create(loadFile), 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); StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName, CreationCollisionOption.OpenIfExists); try { await codecs.WriteGeoKeysAsync(LeadStreamFactory.Create(saveFile), 1, myGeoKeys); } catch (Exception ex) { string error = ""; RasterException rasterException = RasterException.FromHResult(ex.HResult); if (rasterException != null) error = rasterException.Message; else error = ex.Message; Debug.WriteLine(error); Assert.Fail(error); } // Clean up codecs.Dispose(); } async void codecs_GeyKeyFound(object sender, CodecsEnumGeoKeysEventArgs e) { Debug.WriteLine("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; StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(geoKeyFileName); RasterTagMetadata geoKey = await codecs.ReadGeoKeyAsync(LeadStreamFactory.Create(loadFile), 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); }
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); }
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