Cercano (Análisis)

Nivel de licencia:BasicStandardAdvanced

Resumen

Calcula la distancia y la información de proximidad adicional entre entidades de entrada y la entidad más cercana en otra clases de entidad o capa.

Más información acerca del cálculo de la proximidad en las herramientas de geoprocesamiento

Ilustración

Buscar una entidad cercana por tipo de geometría

Uso

Sintaxis

Near_analysis (in_features, near_features, {search_radius}, {location}, {angle}, {method})
ParámetroExplicaciónTipo de datos
in_features

Las entidades de entrada que pueden ser de tipo punto, polilínea, polígono o multipunto.

Feature Layer
near_features
[near_features,...]

Una o más capas de entidad o clases de entidad que contienen candidatos de entidades próximas. Las entidades próximas pueden ser de tipo punto, polilínea, polígono o multipunto. Si se especifican varias capas o clases de entidades, se agrega un nuevo campo denominado NEAR_FC a la tabla de entrada que almacenará las rutas de la clase de entidad de origen que contiene las entidades más próximas detectadas. La misma capa o clase de entidad se puede usar tanto como entidades de entrada como entidades próximas.

Feature Layer
search_radius
(Opcional)

El radio que se utiliza para buscar entidades próximas. Si no se especifica ningún valor, se tendrán en cuenta las entidades próximas. Si se especifica una distancia, pero no se especifica ninguna unidad o se especifica Desconocido, se utilizan las unidades del sistema de coordenadas de las entidades de entrada. Si se utiliza la opción GEODESIC, debería usarse una unidad lineal, como Kilómetros o Millas.

Linear unit
location
(Opcional)

Especifica si las coordenadas x e y de la ubicación más cercana de la entidad próxima se escribirán en los campos NEAR_X y NEAR_Y.

  • NO_LOCATION La información de ubicación no se escribirá en la tabla de salida. Esta es la opción predeterminada.
  • LOCATION La información de ubicación se escribirá en la tabla de salida.
Boolean
angle
(Opcional)

Especifica si se calculará el ángulo cercano y si se escribirá en un campo nuevo NEAR_ANGLE en la tabla de salida. Un ángulo próximo mide la dirección de la línea que conecta una entidad de entrada a la entidad más próxima en las ubicaciones más cercanas. Cuando el método PLANAR se utiliza en el parámetro method, el ángulo se encuentra dentro del intervalo de -180° a 180°, con 0° al este, 90° al norte, 180° (o -180°) al oeste, y -90° al sur. Cuando se utiliza el método GEODESIC, el ángulo se encuentra dentro del intervalo de -180° a 180°, con 0° al norte, 90° al este, 180° (o -180°) al sur, y -90° al oeste.

  • NO_ANGLELos valores del ángulo cercano no se escribirán. Esta es la opción predeterminada.
  • ANGLELos valores del ángulo cercano se escribirán en el campo NEAR_ANGLE.
Boolean
method
(Opcional)

Determina si se utiliza una ruta más corta en un método esferoide (geodésico) o una tierra plana (planar). Se sugiere enfáticamente utilizar el método GEODESIC con datos almacenados en un sistema de coordenadas que no sea adecuado para las mediciones de distancias (por ejemplo, Web Mercator o cualquier sistema de coordenadas geográficas), y cualquier análisis que abarque una extensa área geográfica.

  • PLANARUtiliza distancias planares entre las entidades. Esta es la opción predeterminada.
  • GEODESICUtiliza distancias geodésicas entre las entidades. Este método tiene en cuenta la curvatura del esferoide y trata correctamente los datos cercanos a la línea de cambio de fecha y los polos.
String

Ejemplo de código

Ejemplo 1 de Cerca (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python interactiva demuestra cómo utilizar la función Cerca en modo inmediato.

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

## find the nearest road from each house
arcpy.Near_analysis('houses', 'roads')
Ejemplo 2 de Cerca (secuencia de comandos de Python independiente)

La siguiente secuencia de comandos Python demuestra cómo utilizar la función Cerca en una secuencia de comandos independiente.

# Name: Near.py
# Description: Finds nearest features from input feature class to near feature class.

import arcpy
from arcpy import env

# Set workspace environment
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 ex:
    print ex.args[0]
Ejemplo 3 de Cerca (secuencia de comandos de Python independiente)

La siguiente secuencia de comandos de Python demuestra cómo convertir el ángulo cercano de acimut.

# 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.
Ejemplo 4 de Cerca (secuencia de comandos de Python independiente)

Demuestra el procesamiento posterior con la salida derivada de la herramienta Cerca. La secuencia de comandos busca, para cada entidad cercana, de cuáles entidades de entrada está más cerca.

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

Entornos

Temas relacionados

Información sobre licencias

ArcGIS for Desktop Basic: No
ArcGIS for Desktop Standard: No
ArcGIS for Desktop Advanced: Sí
5/9/2014