GDAL python教程基础篇(1)——用OGR写入矢量数据

news2024/9/29 17:22:15

上一篇博客介绍了如何使用OGR读取矢量数据,那么怎么用OGR写入呢,下面就让我们一起学习怎么写入数据吧。

1.创建新文件

在写入数据之前我们首先需要确定写入对象,也就是先创建一个可供写入数据的对象。
创建对象使用driver.CreateDataSource(<filename>),这里的driver即前面创建的数据驱动,需要注意的是这里面的filename不能已经存在,否则会报错。

2.创建Layer

数据源对象表示含有OGRLayer对象的一个文件或一个数据库,因此在写入数据之前我们还需要创建Layer,也就是图层要素。
这里用的方法为dataSource.CreateLayer(<name>, geom_type=<OGRwkbGeometryType>, [srs]),其中dataSource即第一步创建的数据库。

这里的OGRwkbGeometryType为几何类型,常见的几何类型有ogr.wkbPoint、org.wkbLineString、org.wkbPolygon, [srs]为空间参考

举个例子:

from osgeo import ogr

driver = ogr.GetDriverByName('ESRI Shapefile')
ds2 = driver.CreateDataSource('test.shp')
layer2 = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)

运行这段代码之后会在文件目录下生成test.dbf test.shp test.shx三个文件

文件拓展名用途
.shp*必要文件 用于存储要素几何的主文件,其中包括几何图形
.shx*必要文件 形状索引文件,适当尺寸的几何元素索引信息可以加快访问速度
.dbf*必要文件 数据库文件,其中包括几何元素的属性信息

3.删除文件

要删除一个shp文件,使用DeleteDataSource

driver.DeleteDataSource(‘test.shp’)

4.添加数据

OGRFeatureDefn里面封装了feature的属性,类型、名称及其默认的空间参考系统等。一个OGRFeatureDefn对象通常与一个层(layer)对应。

4.1 添加字段

在添加字段之前需要先定义,而且只能在layer里面加,而且还不能有数据,添加的字段如果是字符串,还要设定宽度。

字段数据类型OGR常量
IntegerOFTInteger
List of integersOFTIntegerList
Floating point numberOFTReal
List of floating point numbersOFTRealList
StringOFTString
List of stringsOFTStringList
DateOFTDate
Time of dayOFTTime
Date and timeOFTDateTime
fieldDefn = ogr.FieldDefn('id', ogr.OFTString)
fieldDefn.SetWidth(4)
layer.CreateField(fieldDefn)

4.2添加feature

添加一个新的feature,首先得完成上一步,把字段field都添加齐了
然后从layer中读取相应的feature类型,并创建feature。

featureDefn = layer.GetLayerDefn()
feature = ogr.Feature(featureDefn)

4.3设定字段值和几何形状

设定几何形状
WKB(二进制Well-KnownBinary),用于不同软件程序间进行几何要素类型转换的一种二进制表示标准。
因为它是二进制格式,所以人们无法直接阅读获取其表示的内容,但是熟知文本格式(Well-Known Text,WKT)可以阅读。
几何要素类型 对应OGR常量

PointwkbPoint
MultipointwkbMultiPoint
LinewkbLineString
MultilinewkbMultiLineString
PolygonwkbPolygon
MultipolygonwkbMultiPolygon
Unknown geometry typewkbUnknown(图层如果有多种几何类型就返回wkbUnknown)
No geometrywkbNone

1.建立空的geometry对象:ogr.Geometry
定义各种不同的geometry使用的方法是不一样的(point, line, polygon, etc)
新建点point,使用方法AddPoint( , , [])。其中的z坐标一般是省略的,默认值是0
例如:

point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(10,20)

2.设置几何形状

feature.SetGeometry(point)

设定某字段的数值

feature.SetField('id', 23)

4.4将feature写入layer

layer.CreateFeature(feature)

完整代码

from osgeo import ogr

driver = ogr.GetDriverByName('ESRI Shapefile')
ds2 = driver.CreateDataSource('test.shp')
layer = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)

#定义字段
fieldDefn = ogr.FieldDefn('id', ogr.OFTString)
fieldDefn.SetWidth(4)
layer.CreateField(fieldDefn)

