ArcPy读取Excel表格数据创建矢量

中科白癜风医院康复经历分享 http://pf.39.net/bdfyy/bdfjc/171227/5963402.html

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

1任务需求

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

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

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

2代码实现

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

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

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

1#-*-coding:cp-*-2#

author:ChuTianjia34importxlrd5importarcpy67arcpy.env.workspace=arcpy.GetParameterAsText(0)8excel_path=arcpy.GetParameterAsText(1)#站点信息表格文件9shapefile_name=arcpy.GetParameterAsText(3)#需要生成的矢量要素的路径与名称file_data=xlrd.open_workbook(excel_path)12sheet_data=file_data.sheets()[0]13sheet_row_num=sheet_data.nrowspoint_geometry_list=[]16point_object=arcpy.Point()#ReadSpatialCoordinateInformation19spatial_reference_txt=arcpy.GetParameterAsText(2)#指定投影坐标系20spatial_reference=arcpy.SpatialReference()21spatial_reference.loadFromString(spatial_reference_txt)#ImporttheCoordinatesofEachPoint24foriinrange(1,sheet_row_num):25x=sheet_data.row(i)[1].value26y=sheet_data.row(i)[2].value27point_object.X=float(x)28point_object.Y=float(y)29point_geometry=arcpy.PointGeometry(point_object,spatial_reference)30point_geometry_list.append(point_geometry)arcpy.CopyFeatures_management(point_geometry_list,shapefile_name)#ImporttheFiledInformation35field_list=["X","Y","ID_Own","Name"]36arcpy.AddField_management(shapefile_name,field_list[0],"FLOAT")37arcpy.AddField_management(shapefile_name,field_list[1],"FLOAT")38arcpy.AddField_management(shapefile_name,field_list[2],"SHORT")39arcpy.AddField_management(shapefile_name,field_list[3],"TEXT")witharcpy.da.UpdateCursor(shapefile_name,field_list)ascursor:42n=forrowincursor:44row[0]=sheet_data.row(n)[1].value45row[1]=sheet_data.row(n)[2].value46row[2]=sheet_data.row(n)[0].value47row[3]=sheet_data.row(n)[3].value48cursor.updateRow(row)49n+=13运行结果

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

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




转载请注明:http://www.aierlanlan.com/grrz/7647.html

  • 上一篇文章:
  •   
  • 下一篇文章: