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

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版》学习笔记,仅供学习,如有侵权请联系删除。

猜你喜欢

转载自blog.csdn.net/qq_32390983/article/details/124524475