- 积分
- 56858
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
发表于 2015-7-14 23:02:34
|
显示全部楼层
本帖最后由 MeteoInfo 于 2015-7-14 23:04 编辑
用MeteoInfoLab试了试,可以看出数据都分布在陆地上,这种数据没办法形成mesh(需要数据的位置聚集在一起),估计因此数据写成类似一维的结构。可以直接绘制散点图,不过点太多显示会很慢,显示效果也不好。因此考虑将散点数据格点化(插值形成矩形网格),脚本里用了最快速的插值方法“nearest”,每个格点如果有散点则格点值是该格点中所有散点的平均值,否则格点值赋为缺测值(NaN)。此外还有IDW等插值方法,但这么多点插值起来会很慢。
再次强调一下,下面是MeteoInfoLab的代码,不过我想MatLab处理起来也可以参考此思路。
脚本代码:
 - f = addfile('D:/Temp/nc/GT_SSD-L2-SSM_I_LST_2-20030101_051200-CEST-0.25X0.25-V1.0.nc')
- lon = f['lon'][:,:]
- lat = f['lat'][:,:]
- lst = f['LST'][:,:]
- #Interpolate to grid data
- lon_g = arange(0, 360, 1)
- lat_g = arange(-90, 90, 1)
- glst, lon_g, lat_g = griddata((lon, lat), lst, xi=(lon_g,lat_g), method='neareast')
- #Plot
- axesm()
- mlayer = shaperead('D:/Temp/map/country1.shp')
- geoshow(mlayer)
- #layer = scatterm(lon, lat, lst, edge=False)
- levs = arange(240, 300, 5)
- layer = imshowm(lon_g, lat_g, glst, levs)
- colorbar(layer)
- title('Land Surface Temperature')
- axism([-180, 180, -90, 90])
|
|