предисловие
Этот раздел познакомит вас с созданием и обработкой объектов точка-линия-площадь. Существует три класса для создания 点
объектов: 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