遥感影像WGS84投影批量转换到CGCS2000的3度带坐标系
### 遥感影像WGS84投影批量转换到CGCS2000的3度带坐标系 在遥感领域,对不同地理空间参考系统(Geographic Coordinate System, GCS)之间的数据进行准确的坐标变换是十分重要的。本文将详细介绍如何通过IDL编程语言实现遥感影像从WGS84坐标系批量转换到CGCS2000的3度带坐标系的过程。 #### WGS84与CGCS2000简介 - **WGS84**(World Geodetic System 1984):全球广泛使用的地理坐标系统,用于定义地球表面的位置。它常用于GPS等全球定位系统。 - **CGCS2000**(China Geodetic Coordinate System 2000):中国于2000年建立的国家大地坐标系,取代了以前使用的北京54和西安80坐标系。CGCS2000与国际标准WGS84非常接近,但精度更高,适用于中国的高精度测绘工作。 #### 3度带坐标系 3度带坐标系是一种投影方式,将地球表面划分为多个3度经度带,每带采用独立的中央子午线进行投影。这种投影方式可以减小每个带内的变形,适合大范围的地形图制作。 #### IDL批处理转换流程 根据提供的IDL代码示例,我们可以详细解析遥感影像从WGS84投影批量转换到CGCS2000的3度带坐标系的具体步骤。 ##### 步骤1:环境初始化与文件读取 ```idl prostep3 compile_optIDL2 envi,/restore_base_save_files envi_batch_init ``` 上述代码初始化了IDL环境,并确保ENVI软件的批处理模式正常启动。 ```idl image_dir='D:\test\input\'; image_files=file_search(image_dir,'*.img',count=numfiles); ``` 这部分代码指定了输入图像的目录,并搜索该目录下的所有`.img`文件,存储到`image_files`变量中。 ##### 步骤2:循环处理每个文件 ```idl for i=0,numfiles-1 do begin e=ENVI(/headless) image_file=image_files[i] envi_open_file,image_file,r_fid=fid envi_file_query,fid,ns=ns,nl=nl,nb=nb,dims=dims raster1=e.OpenRaster(image_file) ``` 这部分代码循环遍历每个文件,并使用ENVI库函数打开并获取文件的基本信息。 ##### 步骤3:获取坐标信息 ```idl NCOLUMNS=raster1.NCOLUMNS NROWS=raster1.NROWS spatialRef=raster1.SPATIALREF File1X=round(NCOLUMNS/2) File1Y=round(NROWS/2) spatialRef.ConvertFileToMap,File1X,File1Y,MapX,MapY spatialRef.ConvertMapToLonLat,MapX,MapY,Lon,Lat ``` 这段代码获取了图像的中心坐标,并将其从文件坐标系转换为地理坐标系(纬度和经度)。 ##### 步骤4:确定目标3度带 ```idl a=round(Lon/3) Lonint=a*3 ``` 这里计算了目标3度带的中央经度。 ##### 步骤5:创建目标坐标系 根据中央经度的不同,创建不同的CGCS2000坐标系。例如,当中央经度为57°时: ```idl if Lonint EQ 57 then begin name='CGCS_2000_3_Degree_GK_CM_57E' datum='D_China_2000' params=[6378137.0,6356752.3,0.000000,57.000000,500000.0,0.0,1.000000] o_proj=envi_proj_create(type=3,name=name,params=params,datum=datum) ``` 通过调用`envi_proj_create`函数创建指定参数的CGCS2000坐标系。 ##### 步骤6:坐标变换与保存 ```idl pos=lindgen(nb) o_ps=[250,250] grid=[25,25] outfiledir='D:\test\true' out_name=outfiledir+'\'+file_baseName(image_file,'.img')+'.img' envi_convert_file_map_projection,fid=fid,r_fid=fid_out,o_proj=o_proj,dims=dims,pos=pos,out_name=out_name,background=0,o_pixel_size=o_ps,grid=grid,warp_method=2,resampling=0 ``` 这部分代码实现了从原始坐标系到目标坐标系的变换,并将变换后的结果保存到指定的输出目录。 #### 总结 本文详细介绍了如何使用IDL编程语言实现遥感影像从WGS84坐标系批量转换到CGCS2000的3度带坐标系的过程。通过上述步骤,可以有效地处理大量遥感影像的数据转换需求,为后续的地理信息系统分析和应用提供支持。
compile_opt IDL2
envi,/restore_base_save_files
envi_batch_init
;打开要转换投影的影像
image_dir='D:\test\input\' ;根据文件存放的目录进行相应修改
image_files=file_search(image_dir,'*.img',count=numfiles) ;根据相应的文件格式修改过滤条件
;****************添加功能代码******************
for i=0,numfiles-1 do begin
e = ENVI(/headless)
image_file=image_files[i]
envi_open_file,image_file,r_fid=fid
envi_file_query,fid,ns=ns,nl=nl,nb=nb,dims=dims
raster1 = e.OpenRaster(image_file)
NCOLUMNS=raster1.NCOLUMNS ;影像的行列数
NROWS=raster1.NROWS
spatialRef = raster1.SPATIALREF ;空间参考
File1X = round(NCOLUMNS/2) ;影像中心坐标
File1Y = round(NROWS/2)
spatialRef.ConvertFileToMap, File1X, File1Y, MapX, MapY
spatialRef.ConvertMapToLonLat, MapX, MapY, Lon, Lat ;地图坐标转经纬度
a=round(Lon/3) ;影像中心经度进行3度取整
Lonint=a*3
print,Lonint
print,file_baseName(image_file,'.img')+'.img'
;*******************CGCS2000-57E**************************
if Lonint EQ 57 then begin
;定义CGCS2000-57E投影
name='CGCS_2000_3_Degree_GK_CM_57E'
datum='D_China_2000'
o_proj=envi_proj_create(type=3,name=name,params=params,datum=datum)
;投影转换
pos=lindgen(nb)
o_ps=[250,250]
grid=[25,25]
outfiledir='D:\test\true'
out_name = outfiledir +'\' +file_baseName(image_file,'.img')+'.img'
envi_convert_file_map_projection,fid=fid,r_fid=fid_out,o_proj=o_proj,dims=dims,pos=pos,out_name=out_name,background=0,o_pixel_size=o_ps,grid=grid,warp_method=2,resampling=0
endif
;*******************CGCS2000-60E**************************
if Lonint EQ 60 then begin
;定义CGCS2000-60E投影
name='CGCS_2000_3_Degree_GK_CM_60E'
datum='D_China_2000'
params=[6378137.0,6356752.3,0.000000, 60.000000,500000.0, 0.0, 1.000000]
o_proj=envi_proj_create(type=3,name=name,params=params,datum=datum)
;投影转换
pos=lindgen(nb)
o_ps=[250,250]
grid=[25,25]
outfiledir='D:\test\true'
out_name = outfiledir +'\' +file_baseName(image_file,'.img')+'.img'
envi_convert_file_map_projection,fid=fid,r_fid=fid_out,o_proj=o_proj,dims=dims,pos=pos,out_name=out_name,background=0,o_pixel_size=o_ps,grid=grid,warp_method=2,resampling=0
endif
;*******************CGCS2000-63E**************************
if Lonint EQ 63 then begin
;定义CGCS2000-63E投影
name='CGCS_2000_3_Degree_GK_CM_63E'
datum='D_China_2000'
剩余20页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助