IDL读取XML文件
发布时间: 2015-11-28
所属分类: IDL修炼秘籍
使用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提取字符串中的数组
老师您好,我是初学者,想利用xml文件读取影像四个角度的经纬度信息,想从您的代码上改进,请问您的代码怎么一直运行不了,不知能否将整个代码分享一下,我的邮箱xiashaliubo@163.com,谢谢!
这里主要一个示例,从我的工程中摘录出来的,主要是FILENAME这个字段要设置成自己的文件路径。然后调用函数即可。
我改了这个字段,但还是不能运行,我再试试或者换个方式
对我的小项目太有帮助了,之后我想在我的小博客里引用一下,征求意见。
可以,加引用链接即可。
getNodeName() 和getNodeValue()函数是需要自己补充完整吗?
不需要,使用IDL8.2.3应该可以用的。