怎么通过excel 点集导入arcmap 实现显示多边形

请教各位arcgis desktop 当中的各位业界前辈,晚辈有个问题真的是想不明白了
 
个人想利用excel当中已有的数据点集(这些点集都存在一列之中),导入到arcmap的面图层当中,并实现利用点集连接后显示多边形


excel中数据导入arcmap形成多边形.jpg

这是我的思路
下面是写的代码,基本实现了第一步和最后一步,但是中间两步我是实在不会了
>>>#!user/bin/env python
# -*- coding: utf-8 -*-
import arcpy
import xlrd
import xlwt

xlsPath = r"D:\地图\地图底图\duobianxing.xls"
data = xlrd.open_workbook(xlsPath)

table = data.sheets()[0]#通过索引顺序获取
cols = table.col_values(7)#该数值需要调整
nrows = table.nrows
point = arcpy.Point()
array = arcpy.Array()

polygonGeometryList =
for i in range(1,nrows):
str = table.cell(i,7).value#该处i后的数值应该是需要调整的
points = str.split(u' ')
for j in points:
xy = j.split(',')
print xy[0]
print xy[1]
print '\n'
point.X = float(xy[0]);point.Y = float(xy[1])
array.add(point)
polygon = arcpy.Polygon(array)
polygonGeometryList.append(polygon)
array.removeAll()
arcpy.InsertFeatures_management(polygonGeometryList, "D:\\地图\地图底图\heshimian.shp")

print 'over'
 
还有一个小问题就是:xlrd和xlwt这两个python的库怎么添加进arcgis的库当中来着?
我以前的老电脑有,但是这个新的电脑没有我还忘了怎么添加了......


这是我第一次遇到了怎么都想不明白也没有思路的问题了
尤其是在设立属性值并连接这一块.....
还请各位arcgis的前辈们不吝赐教,晚辈感激不尽.......
已邀请:

徐珂 - ArcGIS for Desktop

赞同来自: 江宝骅

如果你的Excel中已经为点分组了,也就是有字段可以告诉计算机哪几个点连成一个多边形,可以使用GP工具实现。
1、转点,Add XY Data,在File菜单,Add Data;
2、点连线,Points to Line,注意sort field是选择分组字段,勾选Close Line;
3、线转多边形,Feature to Polygon。

穆天龙 - 专注Desktop

赞同来自: turtle

有一些问题不是很明白,需要确认一下:你目前是已经有了矢量数据,而想把Excel中的数据关联到矢量数据上?还是根据Excel中的数据创建矢量数据?我的感觉你是想做后一个。

如果目前没有矢量数据,就使用arcpy调用Create Feature Class创建一个空的Polygon要素类,然后遍历Excel中行的同时,使用Insert Cursor来逐行插入Polygon对象就可以了。

你标注的红色部分的解答:
1.怎么建立能和Excel点集对应的属性字段?
答:我估计你想根据坐标创建多边形,那么不需要创建单独的字段,Polygon图形存储在Shape字段中,在创建要素类的时候就Shape字段。具体怎么构建多边形取决于Excel中点串存储的结构。
2.第二段红色段落的问题不是很明白。

另外,我印象中当前版本的ArcGIS自带的Python已经装了xlrd和xlwt。

turtle

赞同来自: Watson

同意楼上穆天龙的回答,题主的思路是对的,大概总结如下:
1. 不用安装xlrd和xlwt,已自带;
2. 建议可先根据excel表格中的属性字段在ArcCatalog中创建一个空多边形要素类;
3. 打开excel逐一读取各行,循环处理属性数据以及坐标数据;
4. 参考arcpy.da.InsertCursor方式将各个多边形要素的几何属性和其他属性信息插入到刚才新建的多边形要素类中:帮助文档,关注最后的几个示例代码

使用 InsertCursor 和 SHAPE@ 令牌添加一个使用几何对象的新要素。

import arcpy

# Create a polyline geometry
array = arcpy.Array([arcpy.Point(459111.6681, 5010433.1285),
arcpy.Point(472516.3818, 5001431.0808),
arcpy.Point(477710.8185, 4986587.1063)])
polyline = arcpy.Polyline(array)

# Open an InsertCursor and insert the new geometry
cursor = arcpy.da.InsertCursor('C:/data/texas.gdb/counties', ['SHAPE@'])
cursor.insertRow([polyline])

# Delete cursor object
del cursor

江宝骅

赞同来自:

数据不多,可以使用工具嘛,前面的问题描述读起来有些费解,可以重新组织一下。
python库的安装
1、需要命令行,可参考以下链接
http://www.cnblogs.com/nima/p/5041204.html
2、不用输入命令,可以先安装pycharm软件,然后再安装库
1.jpg


 
 

Watson

赞同来自:

使用C#能实现吗?
如何操作?需要使用什么组件和技术?
python可以链接到oracle数据表中操作吗?
如果多边形有空洞,怎么处理?
谢谢!

要回复问题请先登录注册