文章目录

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

版权声明:本文为博主原创文章,转载请注明原文出处!

作者:阿振

写作时间:2020-06-16 周一 早安


开篇

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

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

案例介绍

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

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

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

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

代码展示

from pathlib import Path
import ogrogr.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)。

GIS空间分析之Clip相关推荐

  1. GIS空间分析(五)—— 位置与几何关系分析

    位置与几何关系分析 位置是空间对象的基本特征,矢量叠加分析.地图代数.选址分析等经典GIS空间分析方法都是基于位置特征分析方法的代表.空间几何关系分析主要是对空间目标之间由位置.形状.方位.连通性和相 ...

  2. 基于ArcGIS:GIS空间分析复习-理论概念+案例分析

    目录 01 第一章 1.1 GIS空间分析的概念 1.2 GIS空间分析的研究对象.研究目标 1.3 研究目标是:认知.解释.预报.调控. 1.4 道路拓宽案例分析 1.5 GIS空间分析的核心问题 ...

  3. 使用GIS空间分析进行植物生长区域选址(附练习数据下载)

    经过观察可以发现某种珍贵植物在山区的某个区域位置生长状况明显要比其他区域好很多,通过研究了解到这种植物生长具有严格的生长条件.为了能更好地保护该种植物的生长环境,现在需要使用GIS空间分析方法,将适合 ...

  4. GIS空间分析 栅格数据分析1 欧氏距离分析

    目录 一.实验名称 二.实验准备 1.基本概念: 2.实验目的: 3.实验背景: 4.实验要求: 5.实验数据: 6.实验流程: 三.实验步骤 其他GIS空间分析文章 一.实验名称 栅格分析之欧氏距离 ...

  5. 开源的前端GIS空间分析库介绍 (一)jsts与turf

    文章目录 1 前言 2 JSTS 3 turf 4 安装使用 4.1 jsts 4.1.1 直接引入 4.1.2 NPM 4.2 turf 4.1.1 直接引入 4.1.2 NPM 5 空间分析 5. ...

  6. 开源的前端GIS空间分析库介绍 (三)turf与ol结合

    前言 turf是mapbox出品的前端空间分析库,官网:http://turfjs.org/ turf库中包含的空间分析计算功能比较多,也非常简单易用.相比于jsts,turf的官方文档维护的非常好, ...

  7. GIS空间分析 数字地形分析2 基本地形因子的提取

    目录 一.实验名称 二.实验目的 三.实验背景 四.实验准备 1.数据 2.软件 五.实验步骤: 本文数据免费下载 其他GIS空间分析文章 一.实验名称 数字地形分析之基本地形因子的提取 二.实验目的 ...

  8. GIS空间分析 网络分析2规划最佳路径

    实验数据:见个人资源<GIS空间分析教学数据>免费下载,仅供学习使用 一.实验名称 网络分析之规划最佳路径 二.实验目的 某公司班车需要接送员工上下班,已知停靠的站点,请使用网络分析提供一 ...

  9. GIS空间分析 叠加分析与缓冲区分析2 房产开发适宜性制图

    实验数据:见个人资源<GIS空间分析教学数据>免费下载,仅供学习使用 一 实验名称 缓冲区与叠置分析之房产开发适宜性制图 二 实验目的 (一)案例假设 假如你是地产开发商,要在该地区选址进 ...

  10. GIS空间分析 数字地形分析3 可视性分析

    目录 一.实验名称 二.实验目的 三.实验背景 1.可视性分析 2.通视分析 3.视域分析 四.实验准备 1.数据准备 2.软件准备 五.实验步骤 本文数据免费下载 其他GIS空间分析文章 一.实验名 ...

最新文章

  1. NXP智能驾驶软件系统
  2. mysql主从同步linux,linux中部署mysql主从同步示例详解(绝对经典,看了必会)
  3. 深入解读Python的unittest并拓展HTMLTestRunner
  4. 使用反射代替不断添加的if-else来实现代码的可扩展性
  5. laravel 安装随笔
  6. loadrunner常用函数总结
  7. ETCD v3 restful api 使用详解
  8. Macaca:南方航空人工测试的拯救者
  9. 织梦dede:channelartlist调用排除指定typeid栏目
  10. MTK 驱动开发(23)---MTK camera AF 及tuning
  11. exec与xargs区别
  12. python装饰器理解_如何理解Python装饰器?
  13. Android设计模式(1)----单例模式
  14. GSM模块(SIM800L)收发短信 串口调试
  15. SQL语句的基础教程(一)
  16. deny后加to do还是doing_还在为动词后面接不定式还是动名词而发愁?点开解惑
  17. 大二数据库实验报告答案
  18. linux设备授权命令,# Linux命令
  19. 最近国外LEAD收款情况
  20. 《口算大作战 概念版》功能规格说明书

热门文章

  1. swift 设置启动页
  2. Word产品需求文档,已经过时了
  3. Beamer 使用笔记
  4. matlab的特殊字符(上下标和希腊字母等)
  5. 计算机中桌面中不显示U盘图标,电脑不显示u盘怎么回事 电脑不显示u盘的解决办法...
  6. [乐意黎原创]hosts文件位置及说明
  7. delphi信封打印程序
  8. 触摸精灵脚本使用snapshotScreen截图错误
  9. android 经纬度的格式,的Android如何转换经纬度成度格式
  10. 计算机组成.就是它在运算.处理器CPU