[gdal-dev] extracting a raster data within a polygon?

Martin Chapman mchapman at hyperacktive.com
Wed Nov 13 22:39:42 PST 2019


Ahmet,

 

You can use either the gdalwarp.exe or the underlying gdal warper C++ API to create a new image using the polygon geometry as a cutline.  See the gdalwarp.exe or gdal warper C++ API documentation on how to do that.  

 

Basically, the cutline geometry will NULL out any pixels in the output image that are not within the polygon geometry.  If you use the gdalwarp.exe utility it will output a new image to disk.  If you use the gdal warper C++ API then you can write the output image to disk or memory.  For more information on how this is done programmatically see the source code for the gdalwarp.exe that is included with the gdal source code.

 

NOTE:  Your cutline geometry needs to be topologically correct in order to produce good output.  Topologically correct geometries do not contain self-intersections, slivers, etc.  An example of a self-intersecting geometry is a bow-tie where two lines in the geometry cross each other.  Slivers are where two adjacent geometries share an edge but there is a gap between the edges.  Lots of shape files contain geometries that are not topologically correct because ArcMap and other tools don’t enforce that.  The warp API can handle polygons and multi-polygons.  If your output comes out looking screwed up it is most likely because your cutline geometry is not topologically correct OR you didn’t convert the cutline geometry from coordinate space to pixel space before feeding it to the warper C++ API (in the case you do it programmatically).  The gdalwarp.exe can handle geometries in coordinate space.  If by chance your cutline geometry is not topologically correct you may be able to fix it by doing a Buffer() operation on it using the OGR API with a buffer distance of 0.  GEOS (the underlying engine for the OGR buffer operation) will create a new geometry that is exactly the same as the input because the buffer distance is zero but the GEOS API will attempt to correct the topology of the new geometry.

 

Best regards,

Martin Chapman

 

  

 

From: gdal-dev [mailto:gdal-dev-bounces at lists.osgeo.org] On Behalf Of Ahmet Temiz
Sent: Saturday, November 9, 2019 9:57 AM
To: gdal-dev
Subject: [gdal-dev] extracting a raster data within a polygon?

 

Hi,

how I can extract a raster data within a polygon (not a rectangle) using C++?

i.e. dem within provincial boundary

Regards

-- 

Ahmet Temiz
Jeoloji Müh.
Afet ve Acil Durum Yönetimi Başkanlığı
Bilgi İşlem  Dairesi Başkanlığı-CBS Grubu


________________________

Ahmet Temiz
Geological Eng.
Information Systems - GIS Group
Disaster and Emergency Management
of Presidency

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20191113/7fbb5aa3/attachment.html>


More information about the gdal-dev mailing list