文章目录
- 前言
- 一、经纬度坐标转点、线、面
- (一)在excel对数据进行初始处理
- (二)在ArcGIS中对数据进行生成
- 1.生成点
- 2.生成线
- 3.生成面
- 二、利用坐标点直接转换为点、线、面
- (一)把数据添加excel表格中
- (二)在ArcGIS中对数据进行生成
- 1.生成点
- 2.生成线
- (1)手动连接
- (2)利用点转线工具生成
- 3.生成面
- 三、其他方法
- (一)利用arcpy生成
- 1.生成点
- 2.生成线
- 3.生成面
- (二)利用ArcGIS Engine生成
前言
利用坐标转成点、线、面是很常规的一个操作,也是很必要的一个操作,同时也是比较繁琐的一个操作,如何让这个过程变得简单是需要考虑的事情。
一、经纬度坐标转点、线、面
(一)在excel对数据进行初始处理
我们拿到的坐标一般都是经纬分秒制的,需要进行一下转换,变为10进制的,可以在excel里面来完成。在wps中可以利用ctrl+E(智能填充,根据前面的值,推测你后面需要的,坐标是度分秒时,我们需要把度分秒各自提取出来,比如说度,我只要在第一行填写第一行坐标对于的度,然后在第二行ctrl+E,就可以得到数据表中所有坐标的度,同理适合于分和秒),填充加快转换效率。(同时也要仔细检查一下,也可能wps识别错误)。
对数据进行处理后要把文件另存为xls格式的,因为对于xlsx的数据ArcGIS处理起来会有问题。
(二)在ArcGIS中对数据进行生成
1.生成点
添加数据
先设置经度再设置纬度,设置地理坐标系统,经纬度转点的话用地理坐标系统,后面要投影的话再可以投影坐标,有些 时候如果位置不对请检查经纬度是不是位置弄反了,如果还有问题的话,可以在一个空白的工作空间中进行转换,因为旧的工作空间中有临时投影可能会导致数据转换出问题。
导出数据
在这里是地理坐标系统,后期如果需要的话可以进行投影,一般来说就是用地理坐标系统进行分析的话也没什么很大的问题。
2.生成线
将点转换成线。
3.生成面
将线转换成面。
二、利用坐标点直接转换为点、线、面
(一)把数据添加excel表格中
直接输入坐标点。
(二)在ArcGIS中对数据进行生成
1.生成点
与前面利用经纬度类似,但要设置投影坐标系统。
2.生成线
(1)手动连接
点连点成线。
(2)利用点转线工具生成
点转线
注意:点转线的顺序按照排列顺序的,如果没有设置好顺序的话,线就会打结。
3.生成面
线转换成面。
三、其他方法
(一)利用arcpy生成
1.生成点
points是一个列表,如果是要生成很多的点的话,可以利用python直接读取文件生成列表。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25# -*- coding: utf-8 -*- import arcpy points = [[1111, 1112], [1111, 1133]]#表示坐标点 sp=arcpy.SpatialReference(4326)#数字代表坐标系统WGS-84 path = "D:work fileSTUDY DATAFolder"#设置文件生成路径 filename = 'points.shp' fc = path + "\" + filename arcpy.CreateFeatureclass_management(path, filename, 'POINT', '', '', '', sp) arcpy.AddField_management(fc, "FIDX", 'TEXT', 50) cursor = arcpy.InsertCursor(fc) # --------------- index = 0 for pt in points: point = arcpy.Point() point.X = pt[0] point.Y = pt[1] row = cursor.newRow() row.shape = point row.FIDX = index cursor.insertRow(row)#将记录插入到属性表里面 index = index + 1 print('finsh')
2.生成线
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28# -*- coding: utf-8 -*- import arcpy import xlwt sp = arcpy.SpatialReference(4326) path = "D:work fileSTUDY DATAFolder" filename = 'line.shp' fc = path + "\" + filename arcpy.CreateFeatureclass_management(path, filename, 'POLYLINE', '', '', '', sp) arcpy.AddField_management(fc, "DLMC", 'TEXT', 50) cursor = arcpy.InsertCursor(fc) poylinePts = [[[111, 112], [115, 119]], [[150, 159], [160, 172]]] index = 0 for coord in poylinePts: array = arcpy.Array() for pt in coord: point = arcpy.Point() point.X = pt[0] point.Y = pt[1] array.add(point) polyline = arcpy.Polyline(array) row = cursor.newRow() row.shape = polyline row.DLMC = index index += 1 cursor.insertRow(row) print 'finshed'
3.生成面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27# -*- coding: utf-8 -*- import arcpy poylinePts = [[[111, 112], [115, 119],[120,127]], [[150, 159], [160, 172],[175,180]]] sp = arcpy.SpatialReference(4326) path = "D:work fileSTUDY DATAFolder" filename = 'feature.shp' fc = path + "\" + filename arcpy.CreateFeatureclass_management(path, filename, 'POLYGON', '', '', '', sp) arcpy.AddField_management(fc, "DLMC", 'TEXT', 50) cursor = arcpy.InsertCursor(fc) print 'finsh' for cood in poylinePts: array=arcpy.Array() for pt in cood: point=arcpy.Point() point.X=pt[0] point.Y=pt[1] array.add(point) tpolygon=arcpy.Polygon(array) row= cursor.newRow() row.shape=tpolygon row.DLMC='polygon' cursor.insertRow(row) print 'finshed'
对于很多个坐标点的话也可以,python从EXCEL中读取数据转换为列表,方法如下,但在这之前要安装xlrd的包。
python3
1
2
3
4
5
6
7
8
9
10
11
12import xlrd as xd data =xd.open_workbook ('...../data1.xlsx') #打开excel表所在路径 sheet = data.sheet_by_name('Sheet1') #读取数据,以excel表名来打开 d = [] for r in range(sheet.nrows): #将表中数据按行逐步添加到列表中,最后转换为list结构 data1 = [] for c in range(sheet.ncols): data1.append(sheet.cell_value(r,c)) d.append(list(data1)) print(d)
python2
1
2
3
4
5
6
7
8
9
10
11
12
13
14# -*- coding: utf-8 -*- import xlrd data =xlrd.open_workbook (u'D:work fileSTUDY DATAFolder坐标演示.xls') #打开excel表所在路径 sheet = data.sheet_by_name('Sheet1') #读取数据,以excel表名来打开 d = [] for r in range(sheet.nrows): #将表中数据按行逐步添加到列表中,最后转换为list结构 data1 = [] for c in range(sheet.ncols): data1.append(sheet.cell_value(r,c)) d.append(list(data1)) print(d)
前面这种方法是针对于python3.9可行,但对于python2.7,需要在路径最前面加个u,例如(u’…/data1.xlsx’)。
(二)利用ArcGIS Engine生成
需要生成插件来做。这一部分先待定。最后
以上就是威武洋葱最近收集整理的关于ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)前言一、经纬度坐标转点、线、面二、利用坐标点直接转换为点、线、面三、其他方法的全部内容,更多相关ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)前言一、经纬度坐标转点、线、面二、利用坐标点直接转换为点、线、面三、其他方法内容请搜索靠谱客的其他文章。
发表评论 取消回复