gdal筆記之獲取矢量面邊界點坐標


有時候我們需要獲得矢量邊界的空間坐標,然后把它轉化為行列坐標,例如使用GDALWarp實現裁剪的時候。​下面的代碼就是把空間坐標下的矢量多邊形轉化為行列坐標的矢量多邊形。

OGRPolygon* aoiPolygon = (OGRPolygon*)aoiGeometry;

OGRLinearRing* boundary = aoiPolygon->getExteriorRing(); 

OGRPolygon* pPolygon = (OGRPolygon*)OGRGeometryFactory::createGeometry(wkbPolygon); 

int pointcount = boundary->getNumPoints(); 

OGRLinearRing* pRing = (OGRLinearRing*)OGRGeometryFactory::createGeometry(wkbLinearRing); 

for (int i = 0; i < pointcount; i++) 

{  

    double gx = boundary->getX(i);  

    double gy = boundary->getY(i);  

    int row = static_cast((gy - srcGeotransform[3]) / srcGeotransform[5]); 

    int col = static_cast((gx - srcGeotransform[0]) / srcGeotransform[1]);  

    OGRPoint pt;  

    pt.setX(col);  pt.setY(row);  

    pRing->addPoint(&pt); 

}

pRing->closeRings(); 

pPolygon->addRing(pRing); 

OGRGeometry* cutGeometry = (OGRGeometry*)pPolygon;​

注:aoiGeometry是原始多邊形


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM