ENVI/IDL找到两张经过地理校正(georeferenced)的影像的相对位置(X0,Y0值)

文中所用影像为envi自带数据
参考影像的经纬度1(左上角的Lat/Lon)为:Raster.SPATIALREF
经纬度2(Lat/Lon)是:Task.INPUT_COORDINATE = [482399.0584,4427505.0643]
本文目的是求经纬度2相对于经纬度1在pixel coordinate里的相对位置。其实就是求envi mosaic 里的X0,Y0的值:(下图仅做参考,与程序中数据无关)
在这里插入图片描述在这里插入图片描述

此处很重要的是pixel size的大小:print,raster.spatialref.pixel_size,即一个像素所代表的的经纬度度数。
即:x_pixel_size,y_pixel_size
在这里插入图片描述

pro ConvertMapToPixelCoordinates
; Start the application
e = ENVI(/HEADLESS)

; Open an input file
File = Filepath('qb_boulder_msi', Subdir=['data'], $
  Root_Dir=e.Root_Dir)
Raster = e.OpenRaster(File)

; Get the task from the catalog of ENVITasks
Task=ENVITask('ConvertMapToPixelCoordinates')

; Define inputs
Task.INPUT_COORDINATE = [482399.0584,4427505.0643]
Task.SPATIAL_REFERENCE = Raster.SPATIALREF

; Run the task
Task.Execute

; Get the output coordinates
Print,'x_0,y_0', Task.OUTPUT_COORDINATE
print,'x_size,y_size',raster.spatialref.pixel_size
end

输出结果:

ENVI> convertmaptopixelcoordinates
% Compiled module: CONVERTMAPTOPIXELCOORDINATES.
x_0,y_0       761.37946       526.21429
x_size,y_size       2.8000000       2.8000000

附:
1.envi 库函数的参考文件,自行了解关键字(包括pixel_size)的含义:
https://pan.baidu.com/s/1XCnVSjwklLEtRKVEkq8QcA
提取码:97ew
2.envi/idl 拼接mosaic的库函数参考:
https://www.harrisgeospatial.com/docs/MOSAIC_DOIT.html
https://www.harrisgeospatial.com/docs/envimosaicraster.html

发布了39 篇原创文章 · 获赞 5 · 访问量 3070

猜你喜欢

转载自blog.csdn.net/weixin_43955546/article/details/104746880