To get the correct bounding box (also known as extent) from GDAL corner coordinates, you need to consider the spatial reference system (SRS) of the dataset. The corner coordinates typically represent the geographic coordinates (latitude and longitude) of the dataset's four corners, but they need to be transformed to the desired SRS to get the bounding box in that specific coordinate system.
Here's how you can do it using the GDAL library in Python:
pythonfrom osgeo import gdal, osr
def get_bounding_box(file_path):
# Open the dataset
dataset = gdal.Open(file_path)
if dataset is None:
raise Exception("Unable to open the dataset.")
# Get the geotransform (corner coordinates and pixel size)
geotransform = dataset.GetGeoTransform()
# Get the spatial reference system (SRS)
srs = osr.SpatialReference()
srs.ImportFromWkt(dataset.GetProjection())
# Get the extent in the SRS units
xmin = geotransform[0]
ymax = geotransform[3]
xmax = geotransform[0] + geotransform[1] * dataset.RasterXSize
ymin = geotransform[3] + geotransform[5] * dataset.RasterYSize
# Transform the extent to the desired SRS
target_srs = osr.SpatialReference()
target_srs.SetWellKnownGeogCS("EPSG:4326") # For example, transform to WGS84
transform = osr.CoordinateTransformation(srs, target_srs)
point1 = transform.TransformPoint(xmin, ymin)
point2 = transform.TransformPoint(xmax, ymax)
# Get the transformed bounding box in (minlon, minlat, maxlon, maxlat) format
bbox = (point1[0], point1[1], point2[0], point2[1])
return bbox
# Example usage:
file_path = "path/to/your/raster_or_vector_file"
bbox = get_bounding_box(file_path)
print("Bounding Box (minlon, minlat, maxlon, maxlat):", bbox)
In this Python code, we use GDAL to open the dataset and get the geotransform (corner coordinates) and the spatial reference system (SRS) of the dataset. We then transform the corner coordinates to the desired SRS (in this example, we transform to WGS84, which has EPSG code 4326) using the osr.CoordinateTransformation
class. Finally, we calculate and return the bounding box in (minlon, minlat, maxlon, maxlat) format.
Make sure to install the GDAL library and its Python bindings (osgeo
) before running the code. You can install GDAL using pip:
pip install gdal
Adjust the example usage with the correct file path to your raster or vector dataset, and it will return the bounding box in the desired SRS (WGS84 in this case).