赞
踩
- gdal.WarpOptions(options = [], format = 'GTiff', outputBounds = None,
- outputBoundsSRS = one, xRes = None, yRes = None,
- targetAlignedPixels = False, width = 0, height = 0, srcSRS = None,
- dstSRS = None, srcAlpha = False, dstAlpha = False, warpOptions = None,
- errorThreshold = None, warpMemoryLimit = None, creationOptions = None,
- outputType = GDT_Unknown, workingType = GDT_Unknown, resampleAlg = None,
- srcNodata = None, dstNodata = None, multithread = False, tps = False,
- rpc = False, geoloc = False, polynomialOrder = None,
- transformerOptions = None, cutlineDSName = None, cutlineLayer = None,
- cutlineWhere = None, cutlineSQL = None, cutlineBlend = None,
- ropToCutline = False, copyMetadata = True, metadataConflictValue = None,
- setColorInterpretation = False, callback = None, callback_data = None):
options — 可以是一个字符串数组,一个字符串或者令其为空值,但是使用后面其他的参数来定义。
format — 输出的格式 (例如"GTiff"等)。
outputBounds — 在目标空间参考系统的输出数据集的范围,形式为 (minX,minY, maxX, maxY) 。
outputBoundsSRS — 如果在dstSRS中没有定义的话,使用这个关键字定义输出数据集的边界的空间参考系统。
xRes, yRes — 在目标参考系统中的像元大小。
targetAlignedPixels —是否强制输出边界为输出分辨率的倍数。
width — 输出栅格的像素列数。
height — 输出栅格的像素行数。
srcSRS —源空间参考系统。
dstSRS — 输出空间参考系统。
srcAlpha — 是否强制将输入数据集的最后一个波段作为alpha波段。
dstAlpha — 是否强制创建一个输出数据集的alpha波段。
outputType — 输出类型 (例如gdal.GDT_Byte等)
workingType — working type (gdal.GDT_Byte, etc…)
warpOptions —变形选项列表。
errorThreshold --近似转换的误差阈值(用像素表示) 。
warpMemoryLimit — 工作缓存大小,单位是bytes。
resampleAlg — 重采样模式。
creationOptions — 创建选项列表。
srcNodata — 源数据的nodata值。
dstNodata — 输出数据的nodata值。
multithread — 是否多线程计算和输入输出操作。
tps— 是否使用Thin Plate Spline GCP 转换器。
rpc— 是否使用RPC转换器。
geoloc — 是否使用GeoLocation数组转换器。
polynomialOrder — 多项式GCP插值的阶数。
transformerOptions — 转换参数
cutlineDSName — 剪切线数据集名称。这里的剪切线是指对影像进行剪切的时候所使用的矢量图层。
cutlineLayer — 剪切线图层名称。
cutlineWhere — 剪切线的WHERE语句。
cutlineSQL — 剪切线的SQL 语句。
cutlineBlend — 以像素为单位的剪切线混合距离。
cropToCutline — 是否使用剪切线的extent作为输出的界线。
copyMetadata — 是否拷贝源数据的元数据。
metadataConflictValue — 元数据冲突值。
setColorInterpretation — 是否强制将输入波段的颜色解释赋予输出波段。
callback — 回调函数。
callback_data — 回调函数数据
对于栅格数据的重投影可以使用Warp来实现
Warp(destNameOrDestDS, srcDSOrSrcDSTab,**kwargs)
参考以下文章
Python 利用GDAL对图像进行几何校正 - 行走的蓑衣客 - 博客园https://www.cnblogs.com/suoyike1001/p/15230883.html
- from osgeo import gdal
-
- input_shape = r"C:\Users\Administrator\Desktop\English\sample1.shp"
- input_raster = r'C:\Users\Administrator\Desktop\English\BOA Reflectance-10m_MTD_MSIL2A.tif'
- # tif输入路径,打开文件
- output_raster = r"C:\Users\Administrator\Desktop\English\Landsat8.tif"
- # 矢量文件路径,打开矢量文件
- input_raster = gdal.Open(input_raster)
- # 开始裁剪,一行代码,爽的飞起
- ds = gdal.Warp(output_raster,#输出栅格路径
- input_raster,#输入栅格路径
- format='GTiff',#影像保存格式
- cutlineDSName=input_shape,#输入矢量路径
- cropToCutline=False, # (为True时,结果会与输入矢量大小一致。为False时,结果会与待裁剪的输入栅格大小一致。看情况使用)
- # cutlineWhere="FIELD = 'whatever'",
- dstSRS='EPSG:4326', # 参考系:WGS84
- outputType=gdal.GDT_Int16,#数据类型
- dstNodata=0)# 目标图像无值时填充值
- # 关闭文件
- ds = None
- import fiona
- import rasterio as rio
- import rasterio.mask
-
- def clipRasterByShapefile(src, shpdatafile, dst, nodata=0):
- #src:待裁剪栅格路径
- #shpdatafile:裁剪矢量路径
- #dst:裁剪结果路径
- # 读取shp
- with fiona.open(shpdatafile, "r") as shapefile:
- features = [feature["geometry"] for feature in shapefile]
- # 读取原始影像
- src = rio.open(src)
-
- # 调用函数执行裁剪
- out_image, out_transform = rio.mask.mask(src, features,
- all_touched=True,
- crop=False,
- nodata=nodata)
- # 元数据信息复制
- out_meta = src.meta.copy()
- out_meta.update({"driver": "GTiff",
- "height": out_image.shape[1],
- "width": out_image.shape[2],
- "transform": out_transform})
- # 输出文件
- output_file = rasterio.open(dst, "w", compress="LZW", **out_meta)
- output_file.write(out_image)
- output_file.close()
- import os
- import gdal
- from osgeo import ogr
-
- def ShapeClip(baseFilePath,maskFilePath,saveFolderPath):
- """
- 矢量裁剪
- :param baseFilePath: 要裁剪的矢量文件路径
- :param maskFilePath: 掩膜矢量文件路径
- :param saveFolderPath: 裁剪后的矢量文件保存目录
- :return:
- """
- ogr.RegisterAll()
- gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
- # 载入要裁剪的矢量文件
- baseData = ogr.Open(baseFilePath)
- baseLayer = baseData.GetLayer()
- spatial = baseLayer.GetSpatialRef()
- geomType = baseLayer.GetGeomType()
- baseLayerName = baseLayer.GetName()
- # 载入掩膜矢量文件
- maskData = ogr.Open(maskFilePath)
- maskLayer = maskData.GetLayer()
- maskLayerName = maskLayer.GetName()
- # 生成裁剪后的矢量文件
- outLayerName = maskLayerName + "_Clip_" + baseLayerName
- outDataName = os.path.join(saveFolderPath, outLayerName)
- if not os.path.exists(outDataName):
- os.makedirs(outDataName)
- outFileName = outLayerName + ".shp"
- outFilePath = os.path.join(outDataName, outFileName)
- gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
- driver = ogr.GetDriverByName("ESRI Shapefile")
- outData = driver.CreateDataSource(outFilePath)#创建输出文件
- outLayer = outData.CreateLayer(outLayerName, spatial, geomType)#创建带有与输入矢量相同地理信息的图层
- baseLayer.Clip(maskLayer, outLayer)#进行裁剪
- outData.Release()
- baseData.Release()
- maskData.Release()
- return outFilePath
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。