本文主要是介绍gma 教程 | 栅格处理 | 矢量裁剪栅格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目标
【裁剪】。按矢量边界裁剪栅格。
环境
系统: Window 10+ (X64)
Python 版本: 3.8.8+
gma 版本: 1.0.7+
gma 安装和详细功能帮助见:地理与气象分析库
函数
gma.rasp.Clip(InFile, OutFile, CutLineFile, LayerID = 0, FeatureID = None, InNoData = None, OutNoData = None, OutFormat = ‘GTiff’)
参数:
InFile:str
。输入栅格路径。
OutFile:str
。输出文件路径。
CutLineFile:str
。裁剪矢量文件路径。
可选参数:
LayerID = int
。输入裁剪矢量的图层 ID。默认第一个图层(0)。
FeatureID = list
。掩膜图层的要素 ID。默认掩膜全部要素(None)。
InNoData = float
。输入栅格的无效值。默认不指定(None)无效值。
OutNoData = float
。输出栅格的无效值。默认不指定(None)无效值。
OutFormat = str
。输出栅格文件格式。默认为 GTiff,其他格式详见 ToOtherFormat 函数。
案例
数据
栅格数据: ESA 2020年陆表覆盖数据
矢量数据: 河南省18个地级行政单位矢量边界
裁剪
import gma# 定义原始栅格和裁剪矢量
InFile = r'D:\CSDN\gma\栅格处理\0.1原始影像\ESA_Henan_2020.tif'
CutLineFile = r'D:\CSDN\gma\栅格处理\0.2原始矢量\Henan_City.shp'# 定义裁剪结果路径并执行裁剪
OutFile = r'D:\CSDN\gma\栅格处理\Clip\ESA_Henan_2020_Clip.tif'
gma.rasp.Clip(InFile, OutFile, CutLineFile, OutNoData=0)
裁剪结果如下:
如果需要按矢量文件中的某个要素裁剪,可增加 FeatureID 参数,示例如下:
如果有需求,可先查看矢量属性表,获取要素信息,方法如下:
# 打开矢量数据集
VEDataSet = gma.Open(CutLineFile)
# 获取矢量图层
LY = VEDataSet.GetLayer(0)
# 获取属性表
ATable = LY.GetAttributeTable()
print(ATable)
省代码 | 省 | 市代码 | 市 | 类型 | |
---|---|---|---|---|---|
0 | 410000 | 河南省 | 410100 | 郑州市 | 地级市 |
1 | 410000 | 河南省 | 410200 | 开封市 | 地级市 |
2 | 410000 | 河南省 | 410300 | 洛阳市 | 地级市 |
3 | 410000 | 河南省 | 410400 | 平顶山市 | 地级市 |
4 | 410000 | 河南省 | 410500 | 安阳市 | 地级市 |
5 | 410000 | 河南省 | 410600 | 鹤壁市 | 地级市 |
6 | 410000 | 河南省 | 410700 | 新乡市 | 地级市 |
7 | 410000 | 河南省 | 410800 | 焦作市 | 地级市 |
8 | 410000 | 河南省 | 410900 | 濮阳市 | 地级市 |
9 | 410000 | 河南省 | 411000 | 许昌市 | 地级市 |
10 | 410000 | 河南省 | 411100 | 漯河市 | 地级市 |
11 | 410000 | 河南省 | 411200 | 三门峡市 | 地级市 |
12 | 410000 | 河南省 | 411300 | 南阳市 | 地级市 |
13 | 410000 | 河南省 | 411400 | 商丘市 | 地级市 |
14 | 410000 | 河南省 | 411500 | 信阳市 | 地级市 |
15 | 410000 | 河南省 | 411600 | 周口市 | 地级市 |
16 | 410000 | 河南省 | 411700 | 驻马店市 | 地级市 |
17 | 410000 | 河南省 | 419001 | 济源市 | 省直辖县 |
我们裁剪河南省洛阳市,其 FeatureID 为 2,配置参数如下:
### 按 图层ID 裁剪
OutFileFID = r'D:\CSDN\gma\栅格处理\Clip\ESA_Henan_2020_Clip_FID2.tif'
gma.rasp.Clip(InFile, OutFileFID, CutLineFile, FeatureID = [2], OutNoData=0)
执行结果如下所示:
疑问与反馈
邮箱:858998723@qq.com
这篇关于gma 教程 | 栅格处理 | 矢量裁剪栅格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!