Proche (Analyse)

Synthèse

Calcule la distance et d’autres informations de proximité entre les entités en entrée et l’entité la plus proche dans une autre couche ou classe d’entités.

Pour en savoir plus sur le calcul de la proximité par les outils de géotraitement

Illustration

Illustration de l’outil Proche
Illustration de la recherche d’entités de proximité par type de géométrie.

Utilisation

  • Les champs suivants seront ajoutés à l’entrée. Si les champs existent déjà, les valeurs de champ sont mises à jour. Ces noms de champ peuvent être configurés à l’aide du paramètre Field Names (Noms de champ).

    • NEAR_FID—ID d’objet de l’entité la plus proche. Si aucune entité en entrée n’est trouvée, la valeur est -1.
    • NEAR_DIST—Distance entre l’entrée en entrée et l’entité de proximité. La valeur est exprimée dans l’unité linéaire du système de coordonnées des entités en entrée ou en mètres si le paramètre Method (Méthode) est défini sur Geodesic (Géodésique) et que l’entrée est dans un système de coordonnées géographiques. Si aucune entité en entrée n’est trouvée, la valeur est -1.
    • NEAR_FC— chemin d’accès de la classe d’entités source qui contient l’entité la plus proche trouvée. Le nom de couche est utilisé si des couches sont utilisées en entrée et le chemin de catalogue vers la classe d’entités sera utilisé si vous utilisez des chemins en entrée. Ce champ n’est ajouté à la table en sortie que lorsque plusieurs entités de proximité sont spécifiées. Si aucune entité de proximité n’est détectée, la valeur sera une chaîne vide ou nulle.

    Les champs suivants sont ajoutés à l’entrée si le paramètre Location (Localisation) est sélectionné. Si les champs existent déjà, les valeurs de champ sont mises à jour. Les unités de valeur de champ dépendent de la valeur du paramètre Method (Méthode). Si le paramètre Method (Méthode) est défini sur Planar (Planaire), la valeur de champ est exprimée dans l’unité linéaire du système de coordonnées de l’entité en entrée. S’il est défini sur Geodesic (Géodésique), la valeur de champ est exprimée dans le système de coordonnées géographiques associé au système de coordonnées de l’entité en entrée.

    • NEAR_X—Coordonnée X de l’emplacement de l’entité de proximité la plus proche de l’entité en entrée. Si aucune entité en entrée n’est trouvée, la valeur est -1.
    • NEAR_Y—Coordonnée Y de l’emplacement de l’entité de proximité la plus proche de l’entité en entrée. Si aucune entité en entrée n’est trouvée, la valeur est -1.

    Le champ suivant est ajouté aux entités en entrée si le paramètre Angle est sélectionné. La valeur de champ est actualisée si le champ existe déjà.

    • NEAR_ANGLE—Angle de la ligne aux emplacements FROM_X et FROM_Y qui relie les entités en entrée à l’entité de proximité. Si aucune entité en entrée n’est trouvée ou si l’entité de proximité intersecte l’entité en entrée, la valeur est 0.

  • Les valeurs de NEAR_FID et NEAR_DIST sont égales à -1 si aucune entité n’est détectée dans le rayon de recherche.

  • Les entités en entrée et les entités de proximité peuvent être de type point, multi-point, ligne ou polygone.

  • La valeur du paramètre Near Features (Entités de proximité) peuvent comprendre une ou plusieurs classes d’entités ayant des types de forme différents (ponctuelle, multi-point, linéaire ou surfacique).

  • La même classe d’entités ou couche peut être utilisée à la fois sur des entités en entrée et de proximité. Dans ce cas, l’entité en entrée en cours d’évaluation est exclue des candidats d’entités de proximité, afin d’éviter que toutes les entités soient les plus proches d’elles-mêmes.

  • Les entités en entrée peuvent être une couche sur laquelle vous avez réalisé une sélection. Les entités sélectionnées sont utilisées et actualisées au cours de l’exécution de l’outil. Les entités restantes ont les valeurs des nouveaux champs créés (par exemple NEAR_FID et NEAR_DIST) définis sur -1.

  • Lorsque plusieurs entités de proximité présentent la même distance la plus courte jusqu’à l’entité en entrée, l’une d’elles est choisie de manière aléatoire comme entité la plus proche.

  • Lorsque vous utilisez l’option Planaire pour le paramètre Méthode, utilisez une projection pour les entités en entrée qui soit adéquate pour une mesure de distance, par exemple une projection équidistante.

    En savoir plus sur les systèmes de coordonnées et les projections

  • Pour visualiser les emplacements NEAR_X et NEAR_Y, la table en sortie peut être utilisée en tant qu’entrée pour l’outil Make XY Event Layer (Générer une couche d’événements XY) ou XY To Line (XY vers ligne).

  • Vous pouvez définir une unité de mesure pour le champ NEAR_DIST (par exemple, des mètres, des kilomètres ou des milles) à l’aide du paramètre Unité de distance.

