IDL读取XML文件
使用IDL读取RADARSAT-2的数据,需要用到lutSigma.xml文件中的定标常数来计算相关参量。本文需要提取lutSigma.xml中的offset和gains参数。使用IDL来读取xml文件,并且提取特定的节点下的参数。经过实验找到了下面的方法:
lutSigma.xml文件示例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<lut copyright="XXXXXXXXXXXXX">
<offset>0.000000e+00</offset>
<gains>5.374149e+03 5.374090e+03 </gains>
</lut>
读取方法
先定义一个函数
;+
; :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
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子
下一篇:IDL提取字符串中的数组

































已有 7 条评论