Java 利用gdal获取高程数据 ,通过经纬度获取不到高程数据,为什么转化后的行列号不对

 经纬度如下,导入的是高德地图下载的tif文件

lon = 112.9894083333

lat  = 28.2216183333

java利用gdal转化到对应的行列号

        //图像六要素
        double[] dGeoTrans = hDataset.GetGeoTransform();
        //经纬度转行列号
        double dTemp = dGeoTrans[1] * dGeoTrans[5] - dGeoTrans[2] *dGeoTrans[4];
        int    Xline = (int)((dGeoTrans[5] * (lon - dGeoTrans[0]) -dGeoTrans[2] * (lat - dGeoTrans[3])) / dTemp + 0.5) ;
        int    Yline = (int)((dGeoTrans[1] * (lat - dGeoTrans[3]) -dGeoTrans[4] * (lon - dGeoTrans[0])) / dTemp + 0.5);

 

得到的行列号分别为 Xline =-1303716   Yline  = 348851

因为行号为负数,肯定不能正常取到高程数据点

提问

1 是否是我下载的tif图片有问题?具有高程数据的tif图片是否一定要在谷歌地图下下载。我下载的高德地图的tif,可以读取出高程数据,但是有很多异常数据255,也有很多别的高度的数据。是否有办法确定图片下载有问题?

2 如果图片没有问题,是否算法有问题,解析不出经纬度?

 

 

 

请问下,上面你经纬度转行列号,出现负数的问题,后来怎么解决的?