フィーチャのエッジマッチ(Edgematch Features) (編集)
サマリ
指定されたエッジマッチ リンクにより、形状を空間的に調整し、入力ライン フィーチャを変更します。それによって入力ライン フィーチャは、隣接するデータセット内のラインと接続されます。
図
使用法
-
このツールは、[エッジマッチ リンクの生成(Generate Edgematch Links)] ツールの実行後に使用することを目的としています。このツールは、[エッジマッチ リンクの生成(Generate_Edgematch_Links)] ツールが作成した入力リンク フィーチャで導くことによって、入力ラインの形状を空間的に調整します。それによって入力ラインは、エッジ エリアに沿って隣接するライン フィーチャと正しく接続されます。入力リンク フィーチャには、SRC_FID フィールドと ADJ_FID フィールドが存在する必要があります。
-
このツールは、エッジマッチ リンクから新しい接続位置を取得し、その新しい位置で接続されるように、対応するフィーチャを変更します。どの入力([入力フィーチャ]、[隣接フィーチャ]、[境界線フィーチャ])を指定したかに応じて新しい接続位置が決定され、それに従って関連するフィーチャが調整されます。この調整によって、以下で説明するように、必ず一致するフィーチャが接続されます。
- [入力フィーチャ] のみを指定した場合、エッジマッチ リンクの端点が新しい接続位置として選択されます。エッジマッチ リンクと関連付けられた(つまり、フィーチャ ID がリンクの SRC_FID 値と一致する)入力ラインが、リンクの端点で終わるように調整されます。その結果、入力ラインは、エッジマッチ リンクの生成で使用された目的の隣接フィーチャと確実に接続されます。
- [入力フィーチャ] と [隣接フィーチャ] の両方を指定した場合、エッジマッチ リンクの中間点が新しい接続位置として選択されます。関連する入力ラインおよび隣接ライン(つまり、フィーチャ ID がリンクの ADJ_FID 値に一致するライン)の両方が、リンクの中点で終わり、接続されるように調整されます。
- [境界線フィーチャ] を追加した場合、[隣接フィーチャ] も指定する必要があります。ツールは、リンクの中間点に最も近い境界線上の位置を、新しい接続位置として検出します。エッジマッチ リンクに関連付けられた入力ラインと隣接ラインの両方が、境界線上の位置で接続されるように調整されます。
[方法] パラメータには、フィーチャを調整するためのエッジマッチ オプションが 3 つあります。各オプションは、上で説明したように、入力フィーチャのみ、または入力フィーチャと隣接フィーチャの両方に適用されます。
- MOVE_ENDPOINT - 入力ラインの端点を新しい接続位置に移動します。
- ADD_SEGMENT - 新しい接続位置で終わるように、入力ラインの端点に直線セグメントを追加します。
- ADJUST_VERTICES - ラインの端点を新しい接続位置に調整します。他の頂点も、ラインの反対側の端点に向かって位置の変化が徐々に減少するように調整されます。
このツールを使用すると入力データが変更されます。詳しい説明および不適切なデータ変更を防ぐための方法については、「出力を伴わないツール」をご参照ください。
すべての入力は、同じ座標系に存在する必要があります。
構文
パラメータ | 説明 | データ タイプ |
in_features |
調整対象の入力ライン フィーチャ。 | Feature Layer |
in_link_features |
エッジマッチ リンクを表す入力ライン フィーチャ。 | Feature Layer |
method (オプション) |
入力フィーチャのみ、または入力フィーチャと隣接フィーチャの両方を新しい接続位置に調整するエッジマッチ方法。
| String |
adjacent_features (オプション) |
入力フィーチャに隣接するライン フィーチャ。これを指定した場合、入力フィーチャと隣接フィーチャの両方が、新しい接続位置(エッジマッチ リンクの中間点、またはリンクの中間点に最も近い境界線フィーチャ(指定した場合)上の位置のいずれか)で接続されるように調整されます。境界線フィーチャを指定した場合、隣接フィーチャを指定する必要があります。 | Feature Layer |
border_features (オプション) |
入力フィーチャと隣接フィーチャ間の境界線を表すライン フィーチャまたはポリゴン フィーチャ。境界線フィーチャを指定した場合、隣接フィーチャも指定する必要があります。入力フィーチャと隣接フィーチャの両方が、リンクの中間点に最も近い境界線フィーチャ上の新しい接続位置で接続されるように調整されます。 | Feature Layer |
コードのサンプル
次の Python ウィンドウ スクリプトで、EdgematchFeatures(フィーチャのエッジマッチ)関数をイミディエイト モードで使用する方法を示します。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.EdgematchFeatures_edit("cityA_Roads.shp", "em_Links.shp"
"MOVE_ENDPOINT")
次のスタンドアロン Python スクリプトは、EdgematchFeatures(フィーチャのエッジマッチ)関数をスクリプティング環境に適用する例を示しています。
# Name: EdgematchFeatures_example_script2.py
# Description: Performs edgematching spatial adjustment using links produced by
# GenerateEdgematchLinks. The links go from input features to adjacent
# features. The links are then checked for intersecting conditions, which
# might not be desired; they are finally used to adjust input features
# (a copy is made) to connect with the matched adjacent feautures.
# Author: Esri
# -----------------------------------------------------------------------
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.overwriteOutput = True
env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"
# Set local variables
inFeatures = "roads1"
adjFeatures = "roads2"
gelOutput = "gelinks_out"
search_distance = "200 Feet"
match_fields = "NAME ROAD_NAME"
qaLocations = "qa_locations"
# Generate rubbersheet links
arcpy.GenerateEdgematchLinks_edit(inFeatures, adjFeatures, gelOutput, search_distance, match_fields)
# ====================================================================================
# Note 1: The result of GenerateEdgematchLinks may contain errors; see tool reference.
# Inspection and editing may be necessary to ensure correct links before using
# them for edgematching.
#
# One of the possible errors are undesired intersecting or touching links.
# Their locations can be found by the process below.
# ====================================================================================
# Find locations where links intersect or touch; the result contains coincident points
arcpy.Intersect_analysis(gelOutput, qaLocations, "", "", "POINT")
# Delete coincident points
arcpy.DeleteIdentical_management(qaLocations, "Shape")
# ====================================================================================
# Note 2: At this point you can manually inspect locations in qaLocations; delete or
# modify links as needed.
# ====================================================================================
# Make a copy of the inFeatures for edgematching
inFeature_Copy = inFeatures + "_Copy"
arcpy.CopyFeatures_management(inFeatures, inFeature_Copy)
# Use the links to adjust the copy of the input features
arcpy.EdgematchFeatures_edit(inFeature_Copy, gelOutput, "MOVE_ENDPOINT")