爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 33648|回复: 50

[源代码] fortran提取任意区域内的点,可用来生成GrADS的mask文件

  [复制链接]

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-11-14 16:49:35 | 显示全部楼层 |阅读模式

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

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

x
    今天看到@clare发帖说希望能提取平行四边形内的点,如果用在GrADS的maskout文件,这个用MeteoInfo实现实在很方便,如果有朋友希望自己通过fortran实现这个过程,那可以看看本帖子。
    最近在做的项目中也用到点和多边形的关系,于是就顺手转写为fortran的了,具体的算法大家可以查阅相关文献,这里我就不多说了。
    附件程序中我是利用这个函数输出了GrADS的maskout文件,并进行了测试,测试中我使用MeteoInfo提取中江苏省的边界(wmp文本格式),然后删掉了开始描述行,最后文件格式如图
js.png

这里贴出生成GrADS的maskout文件的代码,关键子函数的代码请大家下载附件,就不收取贡献值了。
  1. program GenMaskout
  2. implicit none
  3. integer,parameter::polys=1417,x=20,y=20                   !定义边界点和格点数量
  4. real,parameter::interv=0.5,xs=115,ys=30                                                !定义格点开始经纬度和分辨率
  5. integer,external::inRegion        
  6. integer i,j
  7. real pts(polys,2),pt(2),k                 !数组中1是横坐标  2是纵坐标
  8. !读入你的边界点,polys是点数量,边界点一行一个点,经度在前,纬度在后,中间用逗号或者空格隔开
  9. open(1,file='js.txt',status='old')         
  10. do i=1,polys
  11.   read(1,*)pts(i,1:2)
  12. enddo
  13. close(1)
  14. open(1,file='js.grd',form='binary',status='replace')
  15. pt(1)=xs
  16. pt(2)=ys
  17. do i=1,y
  18.   do j=1,x
  19.       k=inRegion(pts,pt,polys)   !这里调用判断点和多边形关系的函数
  20.           write(1)k         
  21.       pt(1)=pt(1)+interv
  22.   enddo
  23.   pt(2)=pt(2)+interv
  24.   pt(1)=xs
  25. enddo
  26. close(1)
  27. end


最后在GrADS中测试一下吧!
mask.png

这份代码的功能当然不仅仅是用来输出GrADS的maskout文件,其他用途大家可以尽情自由发挥,比如计算面雨量。。。

=======================
这里下载完整程序:
ptInRegion.f90 (1.99 KB, 下载次数: 133)

评分

参与人数 2金钱 +38 贡献 +7 收起 理由
iam最小值 + 20 + 1 精华
lqouc + 18 + 6 大大真给力

查看全部评分

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

新浪微博达人勋

发表于 2013-11-14 17:39:32 | 显示全部楼层
lz fortran grads 玩的NB啊 膜拜~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-14 22:26:03 | 显示全部楼层
膜拜大神!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-14 23:19:30 | 显示全部楼层
玩转fortran真的接地气
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 09:02:13 | 显示全部楼层
清风大大给力!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 10:14:55 | 显示全部楼层
{:eb513:}{:eb513:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 12:47:25 | 显示全部楼层
清风出品,必属精品
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 12:47:27 | 显示全部楼层
清风出品,必属精品
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 22:07:00 | 显示全部楼层
膜拜!!顶级!!MASTER!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-20 14:49:48 | 显示全部楼层
又学习了,谢谢!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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