首页 > 编程语言 >Python基于Excel生成矢量图层及属性表信息:ArcPy

Python基于Excel生成矢量图层及属性表信息:ArcPy

时间:2024-03-20 10:57:21浏览次数:28  
标签:sheet 矢量图 point Python data Excel list arcpy row

  本文介绍基于PythonArcPy模块,读取Excel表格数据并生成带有属性表矢量要素图层,同时配置该图层的坐标系的方法。

1 任务需求

  首先,我们来明确一下本文所需实现的需求。

  现有一个记录北京市部分PM2.5浓度监测站点信息的Excel表格数据,格式为.xls;文件内包含站点编号、XY坐标、站点名称等四列数据,部分数据如下所示。

image

  我们需要将该表格文件中所记录的全部站点信息导入到Python中,并将全部站点创建为一个点要素的矢量图层;此外,需要同时可以指定该矢量图层的投影坐标系,并将表格文件中的四列信息作为矢量图层属性表的字段与内容

2 代码实现

  接下来,我们就基于PythonArcPy模块,进行详细代码的撰写与介绍。

  首先,需要说明的是:当初在编写代码的时候,为了方便执行,所以希望代码后期可以在ArcMap中直接通过工具箱运行,即用到Python程序脚本新建工具箱与自定义工具的方法;因此,代码中对于一些需要初始定义的变量,都用到了arcpy.GetParameterAsText()函数。大家如果只是希望在IDLE中运行代码,那么直接对这些变量进行具体赋值即可。关于Python程序脚本新建工具箱与自定义工具,大家可以查看ArcMap将Python写的代码转为工具箱与自定义工具详细了解。

  上面提到需要初始定义的变量一共有四个,其中arcpy.env.workspace参数表示当前工作空间,excel_path参数表示存储有北京市PM2.5浓度监测站点信息的Excel数据文件,spatial_reference_txt参数表示需要对站点矢量数据进行投影的坐标系类型(在本文中我们以“WGS 1984 UTM Zone 50N”投影为例),shapefile_name参数表示投影后站点矢量数据的具体文件。

# -*- coding: cp936 -*-
# @author: ChuTianjia

import xlrd
import arcpy

arcpy.env.workspace=arcpy.GetParameterAsText(0)
excel_path=arcpy.GetParameterAsText(1) # 站点信息表格文件
shapefile_name=arcpy.GetParameterAsText(3) # 需要生成的矢量要素的路径与名称

file_data=xlrd.open_workbook(excel_path)
sheet_data=file_data.sheets()[0]
sheet_row_num=sheet_data.nrows

point_geometry_list=[]
point_object=arcpy.Point()

# Read Spatial Coordinate Information
spatial_reference_txt=arcpy.GetParameterAsText(2) # 指定投影坐标系
spatial_reference=arcpy.SpatialReference()
spatial_reference.loadFromString(spatial_reference_txt)

# Import the Coordinates of Each Point
for i in range(1,sheet_row_num):
    x=sheet_data.row(i)[1].value
    y=sheet_data.row(i)[2].value
    point_object.X=float(x)
    point_object.Y=float(y)
    point_geometry=arcpy.PointGeometry(point_object,spatial_reference)
    point_geometry_list.append(point_geometry)

arcpy.CopyFeatures_management(point_geometry_list,shapefile_name)

# Import the Filed Information
field_list=["X","Y","ID_Own","Name"]
arcpy.AddField_management(shapefile_name,field_list[0],"FLOAT")
arcpy.AddField_management(shapefile_name,field_list[1],"FLOAT")
arcpy.AddField_management(shapefile_name,field_list[2],"SHORT")
arcpy.AddField_management(shapefile_name,field_list[3],"TEXT")

with arcpy.da.UpdateCursor(shapefile_name,field_list) as cursor:
    n=1
    for row in cursor:
        row[0]=sheet_data.row(n)[1].value
        row[1]=sheet_data.row(n)[2].value
        row[2]=sheet_data.row(n)[0].value
        row[3]=sheet_data.row(n)[3].value
        cursor.updateRow(row)
        n+=1

