版权声明:本文为博主原创文章,转载请注明原文出处!
作者:阿振
写作时间:2020-06-16 周一 早安
开篇
接着上篇《GIS空间分析之Buffer》之后,这篇来介绍矢量数据的裁剪(Clip)。裁剪其实算不上是一种空间分析功能,就是一种简单矢量数据处理操作。
一般,我们会使用一个代表研究区域或者感兴趣的区域(AOI,Area of Interest)的多边形数据去裁剪一个比较大的全区域的数据,得到的结果就是感兴趣区域中包含的数据。矢量数据的裁剪在平时工作中用得不是特别多。
案例介绍
本文使用一个AOI区域(黄河流域区)区裁剪中国的县界(线要素),从而得到黄河流域区中的县界。
在上篇《GIS空间分析之Buffer》中我们是使用了Geometry类的Buffer()
方法建立缓冲区的,而本篇中我们需要使用Layer图层类的Clip()
方法进行矢量数据裁切。
对于矢量数据的操作,有的是通过Geometry类的方法实现的,有的是通过Layer类的方法实现的。
下面来看一下我们的数据,红色区块是黄河流域,红色的线表示的是各个县的边界。
代码展示
1 | from pathlib import Path |
裁剪的结果如下:
方法总结
- 首先我们使用
ogr.Open()
函数分别读取被裁剪的数据以及裁剪范围数据;使用GetLayer()
方法获取数据的图层。裁剪范围数据在GDAL中被称为Method Layer。 - 使用Driver类的
CreateDataSource()
方法创建裁剪输出结果;使用CreateLayer()
函数创建输出图层。CreateLayer()
函数传入三个参数,分别是图层名,空间参考以及空间要素类型。后两个参数可以通过读取被裁剪数据获取。 - 使用读取被裁剪数据图层的
Clip()
函数进行裁剪,改函数传入两个参数,分别是方法图层(Method Layer)以及输出结果图层(Result Layer)。