- 积分
- 4094
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-9-28
- 最后登录
- 1970-1-1

|
GrADS
系统平台: |
win8.1 |
问题截图: |
|
问题概况: |
1、台风登入点总是差0.2°左右,etopo1数据时0.0001的精度 ,可是图形出来是对。我估计求登入点的算法不对。
2、数据输出时总是显示好几个登入点,跟自己预期想的不一样,应该就是出现第一个登入点才对 |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
4 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
首先我将etopo1数据进行了处理,海洋置0,陆地置1. 我自己的想法是以相邻两个台风路径点构成直线,然后再直线上连续取点,观察时是否有点在陆地上。如果有,那么第一个直线上第一个在陆地上的点就是登入点。
for i=1:c-1 %共c个台风路径点
if abs(b(i)-b(i+1))<0.00001 %第一种情况两个点竖直
for j=1:c
b1=a(j);
if zz(b(j),b1)==1
lon=x1(j);
lat=y1(b1);
sprintf('lat=%f lon=%f', lat,lon)
break;
end
end
else %非竖直
d=(a(i+1)-a(i))/(b(i+1)-b(i));%xielv
e=(a(i)-b(i)*d);
jg=(b(i+1)-b(i))/abs(b(i+1)-b(i));
for j=b(i):jg:b(i+1)
b1=d*j+e;
b1=fix(b1);
if zz(j,b1)>0
lon=x1(j);
lat=y1(b1);
sprintf('lat=%f lon=%f', lat,lon)
break;
end
end
end
end
但是出来的结果出来好多
lat=17.983333 lon=122.183333
lat=18.583333 lon=120.883333
lat=22.183333 lon=120.666667
lat=24.500000 lon=121.833333
lat=29.566667 lon=121.983333
lat=29.800000 lon=121.900000
lat=30.900000 lon=121.700000
lat=34.683333 lon=128.583333
lat=37.233333 lon=136.700000
出来这么多答案 精确度也不高 我从图上放大观察应该是17.9882 122.2
麻烦大家了 我觉得是我控制条件的问题 我查阅了相关网页,询问了学长,没有实质进展,麻烦大家了。谢谢!
|
|