Ближайший объект (Анализ)

Краткая информация

Вычисляет расстояние и дополнительную информацию о близости входных объектов и ближайшего объекта в другом слое или классе пространственных объектов.

Дополнительные сведения о вычислении близости инструментами геообработки

Иллюстрация

Иллюстрация инструмента Ближайший объект
Показан поиск ближайшего объекта по типу геометрии.

Использование

  • К входным объектам будут добавлены следующие поля. Если поля уже существуют, их значения обновляются. Эти названия полей можно настроить с помощью параметра Имена полей.

    • NEAR_FID— ObjectID пространственного объекта Если ближайшие объекты не найдены, значение будет равно -1.
    • NEAR_DIST— Расстояние между входным и ближайшим объектом. Если значением параметра Метод является Геодезический, и входные объекты заданы в географической системе координат, значения в этом поле указываются в линейных единицах измерения системы координат входных объектов или метрах. Если ближайшие объекты не найдены, значение будет равно -1.
    • NEAR_FC— Путь к исходному классу объектов, содержащему ближайший найденный объект. Будет использоваться имя слоя, если в качестве входных данных используются слои, и будет использоваться путь каталога к классу пространственных объектов, если вы используете пути в качестве входных данных. Это поле добавляется в выходную таблицу только в том случае, если указано несколько ближайших объектов. Если ближайший объект не найден, значение будет пустой строкой или null.

    Если отмечен параметр Местоположение, ко входным данным будут добавлены следующие поля. Если поля уже существуют, их значения обновляются. Единицы измерения значений в поле зависят от значения параметра Метод. Если для параметра Метод задано Плоскостной, значение дается в линейных единицах измерения системы координат входных объектов. Если выбран Геодезический метод, значение будет в географической системе координат, связанной с системой координат входных объектов.

    • NEAR_X- X-координата точки ближайшего объекта, наиболее близкой к входному объекту. Если ближайшие объекты не найдены, значение будет равно -1.
    • NEAR_Y- Y-координата точки ближайшего объекта, наиболее близкой к входному объекту. Если ближайшие объекты не найдены, значение будет равно -1.

    Если отмечен параметр Угол, ко входным объектам будет добавлено следующее поле. Значение поля обновится, если оно уже существует.

    • NEAR_ANGLE- угол, под которым направлена в точке с координатами FROM_X и FROM_Y линия, соединяющая входные объекты с ближайшим объектом. Если ближайшие объекты не найдены, или ближайший объект пересекается с входным объектом, значение будет равно 0.

  • Значения NEAR_FID и NEAR_DIST будут равны -1, если в пределах указанного радиуса поиска не будут найдены объекты.

  • И входными, и ближайшими объектами могут быть точки, мультиточки, линии или полигоны.

  • Значение параметра Ближайшие объекты может включать один или нескольких классов пространственных объектов с разными типами геометрии (точек, мультиточек, линий и полигонов).

  • Один и тот же класс объектов или слой можно использовать как в качестве входных объектов, так и в качестве ближайших объектов. В этом случае каждый входной объект будет исключаться из ближайших к нему объектов, поскольку в противном случае все объекты оказались бы ближайшими к самим себе.

  • Входными объектами может быть слой, в котором вы создали выборку. В процессе выполнения инструмента будут использоваться и обновляться объекты. У остальных объектов будут значения -1 во вновь созданных полях (таких как NEAR_FID и NEAR_DIST).

  • Когда несколько ближайших объектов находятся на равном кратчайшем расстоянии от входного объекта, один из них выбирается в качестве самого близкого объекта случайным образом.

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

    Более подробно о картографических проекциях и системах координат

  • Для визуализации местоположений NEAR_X и NEAR_Y выходную таблицу можно использовать в качестве входной для инструментов Создать слой событий XY или XY в линию.

  • Вы можете задать единицу измерения поля NEAR_DIST в параметре Единицы расстояния, например, метры, километры или мили.

Параметры

ПодписьОписаниеТип данных
Входные объекты

Входные объекты, которые могут быть точками, полилиниями, полигонами или мультиточками.

Feature Layer
Ближайшие объекты

Один или несколько слоев или классов пространственных объектов, содержащих потенциальные ближайшие объекты. Ближайшие объекты могут быть точками, полилиниями, полигонами или мультиточками. Если задано несколько слоев или классов объектов, во входную таблицу будет добавлено поле NEAR_FC, в котором для каждого ближайшего объекта будет указан путь к его исходному классу объектов. Входные и ближайшие объекты могут быть представлены одним и тем же классом объектов или слоем.

Feature Layer
Радиус поиска
(Дополнительный)

