ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)

文章目录

  • 前言
  • 一、经纬度坐标转点、线、面
    • (一)在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如何利用已有坐标转成点(arcgis生成、python生成)_第1张图片

(二)在ArcGIS中对数据进行生成

1.生成点

添加数据
ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)_第2张图片
先设置经度再设置纬度,设置地理坐标系统,经纬度转点的话用地理坐标系统,后面要投影的话再可以投影坐标,有些 时候如果位置不对请检查经纬度是不是位置弄反了,如果还有问题的话,可以在一个空白的工作空间中进行转换,因为旧的工作空间中有临时投影可能会导致数据转换出问题。
ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)_第3张图片

导出数据
ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)_第4张图片
在这里是地理坐标系统,后期如果需要的话可以进行投影,一般来说就是用地理坐标系统进行分析的话也没什么很大的问题。

2.生成线

将点转换成线。

3.生成面

将线转换成面。

二、利用坐标点直接转换为点、线、面

(一)把数据添加excel表格中

直接输入坐标点。

(二)在ArcGIS中对数据进行生成

1.生成点

与前面利用经纬度类似,但要设置投影坐标系统。

2.生成线

(1)手动连接

点连点成线。

(2)利用点转线工具生成

点转线
注意:点转线的顺序按照排列顺序的,如果没有设置好顺序的话,线就会打结。
ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)_第5张图片

3.生成面

线转换成面。


三、其他方法

(一)利用arcpy生成

1.生成点

points是一个列表,如果是要生成很多的点的话,可以利用python直接读取文件生成列表。

# -*- coding: utf-8 -*-
import arcpy
points = [[1111, 1112], [1111, 1133]]#表示坐标点
sp=arcpy.SpatialReference(4326)#数字代表坐标系统WGS-84
path = "D:\work file\STUDY DATA\Folder"#设置文件生成路径
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 file\STUDY DATA\Folder"
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 file\STUDY DATA\Folder"
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 file\STUDY DATA\Folder\坐标演示.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生成

需要生成插件来做。这一部分先待定。

你可能感兴趣的:(国土空间规划技术探索,python,pytorch,深度学习)