当前位置: 首页 > news >正文

【PythonGIS】Python处理矢量数据的基本操作(查询、修改、删除、新建)

        ogr库是一个处理地理空间矢量数据的开源库。它可以读取多种数据格式,进行地理处理、属性表操作、数据分析等操作。目前ogr和osr库已集成到GDAL库中,可以对栅格数据、矢量数据进行处理分析,被3S的研究人员广泛应用。感兴趣的可以自己去了解一下,不懂得可以一起交流!

        最近发现之前写的代码都快不认识了,所以及时做笔记真的很重要。今天给大家分享下如何使用Python对矢量数据进行编辑,顺便自己也复习一下。

一、安装库

        osgeo这个库真的非常强大,大家可以自己去了解一下。矢量数据分为datasource,layer,feature三个层次!!!

from osgeo import gdal, osr, ogr

二、查询矢量数据

1.打开矢量数据

def Open_Vector(path_shp):ds = ogr.Open(path_shp, True)# True表示以读写方式打开layer = ds.GetLayer(0)# 获取图层,图层

2.获取字段属性

def Get_Data(layer):feature_count = layer.GetFeatureCount()# 获取要素的数量feature = layer.GetFeature(1)# 获取shp中第一个要素field_count = layer.GetLayerDefn().GetFieldCount()# 获取要素的字段数field_data = feature.GetField("1")# 获取字段“1”的值

3.获取字段的值

def Get_field(layer):for feature in layer:# feature的意义就是GIS中泛指的要素(一个shp中包含多少个面)field_data = feature.GetField("1")# 获取字段“1”的值print(field_data)# 获取要素的字段值!!!!!

4.获取图层地理范围

def Get_Spatial(layer):left, right, down, up = layer.GetExtent()print(left, right, down, up)# 获取图层的地理范围

5.获取某一要素的地理范围

def Get_feature_Spatial(layer):feature = layer.GetFeature(0)geom = feature.GetGeometryRef()# 获取该要素的地理空间范围left, right, down, up = geom.GetEnvelope()# 获取四个角点的坐标

三、修改矢量数据

1.修改要素的字段值

def Repair_field(layer):feature = layer.GetFeature(1)# 获取shp中第一个要素feature.SetField("Id", "3")# 将当前要素的"Id"字段值改为"3"layer.SetFeature(feature)# 修改要素的字段值!!!!!

四、创建新矢量

1.创建新字段

def Create_field(layer):# layer.CreateField(ogr.FieldDefn('name', ogr.OFTString))  # ogr.OFTString表示字符型new_field = ogr.FieldDefn('value', ogr.OFTReal)  # 给目标shp文件添加一个字段new_field.SetWidth(32)new_field.SetPrecision(16)layer.CreateField(new_field)# 创建新的字段!!!!!

2.创建新的矢量文件(shp)

def Create_shp(shp):target_proj = osr.SpatialReference()# 初始化osr.SpatialReference对象以形成一个合法的坐标系统target_proj.ImportFromEPSG(4326)driver = ogr.GetDriverByName("ESRI Shapefile")polygon = driver.CreateDataSource(shp)  # 创建数据资源layer_polygon = polygon.CreateLayer("Shp", srs=target_proj, geom_type=ogr.wkbMultiPolygon)# 创建图层,定义多面new_field = ogr.FieldDefn('value', ogr.OFTReal)layer_polygon.CreateField(new_field)# 给目标shp文件添加一个字段layer_defn = layer_polygon.GetLayerDefn()# 定义图层feature = ogr.Feature(layer_defn)# 创建要素feature.SetField("value", 5)# 给该要素的value字段定义为5geom = ogr.CreateGeometryFromWkt("POLYGON ((0 0,20 0,10 15,0 0))")# 定义一个空间图形feature.SetGeometry(geom)# 将图形赋值到要素上layer_polygon.CreateFeature(feature)# 创建该要素,写入layer_polygon = None

五、删除矢量数据

1.删除字段

def Delete_field(layer):field_name = "2"field_count = layer.GetLayerDefn().GetFieldCount()# 获取要素的字段数for i in range(field_count):# 循环该要素的所有字段if field_name == layer.GetLayerDefn().GetFieldDefn(i).GetName():# 判断字段名是否等于输入的字段名,如果是返回它的索引值layer.DeleteField(i)# 删除索引为i的字段# 删除字段!!!!!

