←Select platform

EnumGeoKeys(Stream,int) Method

Summary
Enumerates all the GeoKeys in a Geo TIFF stream.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public void EnumGeoKeys( 
   Stream stream, 
   int pageNumber 
) 
- (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 
)  
def EnumGeoKeys(self,stream,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#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
 
IList<RasterTagMetadata> myGeoKeys; 
 
 
void EnumGeoKeysExample(string srcFileName, string destFileName) 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   geoKeySrcFileName = 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 
   Debug.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) 
{ 
   Debug.WriteLine("GeoKey: Id={0}, Count={1}, Type={2}, Data Length={3}, Data=, Cancel={4}", e.Id, e.Count, e.MetadataType, e.Buffer.Length, e.Cancel); 
 
   // Load this GeoKey 
   RasterCodecs codecs = sender as RasterCodecs; 
   RasterTagMetadata geoKey = codecs.ReadGeoKey(geoKeySrcFileName, 1, e.Id); 
   byte[] data = geoKey.GetData(); 
   for (int i = 0; i < data.Length; i++) 
      Debug.WriteLine("{0:X} ", data[i].ToString()); 
 
   // Add it to our collection 
   myGeoKeys.Add(geoKey); 
   e.ToRasterTagMetadata(); 
} 
 
import java.io.*; 
import java.net.*; 
import java.nio.file.Paths; 
import java.util.*; 
import java.time.Instant; 
import java.time.Duration; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.codecs.RasterCodecs.FeedCallbackThunk; 
import leadtools.drawing.internal.*; 
import leadtools.imageprocessing.*; 
import leadtools.imageprocessing.color.ChangeIntensityCommand; 
import leadtools.svg.*; 
 
 
RasterCollection<RasterTagMetadata> myGeoKeys; 
String geoKeySrcFileName; 
 
public void enumGeoKeysExample() throws IOException { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "raster_image_enum_geokey.tif"); 
   String destFileName = combine(LEAD_VARS_IMAGES_DIR, "raster_image_enum_geokeys_out.tif"); 
   RasterCodecs codecs = new RasterCodecs(); 
 
   geoKeySrcFileName = srcFileName; 
   myGeoKeys = new RasterCollection<RasterTagMetadata>(); 
 
   codecs.addGeoKeyFoundListener(codecsGetKeyFound); 
   ILeadStream srcFileStream = LeadStreamFactory.create(srcFileName); 
 
   codecs.enumGeoKeys(srcFileStream, 1); 
   codecs.removeGeoKeyFoundListener(codecsGetKeyFound); 
 
   // We read all the tags now, save them to the file 
   System.out.println(myGeoKeys.getCount() + " GeoKeys read, saving them to the destination file"); 
   ILeadStream destFileStream = LeadStreamFactory.create(destFileName); 
   RasterImage srcImage = codecs.load(srcFileName); 
 
   codecs.save(srcImage, destFileStream, RasterImageFormat.TIF, 0); 
   codecs.writeGeoKeys(destFileStream, 1, myGeoKeys); 
 
   // Clean up 
   srcFileStream.close(); 
   destFileStream.close(); 
   codecs.dispose(); 
} 
 
CodecsGeoKeyFoundListener codecsGetKeyFound = new CodecsGeoKeyFoundListener() { 
 
   @Override 
   public void onGeoKeyFound(CodecsEnumGeoKeysEvent e) { 
      System.out.printf("GeoKey: Id=%s, Count=%s, Type=%s, Data Length=%s, Data=, Cancel=%s%n", e.getId(), 
            e.getCount(), e.getMetadataType(), e.getBuffer().getLength(), e.getCancel()); 
      // Load this GeoKey 
      RasterCodecs codecs = (RasterCodecs) e.getSource(); 
      ILeadStream geoStream = LeadStreamFactory.create(geoKeySrcFileName); 
      RasterTagMetadata geoKey = codecs.readGeoKey(geoStream, 1, e.getId()); 
      byte[] data = geoKey.getData(); 
      for (int i = 0; i < data.length; i++) 
         System.out.println(data[i]); 
 
      // Add it to our collection 
      myGeoKeys.add(geoKey); 
      e.toRasterTagMetadata(); 
      try { 
         geoStream.close(); 
      } catch (IOException e1) { 
         e1.printStackTrace(); 
      } 
   } 
 
}; 
Requirements

Target Platforms

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

Leadtools.Codecs Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.