#定义要素
featureDefn = layer.GetLayerDefn()
feature = ogr.Feature(featureDefn)

point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(10,20)

#设置几何形状
feature.SetGeometry(point)

#设定某字段的数值
feature.SetField('id', 23)

#将feature写入layer
layer.CreateFeature(feature)

运行结果
在arcmap中打开如下,由于我们没有添加投影信息,因此得到也是无投影的文件。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4. STM32 OLED及keil调试简介

常用程序调试方法•串口调试&#xff1a;通过串口通信&#xff0c;将调试信息发送到电脑端&#xff0c;电脑使用串口助手显示调试信息•显示屏调试&#xff1a;直接将显示屏连接到单片机&#xff0c;将调试信息打印在显示屏上•Keil调试模式&#xff1a;借助Keil软件的调试模式…

Java基础面试题(一)

Java基础面试题 一、面向对象和集合专题 1. 面向对象和面向过程的区别 面向过程&#xff1a;是分析解决问题的步骤&#xff0c;然后用函数把这些步骤一步一步地实现&#xff0c;然后在使用的时候一一调用则可。性能较高&#xff0c;所以单片机、嵌入式开发等一般采用面向过程…

项目执行差,你应该如何推进解决?(万千项目)

在日常工作中&#xff0c;项目成员可能存在以下问题&#xff1a;1、沟通能力不足。团队成员之间不主动反馈沟通导致问题堆积影响项目进度&#xff1b;2、执行力不足。成员推一下动一下&#xff0c;不主动积极执行工作任务&#xff1b;3、技术能力不不足。一写代码全是bug&#…

使用 Wall 搭建个人照片墙和视频墙

下载 Github:https://github.com/super-tongyao/wall 国内仓库&#xff08;不推荐&#xff0c;只做加速访问&#xff0c;无编译包和发行版&#xff0c;以github仓库为准&#xff09;&#xff1a;https://gitee.com/Super_TongYao/wall 推荐github仓库&#xff0c;下载最新版…

小米把不干活的同事都裁了,给了n+2,留下的人年终奖才1个多月工资,工作压力还变大了,太冤了,还不如被裁!...

被裁一定是不幸&#xff0c;留下一定是幸运吗&#xff1f;也未必&#xff0c;来看看这位网友的爆料&#xff1a;我同学21届校招进小米&#xff0c;今年年前躲过了裁员&#xff0c;不干活的同事都被裁了&#xff0c;给了n2。但发年终奖时&#xff0c;他才拿了不到2个月工资&…

Nginx服务优化措施与配置防盗链

目录 一.优化Nginx的相关措施 二.隐藏/查看版本号 三.修改用户与组 四.设置缓存时间 五.日志切割脚本 六.设置连接超时控制连接访问时间 七.开启多进程 八.配置网页压缩 九.配置防盗链 1.配置web源主机&#xff08;192.168.79.210 www.zhuo.com&#xff09; 1.1 安装…

CentOS 7 安装 mysql 5.7 最新版本

最近学习 mysql 菜鸟教程 &#xff0c;在 CentOS 7 上&#xff0c;教程里安装 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm &#xff0c;el7-5 一定是比较旧的版本了&#xff0c;但是到哪里可以找到最新的版本呢&#xff1f;当然是官网和官方仓库 &a…

JS - var / let / const 区别

var &#xff1a;变量提升&#xff0c;定义的变量都会被提升到该作用域的最顶部&#xff0c;变量也可以在声明之前使用 let &#xff1a;块级作用域&#xff0c;不能重复定义const &#xff1a;块级作用域&#xff0c;不能重复定义&#xff0c;定义常量不能被修改&#xff1b;虽…

JeecgBoot 3.5.0 版本发布,开源的企业级低代码平台

项目介绍 JeecgBoot是一款企业级的低代码平台&#xff01;前后端分离架构 SpringBoot2.x&#xff0c;SpringCloud&#xff0c;Ant Design&Vue3&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…

万有引力优化支持向量机SVM的回归预测,gsa-svm回归分析,Libsvm参数优化

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 万有引力算法 SVM应用实例,基于万有引力算法优化SVM的回归预测 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一…