3 运行结果

  执行上述代码,即可得到包含有表格文件中所列全部站点的点要素矢量图层文件,且其属性表中包含了原有表格文件中全部列所对应的字段与内容。

  查看该图层属性,可以看到其已经具有了我们在代码中所指定的投影坐标系。

  至此,大功告成。

标签:sheet,矢量图,point,Python,data,Excel,list,arcpy,row
From: https://www.cnblogs.com/fkxxgis/p/18084738

相关文章

  • Python函数每日一讲 - int()
    引言在Python编程中,经常需要将数据从一种类型转换为另一种类型。int()函数是Python中用于将其他数据类型转换为整数类型的内置函数之一。通过本文的介绍,你将了解int()函数的基本用法和常见应用场景,帮助你更好地处理数据类型转换的需求。语句概览int()函数用于将指定的值转换为......
  • springboot/java/php/node/python情侣空间微信小程序【计算机毕设】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今社会,随着科技的迅猛发展和智能移动设备的普及,人们的社交方式正在经历着翻天覆地的变化。特别是年轻情侣之间,他们更倾向于通过数字化平台来表达情感......
  • springboot/java/php/node/python企业内部订餐小程序【计算机毕设】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网科技的飞速发展,企业运营模式正逐步向数字化、智能化方向转型。在这一背景下,企业内部服务流程的优化变得尤为重要。订餐作为企业日常工作中不可......
  • 学数据分析 1 年,涨薪10k!教你用Python快速入门数据分析
    现如今,互联网行业的每个人都知道数据的价值,很多人也为此学了一堆的数据分析工具,但面对问题,还是不知道如何去分析。我们在奔向升职加薪的路上,总会遇到这些问题:面对数据问题,没有思路,怎么办?面对一堆数据,该如何下手去分析?面试中的业务问题如何去回答?工作一两年,从岗位本身......
  • Python爬虫实战系列4:天眼查公司工商信息采集
    Python爬虫实战系列1:博客园cnblogs热门新闻采集Python爬虫实战系列2:虎嗅网24小时热门新闻采集Python爬虫实战系列3:今日BBNews编程新闻采集Python爬虫实战系列4:天眼查公司工商信息采集一、分析页面打开天眼查网址https://www.tianyancha.com/,随便搜索一个公司【比亚迪】查......
  • leaflet频繁切换mapbox矢量图层-短暂空白问题
    leaflet加载mapbox矢量图层-最佳方案推荐闪烁问题比如现在有卫星图和mapboxgl矢量图层,两者有时常常需要切换,但在切换回矢量图层时,会出先短暂的空白问题(就是初始化图层),那有什么办法,可以实现平滑过渡切换呢解决思路大概讲一下思路,就是在切换卫星图时,矢量图层不要立刻移除,通过......
  • 100_pandas-Python的数据分析包
    目录什么是pandas索引操作赋值和排序算术运算和逻辑运算统计运算自定义函数运算pandas画图文件读取和存储缺失值处理-删除/替换数据离散化数据合并交叉表和透视表分组和聚合什么是pandas索引操作赋值和排序算术运算和逻辑运算统计运算自定义函数运算pandas画图文......
  • 090_Numpy-Python的科学计算库
    目录什么是NumpyN维数组-ndarrayndarray与Python原生list运算效率对比生成数组正态分布和均匀分布切片和形状修改类型修改和数组去重ndarray运算矩阵和向量矩阵向量加法和标量乘法矩阵向量乘法矩阵乘法矩阵乘法的性质逆、转置数组间运算什么是NumpyN维数组-ndarrayndarray......
  • 080_Matplotlib-Python的2D绘图库
    目录什么是Matplotlib为什么要学习Matplotlib实现一个简单的Matplotlib画图创建画布-》绘制图像-》显示图像Matplotlib三层结构容器层辅助显示层图像层折线图与基础绘图功能折线图的应用场景常见图形绘制常见图形种类及意义折线图-变化散点图-分布规律柱状图-统计/对比直方图-统计......
  • VBA读取 Excel 并按工作表拆分成多个 Excel
    新建窗体SubSplitExcelByMonth()'OnErrorGoToErrorHandler'启用错误处理OnErrorResumeNextApplication.ScreenUpdating=FalseApplication.DisplayAlerts=FalseDimexclePath,sourceSheetName,groupSheetName,filterI......