2.删除要素

def Delete_feature(layer):feature_count = layer.GetFeatureCount()# 获取要素的数量for i in range(0, feature_count):if layer.GetFeature(i).GetField("1") == 0:layer.DeleteFeature(i)for feat in layer:if feat.GetField('Area') < 20 or feat.GetField('Area') > 3000:layer.DeleteFeature(feat.GetFID())# 删除要素!!!!!

        由于我代码中已给详细的解释,所以就不单独加以文字说明了。本文章主要是分享个人在学习Python过程中写过的一些代码。有些部分借鉴了前人以及官网的教程,如有侵权请联系作者删除,大家有问题可以随时留言交流,博主会及时回复。

相关文章:

【PythonGIS】Python处理矢量数据的基本操作(查询、修改、删除、新建)

ogr库是一个处理地理空间矢量数据的开源库。它可以读取多种数据格式&#xff0c;进行地理处理、属性表操作、数据分析等操作。目前ogr和osr库已集成到GDAL库中&#xff0c;可以对栅格数据、矢量数据进行处理分析&#xff0c;被3S的研究人员广泛应用。感兴趣的可以自己去了解一下…...

15.2 【Linux】仅执行一次的工作调度

15.2.1 atd 的启动与 at 运行的方式 要使用单一工作调度时&#xff0c;我们的 Linux 系统上面必须要有负责这个调度的服务&#xff0c;那就是 atd 。 不过并非所有的 Linux distributions 都默认会把他打开的&#xff0c;所以&#xff0c;某些时刻我们必须要手动将他启用才行。…...

时间复杂度与空间复杂度的详解

目录 1.时间复杂度 2.时间复杂度计算例题 3.空间复杂度 1.时间复杂度 算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度。 如何表达 时间复杂度&#xff1f; 大O的渐进表示法 实际中我们计算时间复杂度时&#xff0c;我们其实并不一定要计算精确的执行次数&#xf…...

每日一学:什么是 Harbor ?

目录 什么是 Harbor &#xff1f; 一、Harbor 的优势 二、Harbor 架构构成 三、Core services 这是 Harbor 的核心功能 什么是 Harbor &#xff1f; Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Reg…...

灰度均衡变换之c++实现(qt + 不调包)

1.基本原理 灰度均衡是以累计分布函数变换为基础的直方图修正法&#xff0c;它可以产生一副灰度级分布概率均匀的图像。也就是说&#xff0c;经过灰度均衡后的图像在没一级灰度上像素点的数量相差不大。公式见下图&#xff0c;为灰度值为x的像素点的个数&#xff0c;n为总像素点…...

flink1.17 自定义trigger ContinuousEventTimeTrigger

在 ContinuousEventTimeTrigger 的基础上新增了timeout,如果超时后窗口都没关闭,那么就硬输出一波,避免间断数据,留存窗口太久. ContinuousEventTimeTrigger ContinuousEventTimeTrigger连续事件时间触发器与ContinuousProcessingTimeTrigger连续处理时间触发器,指定一个固定…...

AIGC:【LLM(五)】——Faiss:高效的大规模相似度检索库

文章目录 一.简介1.1 什么是Faiss1.2 Faiss的安装 二.Faiss检索流程2.1 构建向量库2.2 构建索引2.3 top-k检索 三.Faiss构建索引的多种方式3.1 Flat &#xff1a;暴力检索3.2 IVFx Flat &#xff1a;倒排暴力检索3.3 IVFxPQy 倒排乘积量化3.4 LSH 局部敏感哈希3.5 HNSWx 一.简介…...

自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅱ]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 对话知识图谱记忆&#xff08;Conversation Knowledge Graph Memory&#xff09; 这种类型的记忆使用知识图谱来重建记忆&#xff1a; from langchain.memory import ConversationKGMemory from langchain.llms impo…...

桥接模式-java实现

桥接模式 桥接模式的本质&#xff0c;是解决一个基类&#xff0c;存在多个扩展维度的的问题。 比如一个图形基类&#xff0c;从颜色方面扩展和从形状上扩展&#xff0c;我们都需要这两个维度进行扩展&#xff0c;这就意味着&#xff0c;我们需要创建一个图形子类的同时&#x…...

Linux systemd管理常用的几个小案例