Радиус, который будет использоваться для поиска ближайших объектов. Если значение не указано, в вычисления будут включены все ближайшие объекты. Если расстояние введено, но единица измерения не задана или неизвестна, будут использоваться единицы системы координат входных объектов. Если опция Геодезический используется для параметра Метод, используйте линейные единицы, например, километры или мили.

Linear Unit
Местоположение
(Дополнительный)

Определяет, будут ли записаны в поля NEAR_X и NEAR_Y координаты x и y самой близкой точки ближайшего объекта.

  • Не отмечено – информация о местоположениях записываться не будет. Используется по умолчанию.
  • Отмечено – сведения о местоположениях будут записаны.
Boolean
Угол
(Дополнительный)

Определяет, будут ли вычислены и записаны в поле NEAR_ANGLE выходной таблицы угловые направления к ближайшим объектам. Угол до ближайшего объекта измеряет направление линии, соединяющей входной объект и ближайший объект по кратчайшему расстоянию. Если значением параметра Метод является Плоскостные, угол может принимать значения в диапазоне от -180° до 180°, где 0° – восток, 90° – север, 180° (или -180°) – запад и -90° – юг. Если используется метод Геодезические, угол будет принимать значения в диапазоне от -180° до 180°, где 0° – север, 90° – восток, 180° (или -180°) – юг и -90° – запад.

  • Не отмечено – угловые направления к ближайшим объектам вычисляться не будут, а поле NEAR_ANGLE не будет добавлено. Используется по умолчанию.
  • Отмечено – угловые направления будут вычисляться, и будет добавлено поле NEAR_ANGLE.
Boolean
Метод
(Дополнительный)

Указывает, будет ли использоваться кратчайший путь на сфероиде (геодезический) или на плоскости (планарный) для измерения расстояния. Рекомендуется использовать метод Геодезический, если данные хранятся в координатной системе, не подходящей для измерения расстояний (такой, как Web Mercator или любые географические системы координат), или если набор данных охватывает большую географическую область.

  • ПланарныйМежду объектами будет использоваться плоскостное расстояние. Это значение по умолчанию
  • ГеодезическийБудет использовано геодезическое расстояние между объектами. Этот метод учитывает кривизну сфероида и правильно обрабатывает данные вблизи полюсов и международной линии перемены дат.
String
Имена полей
(Дополнительный)

Имена атрибутивных полей, добавляемых в процессе обработки.

Если этот параметр не используется, либо любые поля, которые будут добавлены, исключаются из параметра, то будут использоваться имена полей по умолчанию.

По умолчанию будут добавлены поля NEAR_FID и NEAR_DIST; поля NEAR_X и NEAR_Y будут добавлены, если отмечен параметр Местоположение; поле NEAR_ANGLE будет добавлено, если отмечен параметр Угол; поле NEAR_FC будет добавлено, если используется несколько входных данных.

Value Table
Единицы измерения расстояния
(Дополнительный)

Задает единицы измерения значений для поля NEAR_DIST. Если единицы измерения не заданы, значения в поле NEAR_DIST будут храниться в единицах измерения системы координат входных объектов. Если входные данные хранятся в географической системе координат и используется геодезический метод, единицами измерения в поле NEAR_DIST будут метры.

  • КилометрыЕдиницами измерения будут километры.
  • МетрыЕдиницами измерения будут метры.
  • Международные морские милиЕдиницами измерения будут международные морские мили.
  • Сухопутные милиЕдиницами измерения будут сухопутные мили.
  • Международные ярдыЕдиницами измерения будут международные ярды.
  • Международные футыЕдиницами измерения будут международные футы.
  • Геодезические морские мили СШАЕдиницами измерения будут морские мили США.
  • Геодезические мили СШАЕдиницами измерения будут мили США.
  • Геодезические ярды СШАЕдиницами измерения будут ярды США.
  • Геодезические футы СШАЕдиницами измерения будут геодезические футы США.
String

Производные выходные данные

ПодписьОписаниеТип данных
Обновленные входные объекты

Обновленные входные объекты

Feature Layer

arcpy.analysis.Near(in_features, near_features, {search_radius}, {location}, {angle}, {method}, {field_names}, {distance_unit})
ИмяОписаниеТип данных
in_features

Входные объекты, которые могут быть точками, полилиниями, полигонами или мультиточками.

Feature Layer
near_features
[near_features,...]

Один или несколько слоев или классов пространственных объектов, содержащих потенциальные ближайшие объекты. Ближайшие объекты могут быть точками, полилиниями, полигонами или мультиточками. Если задано несколько слоев или классов объектов, во входную таблицу будет добавлено поле NEAR_FC, в котором для каждого ближайшего объекта будет указан путь к его исходному классу объектов. Входные и ближайшие объекты могут быть представлены одним и тем же классом объектов или слоем.

