请对上面代码进行修改,获取影像有效值区域,并且坐标为地理投影坐标
时间: 2024-03-17 20:44:51 浏览: 48
获取图像某点坐标
要获取影像的有效值区域,可以使用GDAL库的`ReadAsArray()`方法读取影像数据,然后根据数据的最小值和最大值确定有效值区域。为了将坐标转换为地理投影坐标,可以使用GDAL库的`osr.SpatialReference()`和`osr.CoordinateTransformation()`方法。以下是修改后的示例代码:
```python
from osgeo import gdal, osr
# 读取卫星影像
src_ds = gdal.Open('image.tif')
# 获取影像的地理变换参数
transform = src_ds.GetGeoTransform()
x_origin = transform[0]
y_origin = transform[3]
pixel_width = transform[1]
pixel_height = transform[5]
cols = src_ds.RasterXSize
rows = src_ds.RasterYSize
# 读取影像数据
band = src_ds.GetRasterBand(1)
data = band.ReadAsArray()
# 获取有效值区域
valid_mask = (data != band.GetNoDataValue())
x = pixel_width * numpy.arange(cols) + x_origin
y = pixel_height * numpy.arange(rows) + y_origin
x_valid = x[valid_mask.any(axis=0)]
y_valid = y[valid_mask.any(axis=1)]
x_min, x_max = x_valid.min(), x_valid.max()
y_min, y_max = y_valid.min(), y_valid.max()
# 将坐标转换为地理投影坐标
srs = osr.SpatialReference()
srs.ImportFromWkt(src_ds.GetProjection())
transformer = osr.CoordinateTransformation(srs, srs.CloneGeogCS())
lon_min, lat_max, _ = transformer.TransformPoint(x_min, y_max)
lon_max, lat_min, _ = transformer.TransformPoint(x_max, y_min)
# 输出影像有效值区域的地理投影坐标
print((lon_min, lat_min, lon_max, lat_max))
```
这段代码将会读取名为`image.tif`的卫星影像,获取影像的地理变换参数和投影信息,读取影像数据,获取有效值区域,并将坐标转换为地理投影坐标。最后输出影像有效值区域的地理投影坐标。
阅读全文