←Select platform

GeoKeyFound Event

Summary
Occurs once for each GeoKey enumerated by the EnumGeoKeys method.
Syntax
C#
C++/CLI
Java
Python
public event EventHandler<CodecsEnumGeoKeysEventArgs> GeoKeyFound 
synchronized public void addGeoKeyFoundListener(CodecsGeoKeyFoundListener listener) 
synchronized public void removeGeoKeyFoundListener(CodecsGeoKeyFoundListener listener) 
public: 
event EventHandler<CodecsEnumGeoKeysEventArgs^>^ GeoKeyFound 
def GeoKeyFound(sender,e): # sender: RasterCodecs e: CodecsEnumGeoKeysEventArgs 
Event Data

The event handler receives an argument of type CodecsEnumGeoKeysEventArgs containing data related to this event. The following CodecsEnumGeoKeysEventArgs properties provide information specific to this event.

PropertyDescription
Buffer Gets a pointer to the unmanaged memory containing the GeoKey data.
Remarks

This event will fire for each GeoKey found in the file as a result of calling EnumGeoKeys.

Do not attempt to use DeleteTag to delete tags from inside this event. If you want to delete tags that you enumerate, use this event to add the tags to a list. Upon returning from EnumGeoKeys, you can delete all the tags from the list.

Example
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.