Feature Layer
search_radius
(Дополнительный)

Радиус, который будет использоваться для поиска ближайших объектов. Если значение не указано, в вычисления будут включены все ближайшие объекты. Если расстояние введено, но единица измерения не задана или неизвестна, будут использоваться единицы системы координат входных объектов. Если используется опция GEODESIC для параметра method, используйте линейные единицы измерения, такие как километры или мили.

Linear Unit
location
(Дополнительный)

Определяет, будут ли записаны в поля NEAR_X и NEAR_Y координаты x и y самой близкой точки ближайшего объекта.

  • NO_LOCATIONИнформация о местоположениях записываться не будет. Используется по умолчанию.
  • LOCATIONИнформация о местоположениях будет записываться.
Boolean
angle
(Дополнительный)

Определяет, будут ли вычислены и записаны в поле NEAR_ANGLE выходной таблицы угловые направления к ближайшим объектам. Угловое направление к ближайшему объекту – это направление линии, соединяющей входной и ближайший объекты по кратчайшему расстоянию. Если для параметра method выбран метод PLANAR, угловое направление будет принимать значения в диапазоне от -180° до 180°, где 0° – восток, 90° – север, 180° (или -180°) – запад и -90° – юг. Если используется метод GEODESIC, угловое направление будет принимать значения в диапазоне от -180° до 180°, где 0° – север, 90° – восток, 180° (или -180°) – юг и -90° – запад.

  • NO_ANGLEУгловые направления к ближайшим объектам не будут вычисляться и записываться. Используется по умолчанию.
  • ANGLEУгловые направления будут вычисляться и записываться в поле NEAR_ANGLE.
Boolean
method
(Дополнительный)

Указывает, будет ли использоваться кратчайший путь на сфероиде (геодезический) или на плоскости (планарный) для измерения расстояния. Рекомендуется использовать метод GEODESIC, если данные хранятся в системе координат, не подходящей для измерения расстояний (такой, как Web Mercator или люб ыегеографические системы координат), и если набор данных охватывает большую географическую область.

  • PLANARМежду объектами будет использоваться плоскостное расстояние. Это значение по умолчанию
  • GEODESICБудет использовано геодезическое расстояние между объектами. Этот метод учитывает кривизну сфероида и правильно обрабатывает данные вблизи полюсов и международной линии перемены дат.
String
field_names
[[property, fieldname],...]
(Дополнительный)

Имена атрибутивных полей, добавляемых в процессе обработки.

Если этот параметр не используется, либо любые поля, которые будут добавлены, исключаются из параметра, то будут использоваться имена полей по умолчанию.

По умолчанию будут добавлены поля NEAR_FID и NEAR_DIST; поля NEAR_X и NEAR_Y будут добавлены, если параметр location задан как LOCATION; поле NEAR_ANGLE будет добавлено, если параметр angle задан как ANGLE; поле NEAR_FC будет добавлено, если используется несколько входных данных.

Value Table
distance_unit
(Дополнительный)

Задает единицы измерения значений для поля NEAR_DIST. Если единицы измерения не заданы, значения в поле NEAR_DIST будут храниться в единицах измерения системы координат входных объектов. Если входные данные хранятся в географической системе координат и используется геодезический метод, единицами измерения в поле NEAR_DIST будут метры.

  • KilometersЕдиницами измерения будут километры.
  • MetersЕдиницами измерения будут метры.
  • NauticalMilesIntЕдиницами измерения будут международные морские мили.
  • MilesIntЕдиницами измерения будут сухопутные мили.
  • YardsIntЕдиницами измерения будут международные ярды.
  • FeetIntЕдиницами измерения будут международные футы.
  • NauticalMilesЕдиницами измерения будут морские мили США.
  • MilesЕдиницами измерения будут мили США.
  • YardsЕдиницами измерения будут ярды США.
  • FeetЕдиницами измерения будут геодезические футы США.
String

Производные выходные данные

ИмяОписаниеТип данных
out_feature_class

Обновленные входные объекты

Feature Layer

Пример кода

Near, пример 1 (окно Python)

Пример скрипта окна Python для использования функции Near в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data/city.gdb" 

# Find the nearest road from each house
arcpy.analysis.Near('houses', 'roads')
Near, пример 2 (автономный скрипт)

Этот скрипт 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.analysis.Near(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 демонстрирует, как конвертировать угол на ближайший объект в азимут.

# 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]}

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы