ENVI/IDL找到两张经过地理校正(georeferenced)的影像的相对位置(X0,Y0值)
程序员文章站
2024-03-24 22:08:46
...
文中所用影像为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