【GDAL应用】基于GDAL实现GIS空间分析--Contains(包含)操作

ops/2024/9/25 2:34:59/

文章目录

  • 实现效果
  • 实现功能
  • 实现代码

实现效果

一个渔网数据,一个多边形要素数据:
在这里插入图片描述
完全包含多边形要素数据效果:
在这里插入图片描述
输出结果:
在这里插入图片描述
网格完全位于多边形要素空间范围内:
在这里插入图片描述

实现功能

应用两个空间矢量数据进行GIS空间分析–Contains(包含)操作

备注:两个数据坐标系保持相同。

说明:
除了 Contains 空间关系,还有许多其他空间关系,这些关系用于描述几何对象之间的相互位置和包含关系。一些常见的空间关系包括:
Intersects(相交): 一个几何对象与另一个几何对象至少有一个公共点,但不一定完全包含对方。
Touches(相邻): 一个几何对象的边界与另一个几何对象的边界相接触,但没有内部交叉。
Overlaps(重叠): 两个几何对象在二维平面上有部分重叠,但不完全包含对方。
Crosses(相交但不包含): 一个几何对象穿越另一个几何对象,但不包含对方。
Within(在内部): 一个几何对象完全包含在另一个几何对象的内部,包含是严格的。
Equals(相等): 两个几何对象在几何形状和空间位置上完全相同。
Disjoint(不相交): 两个几何对象没有任何交集,彼此独立。
这些空间关系在地理信息系统 (GIS) 和几何计算中非常重要,用于执行空间关系查询。

实现代码

# -*- coding: utf-8 -*-
"""
@time: 2023-8-28 15:30
@author: RSer_gis
"""from osgeo import ogr, gdalfirst_shapefile = r"D:\Desktop\test\first_shapefile.shp"
second_shapefile =r"D:\Desktop\test\fishnet_shapefile.shp"
output_shapefile = r"D:\Desktop\test\fishnet—contain.shp"# 设置Shapefile UTF-8编码
gdal.SetConfigOption("SHAPE_ENCODING", "UTF-8")
# 打开第一个SHP数据
source_ds = ogr.Open(first_shapefile, 0)  # 0 表示只读方式打开
layer1 = source_ds.GetLayer()# 打开第二个SHP数据
target_ds = ogr.Open(second_shapefile, 0)
layer2 = target_ds.GetLayer()
spatialRef = layer2.GetSpatialRef()# 创建新的SHP数据源
output_ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource(output_shapefile)
output_layer = output_ds.CreateLayer('output_layer', spatialRef, geom_type=ogr.wkbPolygon)# 复制第一个SHP数据的字段到新数据源
layer_def = layer2.GetLayerDefn()
for i in range(layer_def.GetFieldCount()):output_layer.CreateField(layer_def.GetFieldDefn(i))# 遍历第二个SHP中的每个要素
for feat2 in layer2:geometry2 = feat2.geometry()# 遍历第一个SHP中的每个要素,检查是否包含第二个SHP要素for feat1 in layer1:geometry1 = feat1.geometry()if geometry1.Contains(geometry2):  # Contains方法output_feat = ogr.Feature(output_layer.GetLayerDefn())output_feat.SetGeometry(geometry2.Clone())for i in range(output_feat.GetFieldCount()):output_feat.SetField(i, feat2.GetField(i)) # i为字段索引output_layer.CreateFeature(output_feat)output_feat = Nonesource_ds = None
target_ds = None
output_ds = None

http://www.ppmy.cn/ops/32392.html

相关文章

数据结构(十)----图

目录 一.图的概念 1.图的定义 2.图的类别 3.图的性质 4.几种特殊形态的图 二.图的存储结构 1.邻接矩阵(顺序存储) 2.邻接表(顺序链式存储) 3.十字链表 4.邻接多重表 四.图的遍历 1.广度优先遍历(BFS&#…

Python 发送钉钉消息(markdown格式)

send.py import requests import json from config import *def sendDing():"""给钉钉发送消息,使用markdown格式在发送的消息后,需要手动一次"""text msg .join([f"{i}" for i in at_list])data {"m…

算法训练营day27

一、组合总和 参考链接39. 组合总和 - 力扣(LeetCode) 前置题46. 全排列 - 力扣(LeetCode) 注意理解 used[i]数组(全排列) 和 begin变量(组合总和)的区别 因为i是由 begin赋值的,那么当这层遍历 执行 path.addLast…

Docker部署RabbitMQ与简单使用

官网地址: Messaging that just works — RabbitMQ 我的Docker博客:Docker-CSDN博客 1.结构 其中包含几个概念: **publisher**:生产者,也就是发送消息的一方 **consumer**:消费者,也就是消费消息的一方 …

大数据组件之Storm简介

Storm是一个开源的分布式实时计算系统,用于处理大规模、高速的流式数据。它可以实时地处理和分析数据流,并支持容错和可扩展性。 Storm的核心概念是拓扑(Topology),一个拓扑由一个或多个处理节点(bolts&am…

自然科学领域基于ChatGPT大模型的科研绘图

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

CSS 文字超出显示滚动条

1、布局结构 <view class"tes" style"margin-top: 15rpx;"><p v-html"conten" class"conten"></p> </view> conten 里是内容 2、页面样式 .tes::-webkit-scrollbar-track-piece {background-color: rgba(…

附录F:上市,还是不上市?

< 回到目录 附录F&#xff1a;上市&#xff0c;还是不上市&#xff1f; 这是个问题。 当公司业绩良好时&#xff0c;有许多人希望你的公司上市&#xff1a;投资人、员工、顾问、朋友、家人等等。上市的股票为投资人和员工创造了最大的流动性&#xff0c;通常是最高价格。 …