systemd是目前Linux系统上主要的系统守护进程管理工具&#xff0c;配置文件要以.service结尾且放到 /usr/lib/systemd/system/目录下面 1、systemd管理ElasticSearch [Unit] DescriptionElasticsearch Service[Service] Typeforking Userelastic Groupelastic ExecStart/home…...

38、IPv6过渡技术

本节内容作为IPv6相关知识的最后一节内容&#xff0c;同时也作为我们本专栏网络层知识的最后一节内容&#xff0c;主要介绍从IPv4地址到IPv6地址过渡的相关技术。在这里我们只学习各类考试中常考的三种技术。 IPv4向IPv6的过渡 在前面的知识中&#xff0c;我们学习到了两种IP地…...

HMMER-序列分析软件介绍

HMMER是一个软件包&#xff0c;它提供了制作蛋白质和DNA序列域家族概率模型的工具&#xff0c;称为轮廓隐马尔可夫模型、轮廓HMM或仅轮廓&#xff0c;并使用这些轮廓来注释新序列、搜索序列数据库以寻找其他同源物&#xff0c;以及进行深度多重序列比对。HMMER是已知蛋白质和DN…...

【项目学习1】如何将java对象转化为XML字符串

如何将java对象转化为XML字符串 将java对象转化为XML字符串&#xff0c;可以使用Java的XML操作库JAXB&#xff0c;具体操作步骤如下&#xff1a; 主要分为以下几步&#xff1a; 1、创建JAXBContext对象&#xff0c;用于映射Java类和XML。 JAXBContext jaxbContext JAXBConte…...

nginx负载均衡

负载均衡&#xff1a;反向代理来实现 正向代理的配置方法。 1、NGINX的七层代理和四层代理&#xff1a; 七层是最常用的反向代理方式&#xff0c;只能配置在nginx配置文件的http模块。而且配置方法名称&#xff1a;upstream 模块&#xff0c;不能写在server中&#xff0c;也…...

【毕业项目】自主设计HTTP

博客介绍&#xff1a;运用之前学过的各种知识 自己独立做出一个HTTP服务器 自主设计WEB服务器 背景目标描述技术特点项目定位开发环境WWW介绍 网络协议栈介绍网络协议栈整体网络协议栈细节与http相关的重要协议 HTTP背景知识补充特点uri & url & urn网址url HTTP请求和…...

关于安卓jar包修改并且重新发布

背景&#xff1a; 对于某些jar包&#xff0c;其内部是存在bug的&#xff0c;解决的方法无外乎就有以下几种方法&#xff1a; &#xff08;1&#xff09;通过反射&#xff0c;修改其赋值逻辑 &#xff08;2&#xff09;通过继承&#xff0c;重写其方法 &#xff08;3&#xff0…...

Java课题笔记~ AspectJ 对 AOP 的实现(掌握)

AspectJ 对 AOP 的实现(掌握) 对于 AOP 这种编程思想&#xff0c;很多框架都进行了实现。Spring 就是其中之一&#xff0c;可以完成面向切面编程。然而&#xff0c;AspectJ 也实现了 AOP 的功能&#xff0c;且其实现方式更为简捷&#xff0c;使用更为方便&#xff0c;而且还支…...

npm 报错 cb() never called!

不知道有没有跟我一样的情况&#xff0c;在使用npm i的时候一直报错&#xff1a;cb() never called! 换了很多个node版本&#xff0c;还是不行&#xff0c;无法解决这个问题 百度也只是让降低node版本请缓存&#xff0c;gpt给出的解决方案也是同样的 但是缓存清过很多次了&a…...

finally有什么作用以及常用场景

在Java中&#xff0c;finally是一个关键字&#xff0c;用于定义一个代码块&#xff0c;该代码块中的代码无论是否发生异常都会被执行。finally块通常用于确保在程序执行过程中资源的释放和清理。 使用场景&#xff1a; 1. 资源释放&#xff1a;finally块经常用于释放打开的资…...

Python web实战之Django URL路由详解

概要 技术栈&#xff1a;Python、Django、Web开发、URL路由 Django是一种流行的Web应用程序框架&#xff0c;它采用了与其他主流框架类似的URL路由机制。URL路由是指将传入的URL请求映射到相应的视图函数或处理程序的过程。 什么是URL路由&#xff1f; URL路由是Web开发中非常…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...