Arcpy||NumPyArrayToFeatureClass--Excel转要素类

时间:2019-11-06
本文章向大家介绍Arcpy||NumPyArrayToFeatureClass--Excel转要素类,主要包括Arcpy||NumPyArrayToFeatureClass--Excel转要素类使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在ArcGIS官方文档上看到在 ArcGIS 中使用 NumPy这个新特性(PS:也可能一直有,只是我才发现,哈哈),今天我们来聊一聊NumPyArrayToFeatureClass这个函数。首先看看官方例子:
import arcpy
import numpy
outFC = "C:/data/texas.gdb/fd/pointlocations"
# Create a numpy array with an id field, and a field with a tuple 
#  of x,y coordinates
#
array = numpy.array([(1, (471316.3835861763, 5000448.782036674)),
                     (2, (470402.49348005146, 5000049.216449278))],
                    numpy.dtype([('idfield',numpy.int32),('XY', '<f8', 2)]))
# Define a spatial reference for the output feature class
#
SR = arcpy.Describe("C:/data/texas.gdb/fd").spatialReference
# Export the numpy array to a feature class using the XY field to
#  represent the output point feature
#
arcpy.da.NumPyArrayToFeatureClass(array, outFC, ['XY'], SR)
该函数是将几何属性信息以Numpy结构化数组的形式传入生成要素类,利用该函数我们可以将大量数据一次性转为要素类,这里我们以将Excel表中的坐标为点要素为例来展示这个函数的强大。通常我们使用arcpy将Excel表转点要素是使用arcpy的游标插入,例如'菠萝仔'的这篇知乎文章-基于ArcGIS的python编程 10、根据Excel表格批量生成点数据,批量裁剪。当然也有人按照官网的例子使用NumPyArrayToFeatureClass,如'陌上桑la'-Arcpy神器之NumPyArrayToFeatureClass,但是还用得不够精简。
这里我是用到Pandas库来处理数据,然后再转要素能够更快的达到效果。下面讲解实例:

我使用的数据为:

处理过程代码如下(注意表头和下面代码参数对应):

#coding=utf-8

import arcpy
import numpy as np
import pandas as pd

outPoint = r"C:\Users\mei\Desktop\sample.shp"
inExcel = r'C:\Users\mei\Desktop\sample.xls'

## Define a spatial reference for the output feature class
SR = arcpy.SpatialReference(4326)
## pandas read the Excel
data = pd.read_excel(inExcel,index_col='id')
## DataFrame to NumPy record array.
data_records = data.to_records()
## NumPy record array to FeatureClass
arcpy.da.NumPyArrayToFeatureClass(data_records, outPoint, ('lon','lat'), SR)

得到结果如下:

并且还附带字段:

大家也可以试着用一用NumPyArrayToFeatureClass,感觉很不错。

原文地址:https://www.cnblogs.com/zuoliping98/p/11804506.html