爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4320|回复: 1

[混合编程] IDL之调用高德地图API计算地图坐标距离

[复制链接]

新浪微博达人勋

发表于 2020-6-30 09:38:44 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
;因为数字转字符串的操作太多了,写个字母少的函数代替:
;n2s=number to string
function n2s,x
  return,strtrim(string(x),2);数字转字符串后去除空格
end


;使用高德地图API计算距离
pro amap_distance
  ;高德地图web开发K码:
  key='xxxxxxxxxxxxxxxxx';不便透露,可免费申请
  
  ;准备2个点:
  lon1=116.481028
  lat1=40.005717
  lon2=lon1+0.001
  lat2=lat1
  
  ;求距离的接口url:
  url='https://restapi.amap.com/v3/distance?'+$
    'origins='+n2s(lon1)+','+n2s(lat1)+$
    '&destination='+n2s(lon2)+','+n2s(lat2)+$
    '&output=json&key='+key+'&type=0'
  ;output=json表示按json格式返回
  ;type=0表示求的是直线距离,不是驾车或步行距离


  ;将网页数据按json格式下载到本地
  netObject = IDLnetURL()
  jsonfile='C:\geocode.json';C盘是一定存在的,就放这吧,用完删掉
  !null = netObject.Get(URL=url,FILENAME=jsonfile)
  netObject = 0


  ;按字符串读取该json文件
  openr,lun,jsonfile,/get_lun
  xx=''
  readf,lun,xx
  free_lun,lun
  
  FILE_DELETE,JSONFILE;删除json


  ;json字符串转结构体(/TOSTRUCT表示转为结构体)
  json=JSON_PARSE(xx,/TOSTRUCT)
  
  print,'距离=',n2s(long(json.results[0].distance)),'m'
end

输出:距离=85m

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-6-30 09:42:49 | 显示全部楼层
python版见:《python之GPS和高德地图距离计算》
http://bbs.06climate.com/forum.php?mod=viewthread&tid=96373
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表