Обработка создания точек, линий и поверхностей Arcpy от Arcgis Python и создание геометрических объектов путем чтения координат широты и долготы в txt через pandas

предисловие

Этот раздел познакомит вас с созданием и обработкой объектов точка-линия-площадь. Существует три класса для создания объектов: Point, Multipoint, PointGeometryи Класс для создания 线объектов — Polyline, а класс для создания объектов — Polygon.

1. Создание точечных объектов - Точка

Точечные объекты часто используются вместе с курсорами. Точечные объекты будут возвращать один точечный объект, а не массив точечных объектов. Объекты других типов (многоугольники, полилинии и многоточечные объекты) возвращают массив точечных объектов, а если объекты состоят из нескольких частей, массив массивов точечных объектов.

**Точки не являются классами геометрии, но обычно используются для построения геометрии. ** То есть другие геометрические классы строятся через точечные объекты, будь то линия или поверхность. На самом деле все они строятся через точки, что следует знать тем, кто изучал ги.

вставьте сюда описание изображения

вставьте сюда описание изображения

# 创建点对象(经度,纬度,高程,路径测量值,ID)参数都是可选的
point = arcpy.Point(120.34, 31.34, 50)

print "Point properties:"
print "ID:{0}".format(point.ID)  # 不填ID则默认从0开始
print "X:{0}".format(point.X)
print "Y:{0}".format(point.Y)
print "Z:{0}".format(point.Z)
Point properties:
ID:0
X:120.34
Y:31.34
Z:50.0

Во-вторых, создание геометрических одноточечных объектов — PointGeometry.

Передача Point в PointGeometry создает единую геометрическую точку, которую можно увидеть в arcgis.

вставьте сюда описание изображения

вставьте сюда описание изображения
вставьте сюда описание изображения

Наш следующий код предназначен для создания трех геометрических одноточечных объектов через три объекта Point, то есть созданные геометрические одноточечные объекты можно просмотреть и отобразить в arcgis. код показывает, как показано ниже:

import arcpy

pointList = [[1, 2], [3, 5], [7, 3]]  # 坐标的列表对象

point = arcpy.Point()  # 创建一个空的point对象
pointGeometryList = []  # 用来存放pointGeometry对象

for pt in pointList:
    point.X = pt[0]
    point.Y = pt[1]
    pointGeometry = arcpy.PointGeometry(point)
    pointGeometryList.append(pointGeometry)

# 使用CopyFeatures_management工作生成要素类
print pointGeometryList
arcpy.CopyFeatures_management(pointGeometryList, r'E:\arcpy_study\我得学城\几何对象文件\几何点对象创建.shp')
print 'done!'

Класс объектов показан на рисунке:
вставьте сюда описание изображения
вставьте сюда описание изображения

3. Создание геометрических многоточечных объектов - Multipoint

Объект Multipoint представляет собой упорядоченный набор точек. Массив, содержащий несколько объектов Point, можно передать в Multipoint в качестве параметра для одновременного создания нескольких одиночных геометрических точек.

вставьте сюда описание изображения

вставьте сюда описание изображения
вставьте сюда описание изображения

Следующий код сохраняет несколько объектов Point в массиве для создания геометрических многоточечных объектов:

import arcpy

pointList = [[1, 2], [3, 5], [7, 3]]  # 坐标的列表对象

# 用于存储多点对象
# pt = [<Point (1.0, 2.0, #, #)>, <Point (3.0, 5.0, #, #)>, <Point (7.0, 3.0, #, #)>]
# pt是包含三个点对象的列表
pt = [arcpy.Point(*coords) for coords in pointList]

# 将多点对象转换为MultiPoint能识别的地理数组
# g_pt = <geoprocessing array object object at 0x0714D200>
g_pt = arcpy.Array(pt)

# 使用array创建几何多点对象
mp = arcpy.Multipoint(g_pt)

arcpy.CopyFeatures_management(mp, r'E:\arcpy_study\我得学城\几何对象文件\几何多点对象创建.shp')
print 'done!'

Эффект показан на рисунке:
вставьте сюда описание изображения
вставьте сюда описание изображения

В-четвертых, создание линейных объектов - Polyline

Мы используем массив, содержащий несколько объектов Point, для создания объекта Polyline, и результирующая полилиния формируется путем соединения этих точек.

вставьте сюда описание изображения
вставьте сюда описание изображения

Пример кода выглядит следующим образом:

import arcpy

# 三维数组,相当于两条折线,一个二维数组一条折线
feature_info = [[[1, 2], [2, 4], [3, 7]],
                [[6, 8], [5, 7], [7, 2], [9, 5]]]

# 用来存放线对象
features = []

for feature in feature_info:
    pt = [arcpy.Point(*coords) for coords in feature]
    print pt
    pl = arcpy.Polyline(arcpy.Array(pt))
    features.append(pl)

print features

arcpy.CopyFeatures_management(features, r'E:\arcpy_study\我得学城\几何对象文件\线对象创建.shp')
print 'done!'

Эффект следующий:
вставьте сюда описание изображения

вставьте сюда описание изображения

Пять, создание поверхностных объектов - Polygon

Мы используем массив, содержащий несколько объектов Point, для создания объекта Polygon, и результирующая полилиния формируется путем соединения этих точек встык.

вставьте сюда описание изображения

вставьте сюда описание изображения

Образец кода:

import arcpy

# 三维数组,相当于两条折线,一个二维数组一条折线
feature_info = [[[1, 2], [2, 4], [3, 7]],
                [[6, 8], [5, 7], [7, 2], [9, 5]]]

# 用来存放线对象
features = []

for feature in feature_info:
    pt = [arcpy.Point(*coords) for coords in feature]
    print pt
    pl = arcpy.Polygon(arcpy.Array(pt))
    features.append(pl)

print features

arcpy.CopyFeatures_management(features, r'E:\arcpy_study\我得学城\几何对象文件\面对象创建.shp')
print 'done!'

Эффект следующий:
вставьте сюда описание изображения

вставьте сюда описание изображения

6. Прочитайте координаты в txt для создания геометрических объектов

Мы используем библиотеку pandas для чтения координат широты и долготы в txt-файле, TXT-файл выглядит следующим образом, и имя файла 经纬度.txt:

1 118.897901 32.099258
2 118.898200 32.099075
3 118.901593 32.096570
4 118.904799 32.094134
5 118.904801 32.094180

Обратите внимание, что я использую Arcgis, и версия Python, которая поставляется с ним, — 2.7, но если вы устанавливаете pandas напрямую, последние pandas не поддерживают python2, вы можете только понизить версию и понизить версию pandas до 0.23. 4 и ниже ОК.

код показывает, как показано ниже:

视频教程地址:https://www.bilibili.com/video/BV1ab4y1h7dv/?p=8&spm_id_from=pageDriver&vd_source=5f425e0074a7f92921f53ab87712357b

Supongo que te gusta

Origin blog.csdn.net/qq_47188967/article/details/131548704
Recomendado
Clasificación