Paramètres

ÉtiquetteExplicationType de données
Entités en entrée

Les entités en entrée peuvent être de type point, polyligne, polygone ou multi-point.

Feature Layer
Entités de proximité

Une ou plusieurs couches d'entités ou classes d'entités contenant des candidats d'entités de proximité. Les entités de proximité peuvent être de type point, polyligne, polygone ou multi-points. Si plusieurs couches ou classes d’entités sont spécifiées, un champ nommé NEAR_FC est ajouté à la table en entrée pour stocker les chemins de la classe d’entités source contenant l’entité la plus proche trouvée. La même classe d’entités ou couche peut être utilisée à la fois pour les entités en entrée et les entités de proximité.

Feature Layer
Rayon de recherche
(Facultatif)

Rayon utilisé pour rechercher les entités de proximité. Si aucune valeur n’est spécifiée, toutes les entités de proximité sont prises en compte. Si une distance sans unité ou inconnue est spécifiée, les unités du système de coordonnées des entités en entrée sont utilisées. Si l’option Geodesic (Géodésique) est utilisée pour le paramètre Method (Méthode), utilisez une unité linéaire, telle que le kilomètre ou le mile.

Linear Unit
Emplacement
(Facultatif)

Spécifie si les coordonnées x et y de l’emplacement le plus proche de l’entité de proximité sont écrites dans les champs NEAR_X et NEAR_Y.

  • Non sélectionné : les emplacements ne sont pas écrits. Il s’agit de l’option par défaut.
  • Sélectionné : les emplacements sont écrits.
Boolean
Angle
(Facultatif)

Spécifie si les valeurs d’angle de proximité sont calculées et écrites dans un champ NEAR_ANGLE dans la table en sortie. Un angle de proximité mesure la direction de la ligne qui connecte une entité en entrée avec son entité la plus proche à leur emplacement le plus proche. Lorsque la méthode Planar (Planaire) est utilisée pour le paramètre Method (Méthode), l’angle se situe dans la plage -180° à 180°, avec 0° à l’est, 90° au nord, 180° (ou -180°) à l’ouest et -90° au sud. Lorsque la méthode Geodesic (Géodésique) est utilisée, l’angle se situe dans la plage -180° à 180°, avec 0° au nord, 90° à l’est, 180° (ou -180°) au sud et -90° à l’ouest.

  • Désactivé : l’angle de proximité n’est pas calculé et le champ NEAR_ANGLE n’est pas ajouté. Il s’agit de l’option par défaut.
  • Activé : l’angle de proximité est calculé et le champ NEAR_ANGLE est ajouté.
Boolean
Méthode
(Facultatif)

Indique s’il convient d’utiliser un plus court chemin sur un sphéroïde (géodésique) ou une méthode de distance Terre plate (plane). Il est recommandé d’utiliser la méthode Géodésique avec des données stockées dans un système de coordonnées non approprié pour les mesures de distance (par exemple, Web Mercator ou un système de coordonnées géographiques) et un jeu de données couvrant une zone géographique importante.

  • PlanaireUne distance planaire est utilisée entre les entités. Il s’agit de l’option par défaut.
  • GéodésiqueLa distance géodésique sera utilisée entre les entités. Cette méthode tient compte de la courbure du sphéroïde et gère correctement les données situées de la ligne de changement de date et près des pôles.
