《Python地理空间分析指南 第2版》学习笔记-5.8使用电子表格

本文介绍了如何使用Python将Excel电子表格中的数据转换为Shapefile文件。通过xlrd库读取Excel文件,然后利用shapefile库创建Shapefile写者对象,将电子表格的属性复制到dbf文件,并根据经纬度创建点。在转换过程中,需要注意最新版本的xlrd可能不支持xlsx文件,需要降级到1.2.0版本。这个过程对于地理空间数据分析和GIS工作非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Excel 不用多介绍,几乎每天都在使用,无处不在、易用性好,并且它们可以方便地存储结构化数据。电子表格作为一种收集数据的GIS格式非常流行。

相信工作或者学习中都会碰到,将电子表格的数据转化为Shapefile文件。接下来将演示把一个电子表格转换为Shapefile文件。电子表格包含代表经度的x字段属性列代表纬度的y字段属性列。如下表所示:
在这里插入图片描述
将其导入一个Shapefile文件,将执行如下步骤:

(1)打开电子表格;
(2)创建一个shapefile文件写者对象;
(3)获取电子表格的第一行作为dbf文件的表头;
(4)循环遍历电子表格每一行,将属性拷贝到dbf文件中;
(5)根据电子表格中的x和y字段中的值创建一个点。

import xlrd
import shapefile

# > (1)打开电子表格;
xls = xlrd.open_workbook(r"data/NYC_MUSEUMS_GEO.xlsx")
sheet = xls.sheet_by_index(0)



# > (2)创建一个shapefile文件写者对象;

with shapefile.Writer(r"data/NYC_MUSEUMS_GEO_toShp", shapefile.POINT) as w:

    # column是列,row是行
    # > (3)获取电子表格的第一行作为dbf文件的表头;
    for i in range(sheet.ncols):
        # print(sheet.cell(0,i))
        # cell(行号,列号)
        w.field(str(sheet.cell(0, i)), "C", 40)



    # > (4)循环遍历电子表格每一行,将属性拷贝到dbf文件中;
    for i in range(1,sheet.nrows):
        values = []
        for j in range(sheet.ncols):
            values.append(sheet.cell(i,j).value)
        w.record(*values)
        # > (5)从最后两列获取经纬度信息,并创建点。
        w.point(float(values[-2]),float(values[-1]))


结果如图所示:
在这里插入图片描述


总结

注意:最新的xlrd居然不支持Excel xlsx文件的读取。
方法:卸载最新的xlrd库,安装历史版本的xlrd库。pip install xlrd == 版本号

pip install xlrd==1.2.0

《Python地理空间分析指南 第2版》学习笔记,仅供学习,如有侵权请联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值