OGR坐标变换

  以下是自己的一点点心得,留作以后用。可能不正确,欢迎指正

利用GDAL/OGR进行投影变化(VC++中),相关的函数都在ogr_srs_api.h中了。

Lilin大虾写得是关于phython中进行转换的,所以他利用的是这样的。

                               ct = osr.CoordinateTransformation(osrobj,osrobj3)

                            ct.TransformPoint(590000,4928000)

vc中,利用OGRSpatialReference对象的Transform()TransformEx()方法可以实现不同投影系统之间以及投影坐标和地理坐标之间的转换(两者的区别我还不知道)

       OGRSpatialReference * ShpSpf;//

       OGRSpatialReference Raster_spf;

       ShpSpf=polayer->GetSpatialRef();       //获取矢量图像的投影信息 

       Raster_spf=poDataset->GetProjectionRef();//获取栅格图像的投影信息 

OGRCoordinateTransformation *poCT;

                     if (!(ShpSpf->IsProjected()))//判断是否经过投影

                     {

                            if(ShpSpf->IsGeographic())//判断是否有地理坐标信息

                            {

                            AfxMessageBox("没有投影信息,只有地理信息!");

                                   return;

                            }

                            else

                            {

                                   AfxMessageBox("没有地理坐标和投影信息!");

                                   return;

                            }

                     }

int spf_flag=ShpSpf->IsSame(&Raster_spf);//spf_flag标示两个投影是否一致,如果一样则为1,反之为0

 

1、不同投影系统之间转换:

                            poCT=OGRCreateCoordinateTransformation(ShpSpf,&Raster_spf);

                     //     poCT->TransformPoint();

                            if((poCT==NULL))

                            {

                                   AfxMessageBox("不支持该类型的坐标转换!");

                                   shape=3;//不再画这一层数据

                                   return;

                            }

                            if(!poCT->TransformEx(ipoints,Arrayx,Arrayy))

                            {

                                   AfxMessageBox("坐标转换失败!");

                                   shape=3;//不再画这一层数据

                                   return;

                            }

 

2、投影坐标到地理坐标的转换:

                            OGRSpatialReference *tempsp;

                            tempsp=Raster_spf.CloneGeogCS();//获取投影系统中的地理坐标信息

                            OGRCoordinateTransformation *poCT1;

//投影坐标向地理坐标转换。

                            poCT1=OGRCreateCoordinateTransformation(&Raster_spf,tempsp);

//&Raster_spf,tempsp顺序颠倒过来就是从地理坐标向投影坐标转换了

                            if(poCT1->TransformEx(1,&Arrayx[1],&Arrayy[1]))

                            {

                            }

转载于:https://www.cnblogs.com/gisbingxin/archive/2008/12/15/1355414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值