String
Noms de champs
(Facultatif)

Noms des champs attributaires qui vont être ajoutés pendant le traitement.

Si ce paramètre n’est pas utilisé ou si des champs allant être ajoutés sont exclus de ce paramètre, les noms de champ par défaut sont utilisés.

Par défaut, les champs NEAR_FID et NEAR_DISTsont ajoutés, les champs NEAR_X et NEAR_Y sont ajoutés lorsque le paramètre Location (Localisation) est activé, le champ NEAR_ANGLE est ajouté lorsque le paramètre Angle est activé et le champ NEAR_FC est ajouté lorsque plusieurs entrées sont utilisées.

Value Table
Unité de distance
(Facultatif)

Indique l’unité de mesure du champ NEAR_DIST. Si aucune unité de mesure n’est spécifiée, les valeurs dans le champ NEAR_DIST sont exprimées dans l’unité linéaire du système de coordonnées de l’entité en entrée. Si l’entrée est exprimée dans un système de coordonnées géographiques et que la méthode géodésique est utilisée, les unités du champ NEAR_DIST sont les mètres.

  • KilomètresLes kilomètres sont l’unité.
  • MètresLes mètres sont l’unité.
  • Milles nautiques internationauxL’unité est le mille nautique international.
  • Milles terrestresL’unité est le mille terrestre.
  • Yards internationauxL’unité est le yard international.
  • Pieds internationauxL’unité est le pied international.
  • Milles nautiques d’arpentage américainsL’unité est le mille nautique d’arpentage américain.
  • Miles d’arpentage américainsL’unité est le mille d’arpentage américain.
  • Yards d’arpentage américainsL’unité est le yard d’arpentage américain.
  • Pieds d’arpentage américainsL’unité est le pied d’arpentage américain.
String

Sortie obtenue

ÉtiquetteExplicationType de données
Entités en entrée mises à jour

Entités en entrée mises à jour.

Feature Layer

arcpy.analysis.Near(in_features, near_features, {search_radius}, {location}, {angle}, {method}, {field_names}, {distance_unit})
NomExplicationType de données
in_features

Les entités en entrée peuvent être de type point, polyligne, polygone ou multi-point.

Feature Layer
near_features
[near_features,...]

Une ou plusieurs couches d'entités ou classes d'entités contenant des candidats d'entités de proximité. Les entités de proximité peuvent être de type point, polyligne, polygone ou multi-points. Si plusieurs couches ou classes d’entités sont spécifiées, un champ nommé NEAR_FC est ajouté à la table en entrée pour stocker les chemins de la classe d’entités source contenant l’entité la plus proche trouvée. La même classe d’entités ou couche peut être utilisée à la fois pour les entités en entrée et les entités de proximité.

Feature Layer
search_radius
(Facultatif)

Rayon utilisé pour rechercher les entités de proximité. Si aucune valeur n’est spécifiée, toutes les entités de proximité sont prises en compte. Si une distance sans unité ou inconnue est spécifiée, les unités du système de coordonnées des entités en entrée sont utilisées. Si l’option GEODESIC est utilisée pour le paramètre method, utilisez une unité linéaire, telle que les kilomètres ou les miles.

Linear Unit
location
(Facultatif)

Spécifie si les coordonnées x et y de l’emplacement le plus proche de l’entité de proximité sont écrites dans les champs NEAR_X et NEAR_Y.

  • NO_LOCATIONLes informations liées aux emplacements ne sont pas écrites. Il s’agit de l’option par défaut.
  • LOCATIONLes informations liées aux emplacements sont écrites.
Boolean
angle
(Facultatif)

