Краткая информация
Вычисляет расстояние и дополнительную информацию о близости входных объектов и ближайшего объекта в другом слое или классе пространственных объектов.
Дополнительные сведения о вычислении близости в инструментах геообработки
Рисунок
Использование
К входным объектам будут добавлены следующие поля. Если поля уже существуют, их значения обновляются.
Имя поля Описание NEAR_FID Object ID самого близкого объекта. Если ближайшие объекты не найдены, значение будет равно -1.
NEAR_DIST Расстояние между входным и ближайшим объектом. Если значением параметра Метод является GEODESIC, и входные объекты заданы в географической системе координат, значения в этом поле указываются в линейных единицах измерения системы координат входных объектов или метрах. Если ближайшие объекты не найдены, значение будет равно -1.
NEAR_FC Путь к классу объектов, содержащему ближайший объект. Это поле добавляется в выходную таблицу только в том случае, если указано несколько Ближайших объектов (Near Features). Если ближайший объект не найден, значение будет пустой строкой или null.
Если отмечен параметр Местоположение (Location) (параметр location в Python имеет значение LOCATION), к входным объектам будут добавлены следующие поля. Если поля уже существуют, их значения обновляются. Единицы измерения значений полей зависят от метода, заданного параметром Метод. Если выбрано Плоскостные (Planar), значение дается в линейных единицах измерения системы координат входных объектов. Если выбрано Геодезические (Geodesic), значение дается в географической системе координат, связанной с системой координат входных объектов.
Имя поля Описание NEAR_X X-координата точки на ближайшем объекте, наиболее близко расположенной к входному объекту. Если ближайшие объекты не найдены, значение будет равно -1.
NEAR_Y Y-координата точки на ближайшем объекте, наиболее близко расположенной к входному объекту. Если ближайшие объекты не найдены, значение будет равно -1.
Если отмечен параметр Угол (параметр angle в Python имеет значение ANGLE), к входным объектам будет добавлено следующее поле. Если поля уже существуют, их значения обновляются.
Поле Описание NEAR_ANGLE Угол, под которым направлена в точке с координатами FROM_X и FROM_Y линия, соединяющая входные объекты с ближайшим объектом. Если ближайшие объекты не найдены, или ближайший объект пересекается с входным объектом, значение будет равно 0.
Если в пределах радиуса поиска не найдено пространственных объектов, значения NEAR_FID и NEAR_DIST будут равны -1.
И входные, и ближайшие пространственные объекты могут быть точками, мультиточками, линиями или полигонами.
Ближайшие объекты могут включать один или нескольких классов пространственных объектов с разными типами геометрии (точек, мультиточек, линий и полигонов).
Входные и ближайшие объекты могут быть представлены одним и тем же классом объектов или слоем. В этом случае каждый входной объект исключается из ближайших к нему объектов, поскольку в противном случае все объекты оказались бы ближайшими к самим себе.
-
Входные объекты могут являться слоем, на котором вы выполняете выбор. Выбранные объекты будут использоваться и обновляться при выполнении этого инструмента. Вновь созданные поля (NEAR_FID и NEAR_DIST) будут иметь значение -1.
Когда несколько ближайших объектов находятся на равном кратчайшем расстоянии от входного объекта, один из них выбирается в качестве самого близкого объекта случайным образом.
Когда значением параметра Метод является Плоскостные, входные объекты должны находиться в проекции, позволяющей корректно измерять расстояния, например, в равнопромежуточной проекции.
Более подробно о географических системах координат и системах координат проекции
Для визуализации местоположений FROM_X, FROM_Y, NEAR_X и NEAR_Y выходную таблицу можно использовать в качестве входной для инструментов Создать слой событий XY или XY в линию.
Синтаксис
Near_analysis (in_features, near_features, {search_radius}, {location}, {angle}, {method})
Параметр | Объяснение | Тип данных |
in_features | Входные объекты, которые могут быть точечного, полилинейного, полигонального или мультиточечного типа. | Feature Layer |
near_features [near_features,...] | Один или несколько слоев или классов пространственных объектов, содержащих потенциальные ближайшие объекты. Ближайшие объекты могут быть точками, полилиниями, полигонами или мультиточками. Если задано несколько слоев или классов объектов, во входную таблицу добавляется поле NEAR_FC, в котором для каждого ближайшего объекта будет указан путь к его исходному классу объектов. Входные и ближайшие объекты могут быть представлены одним и тем же классом объектов или слоем. | Feature Layer |
search_radius (дополнительно) | Радиус поиска ближайших объектов. Если значение не указано, в вычисления включаются все ближайшие объекты. Если расстояние введено, но единица измерения не задана или неизвестна, используются единицы системы координат входных объектов. Если используется опция Геодезические (Geodesic), должна использоваться линейная единица измерения, такая как километры или мили. | Linear unit |
location (дополнительно) | Определяет, будут ли записаны в поля NEAR_X и NEAR_Y координаты x и y самой близкой точки ближайшего объекта.
| Boolean |
angle (дополнительно) | Определяет, будут ли вычислены и записаны в поле NEAR_ANGLE выходной таблицы угловые направления к ближайшим объектам. Угол до ближайшего объекта измеряет направление линии, соединяющей входной объект и ближайший объект по кратчайшему расстоянию. Если значением параметра method является PLANAR, угол может принимать значения в диапазоне от -180° до 180°, где 0° – восток, 90° – север, 180° (или -180°) – запад и -90° – юг. Если используется метод GEODESIC, угол может принимать значения в диапазоне от -180° до 180°, где 0° – север, 90° – восток, 180° (или -180°) – юг и -90° – запад.
| Boolean |
method (дополнительно) | Определяет, будет ли инструмент использовать кратчайший путь на сфероиде (geodesic) или на плоской земной поверхности (planar). Настоятельно рекомендуется использовать метод Геодезические (Geodesic), если данные хранятся в координатной системе, не подходящей для измерения расстояний (такой как Web Mercator и все географические системы координат), или если анализ охватывает большую географическую область.
| String |
Пример кода
Near, пример 1 (окно Python)
Пример скрипта Python для функции Near с запуском из окна Python в ArcGIS.
import arcpy
arcpy.env.workspace = "C:/data/city.gdb"
## find the nearest road from each house
arcpy.Near_analysis('houses', 'roads')
Near, пример 2 (автономный скрипт Python)
Пример скрипта Python для функции Near с запуском в автономном режиме.
# Name: Near.py
# Description: Finds nearest features from input feature class to near feature class.
import arcpy
# Set workspace environment
arcpy.env.workspace = "C:/data/city.gdb"
try:
# set local variables
in_features = "houses"
near_features = "parks"
# find features only within search radius
search_radius = "5000 Meters"
# find location nearest features
location = "LOCATION"
# avoid getting angle of neares features
angle = "NO_ANGLE"
# execute the function
arcpy.Near_analysis(in_features, near_features, search_radius, location, angle)
# get geoprocessing messages
print(arcpy.GetMessages())
except arcpy.ExecuteError:
print(arcpy.GetMessages(2))
except Exception as err:
print(err.args[0])
Near, пример 3 (автономный скрипт Python)
Следующий скрипт Python демонстрирует, как конвертировать угол на ближайший объект в азимут.
# Name: near_angle_to_azimuth.py
import arcpy
# Near tool does not calculate angle in azimuths
# This script, using the output of the tool, converts the angles
# to azimuth angles.
in_table = r"C:/data/city.gdb/near_table"
angles = arcpy.da.SearchCursor(in_table, ["NEAR_ANGLE"])
azimuth_angles = []
with angles as rows:
for row in rows:
angle = row[0]
if angle <= 180 and angle > 90:
azimuth_angles.append(360.0 - (angle - 90))
else:
azimuth_angles.append(abs(angle - 90))
# Use these azimuth angles as necessary.
Near, пример 4 (автономный скрипт Python)
Демонстрирует последующую обработку данных, полученных на выходе инструмента Ближайший объект (Near) Скрипт ищет для каждого ближайшего объекта, к каким входным объектам он ближе всего.
# Name: features_closest_to_input.py
"""
This script finds, for each input feature, a list of near feature it is closest to.
If near features 6, 7, 10 are closest to input feature 3 then the
resulting dictionary will have a list [6, 7, 10] as value for key 3
"""
import os
import arcpy
in_fc = r"C:\data\cities.gdb\cities_many"
# create a dictionary to hold the list of near ids for each input id
nearest_dict = dict()
with arcpy.da.SearchCursor(in_fc, ["OID@", "NEAR_FID"]) as rows:
for row in rows:
nearest_id = row[0] # get OID value for that row
input_id = row[1] # get NEAR_FID value
if input_id in nearest_dict:
# if a dict key already exists, append near id to value list for that key
nearest_dict[input_id].append(nearest_id)
else:
# if the key does not exist then create a new list with near id
# and add it to the dictionary
nearest_dict[input_id] = [nearest_id]
print(nearest_dict)
# output will look like:
# {1: [13, 28], 2: [2, 9, 14, 20, 22], 3: [11, 12, 24, 25]}
Параметры среды
Информация о лицензировании
- ArcGIS for Desktop Basic: Нет
- ArcGIS for Desktop Standard: Нет
- ArcGIS for Desktop Advanced: Да