I have a raster in which I'd like to cut a "hole" with a shapefile. I have points close to the boundary, but inside the hole, and I would like to find the closest point on the edge. To give a concrete example, I have a global dataset (1' resolution) and a shapefile of the coast of Africa. My data points are locations of cities near the coast, but some of these points are not exactly on the coast, so I'd like to find the closest point outside the shapefile, i.e. closest point over water.

Normally, I'd use: gdalwarp -of -GTiff -cutline Coast.shp -crop_to_cutline -dstnodata 0.0 Data.tif Clipped_Data.tif but this obviously only gives me what's inside the shapefile; I can't find an inverse clipping for this command.

I did some digging and found this, which allowed me to set everything inside the shapefile to 0, but when I sample using gmt grdtrack it just sets the values to 0 (which makes sense). Also, when I tried crop=True, invert=True I got: ValueError: crop and invert cannot both be True. So I reverted to using crop=False, invert=True.

So, how can I sample this raster at the closest point outside the shapefile? I think if I can get the hole to be set to NaN, I can use the -T flag in gmt grdtrack.


Take a look at mapproject -L option. I think it does what you want and no need to use a grid.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.