Создать произвольно расположенные точки (Управление данными (Data Management))
Резюме
Создает указанное количество случайно расположенных точечных объектов. Произвольно расположенные точки могут быть созданы в окне экстента, внутри полигональных объектов, на точечных объектах или вдоль линейных объектов.
Использование
-
Область, в которой будут созданы произвольно расположенные точки, можно определить либо с помощью ограничивающих полигональных, точечных или линейных объектов, либо с помощью окна ограничивающего экстента.
-
Параметр Число точек (Number of Points) можно указать как количество или как числовое поле в Ограничивающем классе пространственных объектов (Constraining Feature Class), содержащем значения количества случайных точек, которые требуется разместить в каждом пространственном объекте. Опция поля является корректной только для полигональных и линейных ограничивающих объектов. Если число точек используется как число, каждый пространственный объект в ограничивающем классе объектов будет иметь количество случайных точек, созданные внутри или вдоль его границы.
Если используется Ограничивающий класс объектов (Constraining Feature Class), содержащий несколько объектов, и вы хотите указать общее количество случайных точек, которые требуется создать (в отличие от количества случайных точек, которые требуется разместить в каждом объекте), необходимо сначала выполнить слияние ограничивающего класса объектов с помощью инструмента Слияние (Dissolve), чтобы класс состоял только из одного объекта, а затем использовать слитый класс как Ограничивающий класс объектов (Constraining Feature Class).
Cистема координат выходного класса пространственных объектов будет координатной системой
- Ограничивающий класс пространственных объектов, если указан
- Фрейм данных карты, если в ArcMap задан ограничивающий экстент, использующий слой карты или путь к классу пространственных объектов
- Класс пространственных объектов, если в Python задан ограничивающий экстент использующий путь к классу пространственных объектов
- Выходная система координат (Output Coordinate System) среды геообработки, если задана (и если замещает все остальные поведения описанные выше)
- Неизвестен, если не применяется ничего из вышеперечисленного
-
Чтобы присвоить случайные значения произвольно расположенным точкам, сначала создайте произвольно расположенные точки с помощью этого инструмента. Во-вторых, используйте инструмент Добавить поле (Add Field) для создания нового числового поля в классе произвольно расположенных точек. Предлагаемый тип полей – длинное целое или с плавающей точкой. В-третьих, используйте инструмент Вычислить поле (Calculate Field), чтобы добавить случайные значения в пустое поле класса произвольно расположенных точек. Чтобы создать случайное целочисленное значение между a и b (включительно), используйте выражение Python random.randint(a,b). Чтобы создать случайное число с плавающей точкой от a до b (исключая эти значения), используйте выражение Python random.uniform(a,b). Обязательно установите Тип выражения (Expression Type) как PYTHON, замените значениями параметры a и b и импортируйте случайный модуль в раздел Блок кода (Code Block) с помощью выражения import random.
-
Параметр Ограничивающий экстент (Constraining Extent) можно ввести как набор минимальных и максимальных значений координат x и y или равных экстенту векторного слоя или класса пространственных объектов.
-
Если заданы значения как для Ограничивающего класса объектов (Constraining Feature Class), так и для Ограничивающего экстента (Constraining Extent), то будет использоваться значение Ограничивающего класса объектов (Constraining Feature Class), а значение Ограничивающего экстента (Constraining Extent) будет игнорироваться.
-
Если больше не удается поместить произвольно расположенные точки в ограничивающую область, не нарушая минимальную допустимую спецификацию расстояния, количество случайных точек в ограничивающей области будет уменьшено до минимально возможного в рамках минимального допустимого расстояния.
-
Параметр Минимальное допустимое расстояние (Minimum Allowed Distance) можно указать как линейную единицу или поле из ограничивающих объектов, содержащих числовые значения. Это значение будет определять минимальное допустимое расстояние между случайными точками в пределах каждого входного объекта. Опция поля является корректной только для полигональных и линейных ограничивающих объектов. Произвольно расположенные точки могут находиться в пределах минимального допустимого расстояния, если они были созданы внутри или на границе различных ограничивающих частей объектов.
-
Использование точечных объектов как ограничивающего класса пространственных объектов создаст случайный поднабор ограничивающих точечных объектов. Новые точечные местоположения не создаются.
-
Нецелочисленные (целые) положительные значения параметров Число точек (Number of Points) и Минимально допустимое расстояние (Minimum Allowed Distance) будут округлены до ближайшего целого числа. Нечисловые и отрицательные значения будут установлены на 0.
Синтаксис
Параметр | Объяснение | Тип данных |
out_path |
Местоположение или рабочая область, в которой будет создан класс пространственных объектов со случайными точками. Местоположение или рабочая область должны уже существовать. | Feature Dataset;Workspace |
out_name |
Имя класса пространственных объектов со случайными точками, который будет создан. | String |
constraining_feature_class (дополнительно) |
Случайные точки будут созданы внутри или на границах пространственных объектов в этом классе пространственных объектов. Ограничивающий класс объектов может представлять собой точку, мультиточку, линию или полигон. Точки будут размещены в случайном порядке внутри полигональных объектов вместе с линейными объектами или в местах расположения точечных объектов. В каждом объекте этого класса пространственных объектов будет создано определенное количество точек (например, если вы указываете 100 точек, а в ограничивающем классе объектов содержится 5 объектов, то в каждом объекте будет создано по 100 случайных точек – в общей сумме 500 точек). | Feature Layer |
constraining_extent (дополнительно) |
Произвольно расположенные точки будут созданы внутри экстента. Ограничивающий экстент будет использоваться, только если не задан ограничивающий класс пространственных объектов. | Extent;Feature Layer;Raster Layer |
number_of_points_or_field (дополнительно) |
Количество произвольно расположенных точек, которые будут созданы. Количество точек может быть задано как длинное целое число или как поле из ограничивающих пространственных объектов, содержащих числовые значения для того, как много случайных точек будут размещены в пределах каждого объекта. Опция поля является корректной только для полигональных и линейных ограничивающих объектов. Если количество точек задано числом, для каждого пространственного объекта в ограничивающем классе пространственных объектов будет создано это количество произвольных точек, расположенных внутри его или на границах. | Field;Long |
minimum_allowed_distance (дополнительно) |
Наикратчайшее допустимое расстояние между любыми двумя произвольно размещенными точками. Если задано значение «1 метр», все случайные точки будут дальше, чем на 1 метр, отстоять от ближайшей точки. | Field;Linear unit |
create_multipoint_output (дополнительно) |
Определяет, будет ли выходной класс объектов составным или состоящим из одной части объектом.
| Boolean |
multipoint_size (дополнительно) |
Если используется опция Создать мультиточечные выходные данные (Create Multipoint Output) (отмечено/MULTIPOINT), этот параметр задает количество случайных точек, которые будут помещены в каждую мультиточечную геометрию. | Long |
Пример кода
В следующем скрипте окна Python демонстрируется, как использовать инструмент Создать произвольно расположенные точки (CreateRandomPoints) с запуском из окна Python в ArcGIS:
import arcpy
arcpy.CreateRandomPoints_management("c:/data/project", "samplepoints", "c:/data/studyarea.shp", "", 500, "", "POINT", "")
На следующем автономном скрипте Python демонстрируется, как создавать произвольно расположенные точки со случайными значениями:
#Name: RandomPointsRandomValues.py
#Purpose: create random points with random values
# Import system modules
import arcpy, os, random
from arcpy import env
# Create random points in the features of a constraining feature class
# Number of points for each feature determined by the value in the field specified
outGDB = "C:/data/county.gdb"
outName = "randpeople"
conFC = "C:/data/county.gdb/blocks"
numField = "POP2000"
arcpy.CreateRandomPoints_management(outGDB, outName, conFC, "", numField)
# set workspace
env.workspace = "C:/data/county.gdb"
# Create fields for random values
fieldInt = "fieldInt"
fieldFlt = "fieldFlt"
arcpy.AddField_management(outName, fieldInt, "LONG") # add long integer field
arcpy.AddField_management(outName, fieldFlt, "FLOAT") # add float field
# Calculate random values between 1-100 in the new fields
arcpy.CalculateField_management(outName, fieldInt, "random.randint(1,100)","PYTHON","import random")
arcpy.CalculateField_management(outName, fieldFlt, "random.uniform(1,100)","PYTHON","import random")
В следующем автономном скрипте Python демонстрируются различные методы использования инструмента Создать произвольно расположенные точки (CreateRandomPoints):
#Name: RandomPoints.py
#Purpose: create several types of random points feature classes
# Import system modules
import arcpy, os
from arcpy import env
#set environment settings
env.overWriteOutput = True
# Create random points in an extent defined simply by numbers
outFolder = "C:/data"
numExtent = "0 0 1000 1000"
numPoints = 100
outName = "myRandPnts.shp"
env.outputCoordinateSystem = "Coordinate Systems/Projected Coordinate Systems/World/Miller Cylindrical (world).prj"
arcpy.CreateRandomPoints_management(outFolder, outName, "", numExtent, numPoints)
env.outputCoordinateSystem = ""
# Create random points in an extent defined by another feature class
outName = "testpoints.shp"
fcExtent = "C:/data/studyarea.shp"
arcpy.CreateRandomPoints_management(outFolder, outName, "", fcExtent, numPoints)
# Create random points in the features of a constraining feature class
# Number of points for each feature determined by the value in the field specified
outGDB = "C:/data/county.gdb"
outName = "randpeople"
conFC = "C:/data/county.gdb/blocks"
numField = "POP2000"
arcpy.CreateRandomPoints_management(outGDB, outName, conFC, "", numField)
#create random points in the features of a constraining
#feature class with a minimum allowed distance
outName = "constparcelpnts"
conFC = "C:/data/county.gdb/parcels"
numPoints = 10
minDistance = "5 Feet"
arcpy.CreateRandomPoints_management(outGDB, outName, conFC, "", numPoints, minDistance)
#Create random points with a multipoint output
outName = "randomMPs"
fcExtent = "C:/data/county.gdb/county"
numPoints = 100
numMP = 10
arcpy.CreateRandomPoints_management(outGDB, outName, "", fcExtent, numPoints, "", "MULTIPOINT", numMP)