zoukankan      html  css  js  c++  java
  • 使用GDAL将下载的Google卫星图像转为带坐标的tif

    网上有很多下载Google地图的卫片的软件,一般下载下来的图像都是jpg格式的,另外附带一个坐标信息的描述文件。这样的数据不能直接拿来在遥感或者GIS软件中使用,因为图像里面没有投影和坐标信息,所以就需要将这个描述文件中的坐标信息导入到影像中。下面就如何使用gdal提供的工具来完成这个功能,当然也可以自己写程序。

    首先看看输入数据都有什么,这里只有一个jpg图像和一个txt文件,jpg图像如下,原始大小为12800×7168,上传的时候太大,我缩小了下。

    另外的描述信息主要有:

    图片宽度(像素):12800
    图片高度(像素):7168
    
    Web墨卡托坐标系(地图原始坐标)
    左下角:-4383205.071958936800000,-20037508.165080477000000
    左上角:-4383205.071958936800000,-11271098.261898357000000
    右上角:11271098.756465839000000,-11271098.261898357000000
    右下角:11271098.756465839000000,-20037508.165080477000000
    
    WGS84坐标系(经纬度坐标)
    左下角:-39.375000000000000,-85.051128779806547
    左上角:-39.375000000000000,-70.612614238019233
    右上角:101.250000000000000,-70.612614238019233
    右下角:101.250000000000000,-85.051128779806547
    
    从上面的描述信息中可以看出来,地图原始的四角坐标都是知道的,Google的地图使用的都是Web墨卡托投影,对应的EPSG代码是900913,而经纬度对应的EPSG代码是4326。

    通过上面的信息可以知道,我们可以将上面的坐标信息处理为一个World file文件,也就是jpw文件,这个文件就可以给jpg图像赋坐标信息了,至于投影信息最后可以使用gdalwarp中的-s_srs命令来指定。

    首先使用gdalinfo工具查看图像的信息,如下图所示,可以看出图像是没有任何坐标和投影信息的。


    通过上面的坐标计算的图像的分辨率大致为1222.9925米,所以world file里面的内容如下。(注意,这里假设图像正北朝上,一般来说Google的卫片都满足这个要求,如果不满足,可以使用上面的四角坐标用最小二乘来结算这个world file中的六个数值)。

    1222.9925000000000
    0.0000000000
    0.0000000000
    -1222.9925000000
    -4383205.071958936800000
    -11271098.261898357000000
    将上面的内存保存为一个和jpg图像名字相同,后缀名为jpw的文件,然后使用gdalinfo查看,看看是不是有坐标信息了。

    如果想把这个图像直接转成带有投影和坐标的tif数据的话,可以直接使用gdal_translate工具,命令如下:

    gdal_translate.exe -of GTiff -a_srs EPSG:900913 --config GDAL_DATA C:warmerdaGDAL110_SDKdata --config GDAL_FILENAME_IS_UTF8 NO C:UsersLiMinluDesktopjpg2tif全球_03-02.jpg C:UsersLiMinluDesktopjpg2tif900913.tif 
    执行后使用gdalinfo查看输出的图像信息,如下图,从里面可以看到输出的图像投影和坐标信息都有了。红色区域为使用gdal_translate执行的部分。


    如果想将结果直接生成WGS84的经纬度数据,可以直接使用gdalwarp工具,命令行如下。

    gdalwarp.exe -of GTiff -s_srs EPSG:900913 -t_srs EPSG:4326 --config GDAL_DATA C:warmerdaGDAL110_SDKdata --config GDAL_FILENAME_IS_UTF8 NO C:UsersLiMinluDesktopjpg2tif全球_03-02.jpg C:UsersLiMinluDesktopjpg2tifwgs84.tif 
    执行后使用gdalinfo查看输出的图像信息,如下图,从里面可以看到输出的图像投影和坐标信息都有了。红色区域为使用gdalwarp执行的部分。

  • 相关阅读:
    一个很好的博客 -----------------十年风雨,一个普通程序员的成长之路(五)
    项目中遇到的问题-----时间间隔查询
    不懂CPU工作原理又如何 ---CSDN
    鸿蒙OS横空出世-----
    关于项目中遇到的问题-- excel工具选择
    关于项目中遇到的问题-- 百度disconf 分布式配置中心
    SpringBoot使用邮件发送
    SpringBoot使用OkHttp
    Java8 获取当天日期的前一天
    如何将数字转为百分比?
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313939.html
Copyright © 2011-2022 走看看