- fileName
- A System.String containing the input file name.
- pageNumber
- 1-based index of the page from which to enumerate the tags.
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.
This example will show all the geo keys in the given file then loads them and adds them to a destination file
Visual Basic | Copy 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); } |
SilverlightCSharp | Copy 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); } |
SilverlightVB | Copy 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 |
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).
Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)