Spécifie si les valeurs d’angle de proximité sont calculées et écrites dans un champ NEAR_ANGLE dans la table en sortie. Un angle de proximité mesure la direction de la ligne qui connecte une entité en entrée avec son entité la plus proche à leurs emplacements les plus proches. Lorsque la méthode PLANAR est utilisée dans le paramètre method, l’angle se situe dans la plage -180° à 180°, avec 0° à l’est, 90° au nord, 180° (ou -180°) à l’ouest et -90° au sud. Lorsque la méthode GEODESIC est utilisée, l’angle se situe dans la plage -180° à 180°, avec 0° au nord, 90° à l’est, 180° (ou -180°) au sud et -90° à l’ouest.

  • NO_ANGLELa valeur d’angle de proximité n’est pas calculée ou écrite. Il s’agit de l’option par défaut.
  • ANGLELa valeur d’angle de proximité est calculée et écrite dans le champ NEAR_ANGLE.
Boolean
method
(Facultatif)

Indique s’il convient d’utiliser un plus court chemin sur un sphéroïde (géodésique) ou une méthode de distance Terre plate (plane). Il est recommandé d’utiliser la méthode GEODESIC avec des données stockées dans un système de coordonnées non approprié pour les mesures de distance (par exemple, Web Mercator ou un système de coordonnées géographiques) et un jeu de données couvrant une zone géographique importante.

  • PLANARUne distance planaire est utilisée entre les entités. Il s’agit de l’option par défaut.
  • GEODESICLa distance géodésique sera utilisée entre les entités. Cette méthode tient compte de la courbure du sphéroïde et gère correctement les données situées de la ligne de changement de date et près des pôles.
String
field_names
[[property, fieldname],...]
(Facultatif)

Noms des champs attributaires qui vont être ajoutés pendant le traitement.

Si ce paramètre n’est pas utilisé ou si des champs allant être ajoutés sont exclus de ce paramètre, les noms de champ par défaut sont utilisés.

Par défaut, les champs NEAR_FID et NEAR_DIST sont ajoutés, les champs NEAR_X et NEAR_Y sont ajoutés lorsque le paramètre location est défini sur LOCATION, le champ NEAR_ANGLE est ajouté lorsque le paramètre angle est défini sur ANGLE et le champ NEAR_FC est ajouté lorsque plusieurs entrées sont utilisées.

Value Table
distance_unit
(Facultatif)

Indique l’unité de mesure du champ NEAR_DIST. Si aucune unité de mesure n’est spécifiée, les valeurs dans le champ NEAR_DIST sont exprimées dans l’unité linéaire du système de coordonnées de l’entité en entrée. Si l’entrée est exprimée dans un système de coordonnées géographiques et que la méthode géodésique est utilisée, les unités du champ NEAR_DIST sont les mètres.

  • KilometersLes kilomètres sont l’unité.
  • MetersLes mètres sont l’unité.
  • NauticalMilesIntL’unité est le mille nautique international.
  • MilesIntL’unité est le mille terrestre.
  • YardsIntL’unité est le yard international.
  • FeetIntL’unité est le pied international.
  • NauticalMilesL’unité est le mille nautique d’arpentage américain.
  • MilesL’unité est le mille d’arpentage américain.
  • YardsL’unité est le yard d’arpentage américain.
  • FeetL’unité est le pied d’arpentage américain.
String

Sortie obtenue

NomExplicationType de données
out_feature_class

Entités en entrée mises à jour.

Feature Layer

Exemple de code

1er exemple d’utilisation de la fonction Proche (fenêtre Python)

Le script de fenêtre interactif Python ci-dessous illustre l’utilisation de la fonction Near en mode immédiat.

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

# Find the nearest road from each house
arcpy.analysis.Near('houses', 'roads')
Exemple 2 d’utilisation de la fonction Proche (script autonome)

Le script Python ci-dessous illustre l’utilisation de la fonction Near dans un script autonome.

# 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])
Exemple 3 d’utilisation de la fonction Proche (script autonome)

Le script Python ci-dessous illustre la méthode de conversion de l’angle de proximité vers l’azimut.

# 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.
Exemple 4 d’utilisation de la fonction Proche (script autonome)

Le script Python ci-dessous illustre le post-traitement avec la sortie dérivée de la fonction Near. Le script détecte les entités en entrée les plus proches de chaque entité.

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