前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GIS空间分析之Clip

GIS空间分析之Clip

作者头像
卡尔曼和玻尔兹曼谁曼
发布2020-06-16 19:41:48
9310
发布2020-06-16 19:41:48
举报

文章目录

  • 开篇
  • 案例介绍
  • 代码展示
  • 方法总结

开篇

接着上篇《GIS空间分析之Buffer》之后,这篇来介绍矢量数据的裁剪(Clip)。裁剪其实算不上是一种空间分析功能,就是一种简单矢量数据处理操作。

一般,我们会使用一个代表研究区域或者感兴趣的区域(AOI,Area of Interest)的多边形数据去裁剪一个比较大的全区域的数据,得到的结果就是感兴趣区域中包含的数据。矢量数据的裁剪在平时工作中用得不是特别多。

案例介绍

本文使用一个AOI区域(黄河流域区)区裁剪中国的县界(线要素),从而得到黄河流域区中的县界。

在上篇《GIS空间分析之Buffer》中我们是使用了Geometry类的Buffer()方法建立缓冲区的,而本篇中我们需要使用Layer图层类的Clip()方法进行矢量数据裁切。

对于矢量数据的操作,有的是通过Geometry类的方法实现的,有的是通过Layer类的方法实现的。

下面来看一下我们的数据,红色区块是黄河流域,红色的线表示的是各个县的边界。

在这里插入图片描述
在这里插入图片描述

代码展示

代码语言:javascript
复制
from pathlib import Path
import ogr

ogr.UseExceptions()

# 读取被裁剪的数据
in_ds: ogr.DataSource = ogr.Open('../data/County.shp')
in_lyr: ogr.Layer = in_ds.GetLayer()

# 读取裁剪范围数据
method_ds: ogr.DataSource = ogr.Open('../data/YellowRiver.shp')
method_lyr: ogr.Layer = method_ds.GetLayer()

fname: str = 'Clipped.shp'
# 创建被裁剪以后的输出文件
driver: ogr.Driver = ogr.GetDriverByName('ESRI Shapefile')
if Path(fname).exists():
    driver.DeleteDataSource(fname)
# 新建DataSource,Layer
out_ds: ogr.DataSource = driver.CreateDataSource(fname)
out_lyr: ogr.Layer = out_ds.CreateLayer(fname,
                                        in_lyr.GetSpatialRef(),
                                        in_lyr.GetGeomType())
# 开始进行裁剪
in_lyr.Clip(method_lyr, out_lyr)
out_ds.FlushCache()
del in_ds, method_ds, out_ds

裁剪的结果如下:

在这里插入图片描述
在这里插入图片描述

方法总结

  1. 首先我们使用ogr.Open()函数分别读取被裁剪的数据以及裁剪范围数据;使用GetLayer()方法获取数据的图层。裁剪范围数据在GDAL中被称为Method Layer。
  2. 使用Driver类的CreateDataSource()方法创建裁剪输出结果;使用CreateLayer()函数创建输出图层。CreateLayer()函数传入三个参数,分别是图层名,空间参考以及空间要素类型。后两个参数可以通过读取被裁剪数据获取。
  3. 使用读取被裁剪数据图层的Clip()函数进行裁剪,改函数传入两个参数,分别是方法图层(Method Layer)以及输出结果图层(Result Layer)。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 开篇
  • 案例介绍
  • 代码展示
  • 方法总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档