初学stamps,找遍全网geo中.lat和.lon的文件准备方法,终于弄出来了,分享出来,造福各位初学者。博主也处于探索阶段,如果发现本文存在问题,欢迎留言。
整个步骤主要参考科学网—[转载]gamma转stamps流程 - 吴远昆的博文,我只是把步骤细化了
使用mkgird 命令,建立一个和主影像大小一致的pointlist 文件,比如,主影像是9000*12000的,就建一个9000*12000的文件
mkgrid pt 6500 3000 1 1 1 1
使用data2pt 文件,把栅格的dem转换为点格式的,这一步是给第三步用的
data2pt xz_dem.rdc 20200317.rmli.par pt 20200317.rmli.par pdem 1 2
用pt2geo对第一步生成的pointlist,就是主影像的每个像元,生成其对应的空间经纬度数据
pt2geo pt - 20200317.rmli.par - pdem xz_dem.seg.par xz.diff_par 1 1 plist_map pmap_coord plat_lon phgt 0 pmask_dem
plat_lon就是我们想要的数据,但是
这个文件是二进制存储的,里面的数据是这样的:[104.01,30.02,0.1.02,30.03……],经纬度交替分布,而我们想要的lon文件是[104.01,104.02……],lat文件是[30.01,30.02……]
所以需要把上述文件拆开,python可以做这件事情,不过首先要将
plat_lon 进行swap_bytes plat_lon plat_lon4 4
然后用Python进行拆分,当然用matlab或者其他自己熟悉的软件也行,python进行转换的代码如下
import numpy as np
cors=np.fromfile('plat_lon4',np.float32)
lon=cors[0:len(cors):2]
lat=cors[1:len(cors):2]
lon.tofile('lon.raw')
lat.tofile('lat.raw')
最后再对生成的lon.raw和lat.raw做一次swap_bytes 4 就得到了我们想要的.lon和.lat文件!!!
生成lon.raw和lat.raw后可以将数据导入matlab中查看数据是否正确
fid=fopen('lat.raw')
lat=fread(fid,inf,'float32')