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.