IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python GDAL(1)————OGR读写矢量数据 -> 正文阅读

[Python知识库]Python GDAL(1)————OGR读写矢量数据

目录

序言:

读矢量数据:

导入库:

读取数据层:

读取上下边界:

释放内存:

写矢量数据:

创建一个新的文件:


序言:

? ? ? ? 本文学习内容是来自Utah State University的openGIS课程:

相关资料,包括讲义、源码、数据样例https://www.gis.usu.edu/~chrisg/python/

  1. OGR矢量库:简单的矢量数据读写,是GDAL的一部分
  2. GDAL地理空间数据抽象库: a、读写栅格数据 b、ArcGIS也是基于GDAL开发的 c、C++库,但是可以用python调用

需要的模块:

1、进入https://www.lfd.uci.edu/~gohlke/pythonlibs/? 搜索osgeo,根据自己python版本下载需要的gdal版本

?2、numpy(高速的数组处理,对栅格数据尤其重要)

cmd:pip install numpy

读矢量数据:

导入库:

import ogr

或者:

from osgeo import ogr

万能方法:

try:
    import ogr
except:
    from osgeo import ogr

读取数据之前必须先载入数据驱动,初始化一个对象,让它‘知道’某种数据结构:

try:
    import ogr
except:
    from osgeo import ogr

driver = ogr.GetDriverByName('ESRI Shapefile')

数据驱动driver的open方法中,返回一个数据源对象, update为0是只读,为1是可写,file_name(绝对路径)

driver.opem(<file_name>, <update>)

读取数据层:

ESRI的shapefile都是填0的,如果不填的话默认也是0.

layer = dataSoure.GetLayer(0)

获取数据层有多少个点:

n = layer.GetFeatureCount()
print(n)

读取上下边界:

extent = layer.GetExtent()
print('extent:', extent)
print('ul:', extent[0], extent[3])#上下
print('lr:', extent[1], extent[2])#左右

读取某一要素,此处读取的是一个点

feat = layer.GetFeature(41)
fid = feat.GetField('id')
print(fid)

循环读取要素,遍历所有:

feat = layer.GetNextFeature()  #读取下一个
while feat:
    feat = layer.GetNextFeature()
later.ResetReading()

提取feature的几何形状:

geom = feat.GetGeometryRef()
geom.GetX()
geom.GetY()
print(geom)

释放内存:

feature.Destroy()
dataSource.Destroy()

写矢量数据:

创建一个新的文件:

这个文件如果已经存在就会报错:

driver.CreateDataSource(<filename>)

创建一个新的layer:

dataSource.CreateLayer(<name>,CreateLayer(<name>, geom_type=<OGRwkbGeometryType>, [srs])

删除一个shp文件:

driver.DeleteDataSource(‘test.shp’)

要添加一个新字段,只能在layer里面加,而且还不能有数据添加的字段如果是字符串,还要设定宽度:

fieldDefn = ogr.FieldDefn('id', ogr.OFTString)
fieldDefn.SetWidth(4)
layer.CreateField(fieldDefn)

然后从layer中读取相应的feature类型,并创建feature:

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

设定几何形状:

feature.SetGeometry(point)

设定某字段的值:

feature.SetField('id', 23)

将feature写入layer:

layer.CreateFeature(feature)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:11:09  更:2022-09-25 23:11:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 2:46:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计