2)自行准备一幅Landsat影像(裁剪一块边长不超过100个像元的矩形区域作为计算单元),利用arcpy计算其对应的NDVI的代码
时间: 2024-03-25 21:35:32 浏览: 68
以下是使用arcpy计算Landsat影像的NDVI的代码:
```python
import arcpy
# 设置工作空间
arcpy.env.workspace = r"C:\data"
# 设置输入和输出文件路径
inRaster = "landsat.tif"
outRaster = "ndvi.tif"
# 计算NDVI
redBand = arcpy.Raster(inRaster + "\Band_4")
nirBand = arcpy.Raster(inRaster + "\Band_5")
ndvi = (nirBand - redBand) / (nirBand + redBand)
# 保存结果
ndvi.save(outRaster)
```
在这个代码中,我们首先设置了工作空间,接着设置了输入和输出文件路径。然后,我们使用arcpy的Raster函数读取Landsat影像的红光和近红外波段,并计算NDVI。最后,我们使用Raster对象的save方法保存结果到输出文件中。
请注意,这个代码只是一个示例,你需要根据自己的数据调整文件路径和波段编号。
相关问题
给出利用landsat影像计算ndvi的代码
以下是利用Landsat影像计算NDVI的Python代码示例:
```python
import rasterio
import numpy as np
# 打开Landsat影像文件
with rasterio.open('landsat.tif') as src:
# 读取红波段和近红外波段数据
red = src.read(4)
nir = src.read(5)
# 计算NDVI
ndvi = np.where((nir+red) == ., , (nir-red)/(nir+red))
# 将NDVI写入新的GeoTIFF文件
profile = src.profile
profile.update(dtype=rasterio.float32, count=1)
with rasterio.open('ndvi.tif', 'w', **profile) as dst:
dst.write(ndvi.astype(rasterio.float32), 1)
```
这段代码使用了rasterio库来读取和写入GeoTIFF格式的影像文件,计算NDVI的公式为(NIR-Red)/(NIR+Red),其中NIR为近红外波段,Red为红波段。最后将NDVI结果写入新的GeoTIFF文件中。
给出利用landsat影像计算evi的代码
以下是利用Landsat影像计算EVI的代码:
```python
import rasterio
import numpy as np
# 读取红、近红波段的数据
with rasterio.open('landsat.tif') as src:
red = src.read(4)
nir = src.read(5)
# 计算EVI
G = 2.5
L = 1
C1 = 6
C2 = 7.5
EVI = G * ((nir - red) / (nir + C1 * red - C2)) + L
# 将EVI保存为GeoTIFF文件
with rasterio.open('evi.tif', 'w', **src.profile) as dst:
dst.write(EVI.astype(rasterio.float32), 1)
```
希望对您有所帮助!
阅读全文