概述
文章目录
- 前言
- 一、经纬度坐标转点、线、面
- (一)在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直接读取文件生成列表。
# -*- 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.生成线
# -*- 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.生成面
# -*- 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
import 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
# -*- 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生成)前言一、经纬度坐标转点、线、面二、利用坐标点直接转换为点、线、面三、其他方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复