X

NV5 Geospatial Blog

Each month, NV5 Geospatial posts new blog content across a variety of categories. Browse our latest posts below to learn about important geospatial information or use the search bar to find a specific topic or author. Stay informed of the latest blog posts, events, and technologies by joining our email list!



From Image to Insight: How GEOINT Automation Is Changing the Speed of Decision-Making

From Image to Insight: How GEOINT Automation Is Changing the Speed of Decision-Making

4/28/2025

When every second counts, the ability to process geospatial data rapidly and accurately isn’t just helpful, it’s critical. Geospatial Intelligence (GEOINT) has always played a pivotal role in defense, security, and disaster response. But in high-tempo operations, traditional workflows are no longer fast enough. Analysts are... Read More >

Thermal Infrared Echoes: Illuminating the Last Gasp of a Dying Star

Thermal Infrared Echoes: Illuminating the Last Gasp of a Dying Star

4/24/2025

This blog was written by Eli Dwek, Emeritus, NASA Goddard Space Flight Center, Greenbelt, MD and Research Fellow, Center for Astrophysics, Harvard & Smithsonian, Cambridge, MA. It is the fifth blog in a series showcasing our IDL® Fellows program which supports passionate retired IDL users who may need support to continue their work... Read More >

A New Era of Hyperspectral Imaging with ENVI® and Wyvern’s Open Data Program

A New Era of Hyperspectral Imaging with ENVI® and Wyvern’s Open Data Program

2/25/2025

This blog was written in collaboration with Adam O’Connor from Wyvern.   As hyperspectral imaging (HSI) continues to grow in importance, access to high-quality satellite data is key to unlocking new insights in environmental monitoring, agriculture, forestry, mining, security, energy infrastructure management, and more.... Read More >

Ensure Mission Success With the Deployable Tactical Analytics Kit (DTAK)

Ensure Mission Success With the Deployable Tactical Analytics Kit (DTAK)

2/11/2025

In today’s fast-evolving world, operational success hinges on real-time geospatial intelligence and data-driven decisions. Whether it’s responding to natural disasters, securing borders, or executing military operations, having the right tools to integrate and analyze data can mean the difference between success and failure.... Read More >

How the COVID-19 Lockdown Improved Air Quality in Ecuador: A Deep Dive Using Satellite Data and ENVI® Software

How the COVID-19 Lockdown Improved Air Quality in Ecuador: A Deep Dive Using Satellite Data and ENVI® Software

1/21/2025

The COVID-19 pandemic drastically altered daily life, leading to unexpected environmental changes, particularly in air quality. Ecuador, like many other countries, experienced significant shifts in pollutant concentrations due to lockdown measures. In collaboration with Geospace Solutions and Universidad de las Fuerzas Armadas ESPE,... Read More >

1345678910Last
«May 2025»
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
14732 Rate this article:
4.4

How to read XML metadata from a TIFF/JPEG/DNG file with IDL

Anonym

This is an example showing how to extract various image metadata contained in an XML packet inside of a DNG file. The use of XML packets to store metadata is especially popular with UAV captured image data. The XML packets are not specific to the raw DNG image format, but can also occur in JPEG and TIFF image files. The code example below will work for JPEG, TIFF as well as DNG that contain an XML packet. In this case, I implemented the parsing code using an object class and static methods. This approach is nice if you have multiple functions that you want contained in the same .pro file, but that you can still easily call from the command line. Other methods could be added to this parser, making it easier to read image metadata. Here is the content of my “dng__define.pro” source file:

; Extracts XML metadata from DNG
;
functiondng::XmlMetadata, filename
  compile_opt idl2,logical_predicate,static
 
  info = OrderedHash()
 
  exif = read_exif(filename)
 
  xml = IDLffXmlDomDocument()
  xml->Load, STRING=string(exif['Exif_Image_XMLPacket'])
 
  iter = xml->CreateNodeIterator(obj_new(), what_to_show=5)
  node = iter->NextNode()
  while obj_valid(node) do begin
    if isa(node,'IDLffXmlDomText') then begin
      key = (node->GetParentNode())->GetTagName()
      info[key] = node->GetData()
    endif
    node = iter->NextNode()
  endwhile
  return, info
end
 
; Class definition
prodng__define
  s = { dng, inherits IDL_Object }
end

I tested this code on a random sample DNG file that I found here:
http://www.phantompilots.com/threads/hands-on-experience-phantom-3-4k-plus-inside-the-hood-pictures.38694/ But, the code example is not specific to this file. It shows how to parse any XML packet embedded in a TIFF, JPEG, or DNG file.
The listing is rather lengthy, so, I am only including the first few lines to show how the code can be called:

IDL> dng.XmlMetadata(filename)
{
    "x:xmpmeta": "\n",
    "rdf:RDF": "\n\n",
    "rdf:Description": "\n ",
    "crs:Version": "3.7",
    "crs:RawFileName": "L1004220.DNG",
    "crs:WhiteBalance": "As Shot",
    "crs:Temperature": "6700",
    "crs:Tint": "+27",
    "crs:Exposure": "+0.20",
    "crs:Shadows": "0",
    "crs:Brightness": "+50",
    "crs:Contrast": "+32",
...
 
  
Please login or register to post comments.