- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
万能的IDL啊!
最近在研究高德地图的web服务开发,因为学会了这个,很多工作量就解放了,躺着领工资,爽!
通过研究python的web功能,发现主要是使用requests.get()函数,就能获取网页内容,返回值格式可以是XML或json,
虽然以前我对XML比较熟悉,但网上都说json好,我试了下,果然,json的结构就是结构体(python称之为字典),且高德地图开发文档都给了json结构说明了,使用起来比XML好多了。
在使用python爽过一遍后,我想着IDL是否也有这个功能呢?
我回忆到,在IDL的help的《Image with a Map Projection》这一篇中,IDL有下载静态地图的功能,于是我凭着经验试了一下,居然成功了,下载静态地图与下载网页如出一辙,使用netObject.Get()函数即可。
神清气爽啊!
IDL中json与其他数据结构转换有2个函数:
JSON_SERIALIZE()把数组、结构体等转为json
JSON_PARSE()把json转为数组、结构体等
-------应用案例-------
;高德地图给出的周边搜索功能API:
url='https://restapi.amap.com/v3/place/around?key='+$
'*****************************'+$;这个是高德地图web服务开发key码,自己申请,免费的,我就不亮出来了
'&location=116.473168,39.993015&radius=200&types=011100'
;将网页数据按json格式下载到本地
netObject = IDLnetURL()
jsonfile='C:\Users\Administrator\Desktop\888.json'
!null = netObject.Get(URL=url,FILENAME=jsonfile)
netObject = 0
;按字符串读取该json文件
openr,lun,jsonfile,/get_lun
x=''
readf,lun,x
free_lun,lun
;json字符串转结构体(/TOSTRUCT表示转为结构体)
json=JSON_PARSE(x,/TOSTRUCT)
;以下就按高德地图提供的json格式进行打印了
;高德地图说json下有若干个pois,每个pois是个地点,包括了名称、地址、类型等等
n=n_elements(json.pois)
for i=0,n-1 do begin
y=json.pois
print,y.name+' '+y.address
endfor
输出结果:
依威能源汽车充电站(东亚·望京中心A座) 望京园401号东亚·望京中心A座
宝马充电站(东亚望京中心) 广顺南大街望京园401号
普天新能源汽车充电站(东亚望京中心) 广顺南大街望京园401号(地面)进大门左侧
|
|