使用IDL读取RADARSAT-2的数据,需要用到lutSigma.xml文件中的定标常数来计算相关参量。本文需要提取lutSigma.xml中的offset和gains参数。使用IDL来读取xml文件,并且提取特定的节点下的参数。经过实验找到了下面的方法:
lutSigma.xml文件示例
0.000000e+00
5.374149e+03 5.374090e+03
读取方法
先定义一个函数
;+
; :Author: YQC
;- 读取xml的函数
FUNCTION filter_XML, oNode
name = oNode->getNodeName()
IF name EQ 'offset' OR name EQ 'gains' THEN $
RETURN, 1 ; accept
RETURN, 3 ;; skip
END
解释:这个函数用来标记想要的节点,比如本文要用到offset和gains这两个参数,所以当节点名等于offset或gains时候返回1
调用方法
;====读取xml====
oDoc = OBJ_NEW( 'IDLffXMLDOMDocument', FILENAME=datapath+patharr[fp]+'\lutSigma.xml' )
oNodeIterator = oDoc->createNodeIterator( OBJ_NEW(), FILTER_NAME='filter_XML' )
offt = 0 ;偏移量
vall = [] ;定标常数
cont = 0 ;计数器
oNode = oNodeIterator->nextNode()
WHILE OBJ_VALID( oNode ) DO BEGIN
;读取偏移量
if cont eq 0 then begin
offt = float((oNode->GetFirstChild())->getNodeValue())
endif
;读取定标常数
if cont eq 1 then begin
vall = (oNode->GetFirstChild())->getNodeValue()
endif
cont++
oNode = oNodeIterator->nextNode()
ENDWHILE
;print,vall
OBJ_DESTROY, oDoc