Python+GDAL面数据中心点提取为单独shape文件,并复制属性数据
最近需要使用GDAL实现shape面数据批量将中心点提取为点shape文件,并复制所有的属性信息。整体的逻辑不是非常复杂,但是在网上现成的代码也找不到。
实现思路
具体思路如下:
实现代码
from osgeo import ogr
from osgeo import gdaldef area_to_point(in_path,out_path):# 解决中文字符问题# 为了支持中文路径,请添加下面这句代码gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")# 为了使属性表字段支持中文,请添加下面这句gdal.SetConfigOption("SHAPE_ENCODING", "CP936")# 注册所有的驱动ogr.RegisterAll()ds = ogr.Open(in_path, 0)if ds is None: # 打开失败print("打开失败")# 获取该数据源中的图层个数,一般shp数据图层只有一个,如果是mdb、dxf等图层就会有多个layer_count = ds.GetLayerCount()if layer_count != 1:print("图层数量异常")driver = ogr.GetDriverByName("ESRI Shapefile")out_ds = driver.CreateDataSource(out_path)in_lyr = ds.GetLayer()out_lyr = out_ds.CreateLayer('Point', in_lyr.GetSpatialRef(), geom_type=ogr.wkbPoint)# 获取文件字段属性in_feature = in_lyr.GetNextFeature()# 复制全部的字段in_feature_defn = in_lyr.GetLayerDefn()field_names = []for i in range(0, in_feature_defn.GetFieldCount()):field_defn = in_feature_defn.GetFieldDefn(i)field_name = field_defn.namefield_names.append(field_name)# 输出layer创建字段out_lyr.CreateField(field_defn)# 获取输出图层属性表信息out_feature_defn = out_lyr.GetLayerDefn()feature = in_lyr.GetFeature(0)# 遍历要素while feature:new_feature = ogr.Feature(out_feature_defn)# 添加点要素geom = feature.GetGeometryRef()center = geom.Centroid()new_feature.SetGeometry(center)# 复制所有字段属性for field_name in field_names:area = feature.GetField(field_name)# 添加点的字段值new_feature.SetField(field_name, area)# 添加要素到图层out_lyr.CreateFeature(new_feature)feature = in_lyr.GetNextFeature()out_ds.Destroy()if __name__ == '__main__':shp_path = "E:/测试数据/DK4107262017.shp"out_path = "E:/测试数据/out.shp"area_to_point(shp_path,out_path)
提取效果
Python+GDAL面数据中心点提取为单独shape文件,并复制属性数据相关推荐
- Python Re 正则表达式 数据匹配提取 基本使用
Python re 正则表达式 数据匹配提取 基本使用 小洲提示:代码可直接复制在编译器中运行,方便更好的理解 文章目录 Python re 正则表达式 数据匹配提取 基本使用 前言 一.导入库,内置 ...
- halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...
全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...
- html怎么拿json数据,如何使用Python从HTML数据中提取JSON数据?
我正在尝试制作一个python脚本,可以在outlook中读取JSON数据电子邮件.但是问题是如何从HTML数据中提取JSON数据.这是我要提取的原始JSON数据.在{ "vpn_detai ...
- Python对json数据的提取
JSON的全称是"JavaScript Object Notation",意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据 ...
- Python新手的数据批量处理教程(TXT文件)
最近想用python批量处理数据,把自己网上找答案的过程整理了一下,希望对大家有用. 问题: 一个文件夹中有38个txt文件,这38个txt的命名各不相同,要把这38个txt文件中的数据整合到一个tx ...
- Python将txt数据转换为xls(表格)文件,方便后面做数据分析
Python我们做数据分析的时候有时候获得数据是txt文件,这时候我们该怎么办呢?下面我给大家教一下这时候应该怎么做? 1.读取txt数据查看:我们就可以看到使用逗号隔开的数据. "&quo ...
- python指定时间范围数据_Python提取特定时间段内数据的方法实例
Python提取特定时间段内数据的方法实例 发布时间:2020-09-24 05:46:06 来源:脚本之家 阅读:75 作者:淮南草 python提取特定时间段内的数据 尝试一下: data['Da ...
- Python爬虫之数据解析/提取(二)
文章目录 前言 数据分析分类 数据解析原理概述 一.正则re进行数据解析 1.1 爬取糗事百科中糗图板块下所有的糗图图片⭐ 二.bs4解析概述 2.1 获取整个标签 2.2 获取标签属性或者存储的文本 ...
- python获取同花顺数据_Python提取Wind数据
果然是中文编码的问题.搞定了,新鲜出炉一个小脚本.谢谢各位大神的解答. """ @Author: wenrongli @Date: 2014-11-18 @Version ...
最新文章
- ORB-SLAM中的ORB特征(提取)
- linux下uptime命令详解
- git reset 命令详解(一)—— Git 学习笔记 07
- linux 编译 freescale arm 的gdb server
- React开发(231):常见手机号邮箱的正则
- win10设置默认输入法_个性化设置技巧
- 文件上传java逻辑_Java 文件上传 实例
- oracle 删除行记录,使用实体框架从oracle数据库中删除记录
- Spring启动的流程
- ASP.NET2.0小技巧--内部控件权限的实现
- Java 在匿名内部函数中为外部函数变量赋值的解决方案
- Java 方法的反射
- json格式化工具有哪些?在项目中使用什么工具来格式化JSON数据?
- 高等数学辅导讲义_历年真题,复习讲义的经验分享(数二127分)
- 显卡刷bios改型号_A卡修改BIOS软件/刷显卡BIOS软件
- [李景山php] ddos 防御基础
- JS实现随机抽奖功能
- Java选择题(八)
- 翻译Deep Learning and the Game of Go(3)第2章:围棋是一个机器学习难题(规则部分就不翻了)
- 2022支付宝集五福活动开始了 有哪些集福方法你知道吗?