- 积分
- 311
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-22
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
第一步:准备地图边界数据,格式如下,其中6、2表示后续经纬度数据个数
6
119.908859252930, 29.101516723633
119.910301208496, 29.100149154663
119.909950256348, 29.098592758179
119.907882690430, 29.098100662231
119.907005310059, 29.096168518066
119.907432556152, 29.096067428589
2
119.903472900391, 29.094945907593
119.902725219727, 29.095489501953
第二步:做分段处理(生成grad地图,每段经纬度个数不能超过255个)
可用fortran程序处理
例:
c 处理段落超过255,分段
parameter(m=10000,mm=250)
real lat(m),lon(m)
integer aa,bb
integer k,k1
open(1,file="d:\map\map.txt")
open(2,file="d:\map\map.tmp")
do 10 j=1,m
read(1,*,end=100)aa
do i=1,aa
read(1,*)lon(i),lat(i)
enddo
if(aa<255) then
k=1
write(2,222)aa,"0"
do l=1,aa
write(2,111)lon(l),lat(l)
enddo
else
k=aa/250
k1=mod(aa,250)
do l=1,k
write(2,222)mm,"0"
do n=1,250
write(2,111)lon(250*(l-1)+n),lat(250*(l-1)+n)
enddo
enddo
write(2,222)k1,"0"
do ll=1,k1
write(2,111)lon(250*k+ll),lat(250*k+ll)
enddo
endif
111 format(f11.7,",",f10.7)
222 format(i4,2x,a1)
10 enddo
100 write(*,*)"read over,"
end
第三步:生成地图文件
fortran程序处理
integer*1 ihead(3),ilon(4),ilat(4)
integer lon,lat,npairs
equivalence (lon,ilon),(lat,ilat)
real alat,alon
character(len=30) flname
flname="map.tmp"
open(1,file=flname,status='old')
flname="map"
open(3,file=flname, form='binary')
ihead(1)=1
ihead(2)=1
nsegs=0
99 read(1,*,end=100) npairs
nsegs=nsegs+1
if(npairs.gt.255) then
print *,'Number of pairs in segment no.',nsegs,'exceeds 255 !'
stop 'job aborted'
endif
ihead(3)=npairs
irec=irec+1
write(3)ihead
write(6,*)(ihead(k),k=1,3),npairs
do 10 i=1,npairs
read(1,*) alon,alat
lon=int(alon*10000.)+0.5
lat=int((alat+90.)*10000.)+0.5
write(3)(ilon(k),k=3,1,-1)
write(3)(ilat(k),k=3,1,-1)
10 continue
go to 99
100 print *,'Total number of segments processed= ',nsegs
print *,irec
close(1)
close(2)
close(3)
stop ' Normal termination'
end
第四步:绘制地图
将生成的map考到grads根目录下的dat文件夹中
gs文件中加入
'set mpdset map'
'draw map'
即可显示地图
关于去掉边界外的等值线处理,还需配合province-basemap.gs,该文件可在论坛里下
同时要制作map_out.txt文件
map_out.txt格式为:经度范围、纬度范围、draw、边界经纬度序列、经纬度范围左下角坐标、右下角坐标、右上角坐标、左上角坐标、左下角坐标。注意:边界经纬度序列必须是一连续闭合的。
map_out例:
119.0999985 120.9000015 28.3999996 29.7999992 draw 119.9088593 29.1015167 119.9103012 29.1001492………… 119.0999985 28.3999996 120.9000015 28.3999996 120.9000015 29.7999992 119.0999985 29.7999992 119.0999985 28.3999996
如有问题,可邮件联系
bekaku@163.com
|
评分
-
查看全部评分
|