I have a BigTiff image and an associate point shapefile with features. I would like to know how can I create a bounding box from that shapefile to create/clip images around that points to train a model.
EDIT:
I'm trying to do it automatically in a Jupyter Notebook and I've followed this threat but all exported images are completely black.
from osgeo import ogr, gdal
InputImage = 'XXX.tif'
Shapefile = 'XXX.shp'
RasterFormat = 'GTiff'
PixelRes = 0.5
VectorFormat = 'ESRI Shapefile'
# Open datasets
Raster = gdal.Open(InputImage, gdal.GA_ReadOnly)
Projection = Raster.GetProjectionRef()
VectorDriver = ogr.GetDriverByName(VectorFormat)
VectorDataset = VectorDriver.Open(Shapefile, 0) # 0=Read-only, 1=Read-Write
layer = VectorDataset.GetLayer()
FeatureCount = layer.GetFeatureCount()
print("Feature Count:",FeatureCount)
# Iterate through the shapefile features
Count = 0
for feature in layer:
Count += 1
print("Processing feature "+str(Count)+" of "+str(FeatureCount)+"...")
geom = feature.GetGeometryRef()
minX, maxX, minY, maxY = geom.GetEnvelope()
xmin, ymin = minX - 50, minY - 50
xmax, ymax = maxX + 50, maxY + 50
# Create raster
OutTileName = str(Count)+'.SomeTileName.tif'
OutTile = gdal.Warp(OutTileName, Raster, format=RasterFormat, outputBounds=[xmin, xmax, ymin, ymax], xRes=PixelRes, yRes=PixelRes, dstSRS=Projection, resampleAlg=gdal.GRA_NearestNeighbour, options=['COMPRESS=DEFLATE'])
OutTile = None # Close dataset
# Close datasets
Raster = None
VectorDataset.Destroy()
print("Done.")
Moreover, I feel this is not the most simple or efficient way to do the bounding box.
Best Answer
From the Processing Toolbox run the "Extract layer extent" algorithm.