欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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的值:(下图仅做参考,与程序中数据无关)
ENVI/IDL找到两张经过地理校正(georeferenced)的影像的相对位置(X0,Y0值)ENVI/IDL找到两张经过地理校正(georeferenced)的影像的相对位置(X0,Y0值)

此处很重要的是pixel size的大小:print,raster.spatialref.pixel_size,即一个像素所代表的的经纬度度数。
即:x_pixel_size,y_pixel_size
ENVI/IDL找到两张经过地理校正(georeferenced)的影像的相对位置(X0,Y0值)

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

相关标签: envi,idl