from __future__ import division
import pandas as pd
from osgeo import ogr, osr, gdal
import osdef read_shptable(path, colname_list, Ispoint):"""获取shp文件中的属性表:param path: 待获取的shp文件存放地址:param colname_list: 带获取的shp文件字段名 格式为list:param Ispoint: 带获取的shp文件是否为点类型  若为点数据则返回shp的位置信息到最后两列 其中最后一列以list存储点位置信息:return: 获取的shp文件的属性表信息的list格式"""# 读取管点shpds_street = ogr.Open(path, False)  # False - read only, True - read/write# 获取第一个图层oLayer = ds_street.GetLayerByIndex(0)if oLayer == None:print("获取第%d个图层失败!\n", 0)# 对图层进行初始化,如果对图层进行了过滤操作,执行这句后,之前的过滤全部清空oLayer.ResetReading()oFeature = oLayer.GetNextFeature()  # 获取下一行属性shape_paramList = []while oFeature is not None:shape_param = oFeature.GetGeometryRef().ExportToWkt()shape_param_L = oFeature.GetGeometryRef().ExportToJson()area_in_sq_m = oFeature.GetGeometryRef().GetArea()# print(area_in_sq_m)if Ispoint:point_shape_param_list = [shape_param,  eval(shape_param_L)['coordinates'], area_in_sq_m]else:point_shape_param_list = []shape_paramList.append([oFeature.GetFieldAsString(i) for i in colname_list] + point_shape_param_list)oFeature = oLayer.GetNextFeature()return shape_paramListdef get_shpcol(path):"""获取shp文件中表的列名:param path: 想获取的shp文件列名 的文件存放地址:return: 存储shp文件表中列名的list"""# 读取管点shp 表中的列名ds_street = ogr.Open(path, False)  # False - read only, True - read/write# 获取第一个图层oLayer = ds_street.GetLayerByIndex(0)if oLayer == None:print("获取第%d个图层失败!\n", 0)# 对图层进行初始化,如果对图层进行了过滤操作,执行这句后,之前的过滤全部清空oLayer.ResetReading()oDefn = oLayer.GetLayerDefn()iFieldCount = oDefn.GetFieldCount()  # 属性表中的变量数layer = ds_street.GetLayer()plp = 0pipline_columns = []  # 管线shp表中的columnsfor iField in range(iFieldCount):oFieldDefn = oDefn.GetFieldDefn(iField)pipline_columns.append(oFieldDefn.GetNameRef())return pipline_columnsgdal.SetConfigOption('SHAPE_ENCODING', 'utf8')  # 属性表支持中文字段
# layer = ds.CreateLayer(layer_name, srs=srs, geom_type=ogr.wkbPoint,options=["ENCODING=GBK"]) # 生成中文编码shpl_shp_path = "我的shp文件.shp"line_shp_col = get_shpcol(l_shp_path)  # 获取线shp属性表中的列名
pipline_list = read_shptable(l_shp_path, line_shp_col, True)  # 以list格式获取线shp属性表所需要的信息
pipline_df = pd.DataFrame(pipline_list, columns=line_shp_col+["polygon", "polygon_list", "area"])  # 管线shp属性表信息转为df格式

python使用gdal读取shp文件相关推荐

  1. python使用gdal将shp文件转为TIF

    python使用gdal将shp文件转为TIF 方法一 # 缺少获取shp文件坐标系的步骤 def vector2raster(inputfilePath, outputfile, resp):sf ...

  2. GDAL读取Shp问题解决:Unable to open EPSG support file gcs.csv

    在GIS软件的开发中,经常用到开源库GDAL读取Shp数据,当shp数据中包含投影信息时,可能会遇到"Unable to open EPSG support file gcs.csv&quo ...

  3. python使用gdal读取tif经纬度

    python使用gdal读取tif经纬度 前言 一.tif是什么? 二.使用gdal读取经纬度 1.引入库 2.读取坐标 总结 前言 博主作为一个GIS开发者,开发过程中不免遇到一些处理tif的问题和 ...

  4. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  5. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  6. geotools读取shp文件及shp文件操作工具类代码

    geotools读取shp文件及shp文件操作工具类代码.pdf 完整文档下载地址 https://download.csdn.net/download/a772304419/17468931 imp ...

  7. python按列读取txt文件_如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

  8. python数据可视化读取excell文件绘制图像详细教程

    python数据可视化读取excell文件绘制图像详细教程 python数据可视化 python库中的基本用法 import pandas as pd # 调用pandas库 来读取excell的文件 ...

  9. Matlab之读取shp文件函数shaperead

    目录 一.shaperead函数 1.功能 2.语法 2.1 S = shaperead(filename) 2.2 S = shaperead(filename,Name,Value) 2.3 [S ...

最新文章

  1. Oracle学习笔记:oracle的编程接口
  2. 跳转路径时资源路径加/和不加/的区别
  3. [云炬创业学笔记]第二章决定成为创业者测试8
  4. cms的 php代码,KingCMS/PHP可执行代码
  5. Laravel核心技术解析(1)—— Composer 组件管理与自动加载
  6. Android 高德获取经纬度工具类
  7. Windows系统优化软件 | 这10款功能超级强大!界面优美!值得收藏
  8. java项目远程调用别的项目接口
  9. SSL证书常见错误和解决办法
  10. 解决windows 下文件名太长无法删除的问题
  11. Unity制作别踩白块儿
  12. 在计算机网络中ftp服务器的用途是,FTP的作用以及传输文件的一般步骤
  13. GoogleCast 简介
  14. 对数字身份认证安全,是企业的责任还是个人的责任?
  15. diyUpload - jQuery多张图片批量上传插件
  16. Bug敏感度与软件质量关系
  17. 名家专栏 况杰 主动下架比被动下架要好
  18. 橘子学docker01之基本玩法
  19. 计算机键盘指示灯不亮也不启动不了机,电脑开机时滴滴响 开不了机,显示器显示无信号,键盘灯不亮...
  20. RocketMQ的broker处理消息commit时,加锁应该使用自旋锁还是重入锁

热门文章

  1. 数模笔记1(20210121)
  2. Unity官方教學專案 - Character Customization (紙娃娃系統)
  3. raspberry pi_如何为复古游戏设置Raspberry Pi
  4. 写入位置0xccccccc权限冲突
  5. DXperience 711 代码问题
  6. 2017北京世界食品博览会会刊(参展商名录)
  7. OPC读写Kepware(C++)
  8. python编写网络防火墙_dnxfirewall:一款纯Python实现的下一代防火墙系统
  9. 出口欧盟万圣节cosplay服装CE认证办理标准
  10. python处理文档对象【三方库—lxml】