RK3568平台开发系列讲解(显示篇)什么是DRM

🚀返回专栏总目录 文章目录 一、DRM介绍二、DRM与framebuffer的区别沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍什么是DRM。 一、DRM介绍 DRM 是 Linux 目前主流的图形显示框架,相比FB架构,DRM更能适应当前日益更新的显示硬件。 比如FB原生不支…

MySQL8.0真正的并行复制writeset

MySQL 主从复制模型 MySQL的主从架构依赖于 MySQL Binlog 功能&#xff0c; Master节点上产生Binlog并将Binlog写入到Binlog文件中。Slave节点上启动两个线程&#xff1a;一个IO线程&#xff0c;从MySQL上捞取Binlog日志并写入到本地的RelayLog日志&#xff1b;另一个SQL线程&a…

硬盘分区数据恢复?这些方法助您解忧

案例&#xff1a;分区把电脑文件丢了&#xff0c;数据还能恢复吗&#xff1f; “急急急&#xff01;&#xff01;&#xff01;本人电脑小白&#xff0c;在使用磁盘管理合并E、F分区的时候&#xff0c;不小心把D分区给删除了&#xff0c;D分区里面存放了很多重要的数据与文件&a…

CAD转换PDF格式怎么弄?教你几种方法轻松搞定!

CAD是从事与艺术创作相关等行业的打工人们必需的工作软件&#xff0c;可以用来完成建筑设计图、设计图纸等。在日常的工作中&#xff0c;一些伙伴经常需要传输图纸给合作方来完成探讨。但是CAD图纸需要使用专业软件才能打开&#xff0c;这就给文件传送带来了一定的困难。而且传…

使用pluginRegistrationTool注册插件

创建插件项目 打开Visual Studio并使用.NET Framework 4.5.2打开一个新的类库&#xff08;.NET Framework&#xff09;项目 安装除了画红圈的三个NuGet包 引用这个 在一个类里输入如下代码 public class FollowupPlugin : IPlugin{public void Execute(IServiceProvider servi…

第十七节 多态

多态 什么是多态? ●同类型的对象&#xff0c;执行同一个行为&#xff0c;会表现出不同的行为特征。 多态的常见形式 父类类型 对象名称new子类构造器; 接口 对象名称new 实现类构造器; 多态中成员访问特点 ●方法调用:编译看左边&#xff0c;运行看右边。 ●变量调用:编译看…

聊聊图像分割的DICE和IOU指标

目录 1. 介绍 2. dice 和 iou 的联系 3. 代码实现 3.1 dice 3.2 iou 3.3 test 3.4 dice 和 iou 的关系曲线 4. 代码 1. 介绍 dice 和 iou 都是衡量两个集合之间相似性的度量 dice计算公式&#xff1a; iou计算公式&#xff1a; iou的集合理解&#xff1a; iou 其实就…

linux本地yum挂载实践

本方法适用于&#xff1a;linux无法挂载官方yum源或无本地无yum仓库的场景&#xff0c;因为手动安装依赖包是极其麻烦的事&#xff0c;需要花费大量的时间寻找rpm包并导入到虚拟机去逐个安装。通过配置本地yum源&#xff0c;可以很容易地解决依赖问题。一、前提&#xff1a;lin…

90后老板用低代码整顿旅行社,创2000万年收,他是怎么做到的?(真实)

热爱旅游的92年成都小伙猴哥&#xff0c;大学毕业后开了一家旅行社&#xff0c;主要从事川藏、云南定制游服务。 从今年春节开始&#xff0c;国内各地旅游业开始复苏&#xff0c;向旅行社打电话咨询的人越来越多。 旅游的人多是好事&#xff0c;也是一种烦恼&#xff0c;因为…

Baklib客户故事:快递助手ERP

快递助手ERP以多平台多店铺订单管理为核心&#xff0c;集打单发货、商品、库存、采购、售后于一体&#xff0c;中小商家易上手的轻量级ERP&#xff0c;可以满足满足微商、自建商城、档口货源网、一件代发等不同类型客户的打单需求&#xff0c;通过开放平台API接口&#xff0c;自…