基于python的读取excel转shp文件

基于python的读取excel转shp文件

需要对其中的版本注意一下,否则无法运行

// An highlighted block
import os
import xlrd
import shapefile#需要pip install pyshp
path = "02" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称

def Write(shp,arr):
    shp = shapefile.Writer(shp, shapeType=shapefile.POINT)
    # 字段类型:此列索引处的数据类型。类型可以是:
    # “C”:字符,文字。
    # “N”:数字,带或不带小数。
    # “F”:浮动(与“N”相同)。
    # “L”:逻辑,表示布尔值True / False值。
    # “D”:日期。
    # “M”:备忘录,在GIS中没有意义,而是xbase规范的一部分。

    shp.field("Elevation", "N", 10, 4)
    shp.field("lat", "N", 10, 4)
    shp.field("lon", "N", 10, 4)
    shp.field("time", "D", 10, 4)
    shp.field("gdHt", "N", 10, 4)
    shp.field("height", "N", 10, 4)
    for i in range(1, arr.nrows):
        shp.point(arr.cell_value(i,1),arr.cell_value(i,2))
        shp.record(arr.cell_value(i, 0),arr.cell_value(i,1)
                   ,arr.cell_value(i,2),arr.cell_value(i,3),arr.cell_value(i,4),arr.cell_value(i,5))
    shp.balance()
    shp.close()

def read_excel_xls(path,file):#新版xlrd不支持xlsx,需要安装旧版1.2.0
    workbook = xlrd.open_workbook(path)  # 打开工作簿
    sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
    worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
    str=os.path.splitext(file)[0]
    outputpath = "outputshp"+"/"+str + ".shp"#输出目录

    Write(outputpath,worksheet)


for file in files: #遍历文件夹
     pathall={}
     if file.split('.')[-1] == 'xlsx' or file.split('.')[-1] == 'xls':
         pathall=str(path+"/"+file)
         read_excel_xls(pathall,file)
         print("successed!")
Python中,你可以使用一些GIS库如geopandas和openpyxl来实现.shp文件Excel文件的批量换。以下是一个简单的步骤: 1. **安装必要的库**: 首先需要安装`geopandas`用于处理.shp文件,`openpyxl`用于创建Excel文件。可以使用pip安装: ``` pip install geopandas openpyxl ``` 2. **读取.shp文件**: 使用`geopandas`的`read_file`函数读取.shp文件,假设.shp文件位于"data"目录下: ```python import geopandas as gpd shapes = gpd.read_file("data/*.shp") ``` 3. **数据预处理**: 根据需要清洗、整理或换数据,例如添加新列或删除不需要的信息。 4. **保存到Excel**: 使用`openpyxl`库创建一个新的Excel工作簿,并将数据写入: ```python import os from openpyxl import Workbook # 创建一个Excel工作簿 wb = Workbook() ws = wb.active for idx, shape in shapes.iterrows(): # 将几何信息和其他属性写入当前行 row_data = [shape.geometry.wkt, shape['column_name']] # 更改'column_name'为你的.shp文件中的实际字段名 ws.append(row_data) # 保存文件 file_name = 'output.xlsx' path = os.path.join('data', file_name) wb.save(path) ``` 5. **批量操作**: 如果有多个.shp文件需要处理,可以用os模块遍历文件夹,对每个.shp文件重复以上过程: ```python shp_files = [f for f in os.listdir("data") if f.endswith(".shp")] for file in shp_files: # 重复上述读取、处理和保存步骤 ``` 记得替换代码中的'column_name'为你的.shp文件中的实际字段名,并根据需要调整数据处理部分。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值