vbcad 发表于 2017-9-8 15:11:27

插入卫星图象

在工程设计中碰到要插入某个地区的卫星图片,使用地图下载软件下载该区域的卫星图片后手动插入调整很麻烦.特记录一下,免得以后忘记了。

可以使用 ThisDrawing.ModelSpace.addraster 图片路径,插入点,比例,角度(弧度)的方法。
修改绝对路径为相对路径:将ImageFile属性为.\图片名.扩展名
修改ImageWidth,ImageHeight属性即可完成图片大小的调整。
有的卫星地图下载工具会将GPS坐标写入到图片中,也有很多手机照片是带有GPS 坐标信息的。结构如下:


‘------------查找到的网络资料-----------------
使用GDAL处理地理图像时,不可避免的会遇到一个问题,图像的地理坐标问题,因为有了这个地理坐标,地理图像才和普通图像有了最本质的区别,那么在使用GDAL时,如何处理与地理坐标相关的信息呢?下面进行简单的说明。
1:如何使用行列号计算图像的地理坐标?或者如何通过地理坐标来定位在图像的某个位置?2:如何获取图像的四至范围?或者如果通过指定的地理范围计算图像的所在区域?要解决上面三个问题,首先需要知道和了解GDAL的数据模型,其中里面有个非常重要的就是投影和六参数。这两个可以使用GDALDataset类中的GeoTransform()函数和GetProjectionRef()函数来进行获取。第一个参数获取的是图像的六参数(我自己起的名字,是一个仿射变化的参数),第二个是图像的投影(也就是空间参考系统)。下面先说说第一个六参数,六参数其实是图像行列号坐标和地理坐标转换的一组转换系数。下面是用GT来表示六参数,图像行列号与图像的地理坐标之间的数学关系式如下:    Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)    Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)上式中,Xgeo和Ygeo表示的图像的地理坐标,Xpixel表示图像的列号,Yline表示图像的行号,GT(i)就是上面所说的六参数,一共是六个值。这六个值大致可以分为三组:  GT(0)和GT(3)是第一组,表示图像左上角的地理坐标;  GT(1)和GT(5)是第二组,表示图像横向和纵向的分辨率(一般这两者的值相等,符号相反,横向分辨率为正数,纵向分辨率为负数);  GT(2)和GT(4)是第三组,表示图像旋转系数,对于一般图像来说,这两个值都为0。
为什么说图像的GT(0)和GT(3)表示图像左上角的坐标,对于图像行列号坐标系统来说,坐标的原点在左上角,所以左上角的行列号是(0,0),将坐标带入上式,可以得到:    Xgeo = GT(0)    Ygeo = GT(3)所以说GT(0)和GT(3)表示图像左上角的坐标。
GT(1)和GT(5)表示图像横向和纵向的分辨率。图像的分辨率就是图像每个像素所能表示的面积,一般都是正方形的格网,所以也就是没两个相邻像元坐标的差值。基于这个原理,使用两个坐标进行验证。假设当前点行列号坐标为A(i,j),相邻的右侧点坐标为B(i+1,j)。分别计算A和B的横向地理坐标,并计算差值,即:
dX= XgeoB - XgeoA  = -   =GT(0) -GT(0) + (i+1)*GT(1) - i*GT(1) + j*GT(2) - j*GT(2)   =(i+1)*GT(1) - i*GT(1)  = GT(1)同理可以得到 dY= GT(5)。



zzyong00 发表于 2017-9-8 16:16:06

mark一下,有时间研究一下

pengfei2010 发表于 2017-10-7 19:21:21

感谢楼主的无私分享 谢谢
页: [1]
查看完整版本: 插入卫星图象