爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6358|回复: 2

[混合编程] IDL之计算静态地图经纬度范围

[复制链接]

新浪微博达人勋

发表于 2020-7-8 14:57:05 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 15195775117 于 2020-7-8 14:58 编辑

一、问题缘起

工作中写报告需要自动贴入静态地图,同时叠加这区域的数据等值线图,这就需要知道静态地图的经纬度范围,
以前不知道如何计算,后来参考IDL的help中的例子,懂了原理后,这就是个很简单的事。

二、代码示例

;需要调用的函数neighbor是根据原点、方位和距离求新坐标的,代码详情见我另一帖子:
;http://bbs.06climate.com/forum.php?mod=viewthread&tid=96383

;该程序用于计算静态地图的长宽距离与经纬度范围
;静态地图有3个参量:中心、放大率zoom、图片像素

pro frame_of_StaticMap

centerlng=double(116.481485);静态地图的中心经度
centerLat=double(39.990464);静态地图的中心纬度
zoom =16;地图缩放级别
width=800;静态地图宽度(单位:像素)
height=400;静态地图高度(单位:像素)

;地球半径:
Re = 6378137
;每像素代表的距离(m/pixel):
resolution = (2*!DPI*Re)/(256*2d^zoom)

;图宽和高(单位:米)
deltax = width*resolution ; 单位米
deltay = height*resolution ;单位米
  
print,'地图东西距离:',deltax,'m'
print,'地图南北距离:',deltay,'m'

;知道了地图长宽和中心点,就可以计算东西南北的经纬度了:
;求最左经度:
lng1=neighbor([centerlng,centerLat],[-1,0],deltax/2)
lng1=lng1[0]
;求最右经度:
lng2=neighbor([centerlng,centerLat],[1,0],deltax/2)
lng2=lng2[0]
;求最下纬度:
lat1=neighbor([centerlng,centerLat],[0,-1],deltay/2)
lat1=lat1[1]
;求最上纬度:
lat2=neighbor([centerlng,centerLat],[0,1],deltay/2)
lat2=lat2[1]
  
print,'静态地图经纬度范围:'
print,[lng1,lng2,lat1,lat2]

;验算东西距离:
deltax2=map_2points(lng1,lat1,lng2,lat1,/METERS)
;验算南北距离:
deltay2=map_2points(lng1,lat1,lng1,lat2,/METERS)
print,'验算:'
print,'东西距离误差:',abs(deltax2-deltax),'m'
print,'南北距离误差:',abs(deltay2-deltay),'m'

end

运行结果:

地图东西距离:       1910.9257m
地图南北距离:       955.46285m
静态地图经纬度范围:
       116.47027       116.49270       39.986166       39.994760
验算:
东西距离误差:       1.7312488m
南北距离误差:       1.1994471m

从结果看,误差很小,符合应用要求。

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

新浪微博达人勋

发表于 2020-7-30 16:54:13 | 显示全部楼层
好顶赞,代码学习中,虽然没有用过静态地图,但保不准以后会用到。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-7-30 17:33:41 | 显示全部楼层
SonGoku 发表于 2020-7-30 16:54
好顶赞,代码学习中,虽然没有用过静态地图,但保不准以后会用到。

静态地图是一个好用的东西,IDL虽然很多开发语言的功能都有(GUI,web,多线程......),但开发者还是太少,多多扩展,或许能像python一样发扬光大呢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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