ラベル | 説明 | データ タイプ |
入力フィーチャ | ジオメトリの問題をチェックする対象となる 1 つ以上のフィーチャクラスまたはフィーチャ レイヤー。 | Feature Layer |
出力テーブル | 特定された問題のレポート (テーブル形式)。 | Table |
整合チェック方法 (オプション) | ジオメトリの問題の識別に使用するジオメトリ整合チェック方法を指定します。
| String |
サマリー
フィーチャクラスに存在するジオメトリの問題についてレポートを作成します。
ジオメトリの問題の詳細、ソフトウェアに与える影響、および可能性のある原因については、「ジオメトリのチェックと修正」をご参照ください。
使用法
有効な入力形式は、シェープファイルおよびファイル ジオデータベースまたはエンタープライズ ジオデータベースに保存されているフィーチャクラスです。エンタープライズ ジオデータベースに格納されたフィーチャクラスでは、次の空間タイプがサポートされています。
- Microsoft SQL Server ジオメトリおよびジオグラフィ
- PostgreSQL PostGIS ジオメトリおよびジオグラフィ
- Oracle SDO ジオメトリ
[出力テーブル] には、発見されたジオメトリの問題ごとにレコードが格納されます。問題が見つからなかった場合は、テーブルは空になります。
PROBLEM コードを含む [出力テーブル] コンテンツは英語で記述されます。
ポイント フィーチャの場合は、NULL ジオメトリの問題だけが適用されます。
ジオメトリの問題があると報告されたフィーチャを確認しやすくするために、[テーブルの結合 (Add Join)] ツールを使用して、入力の OBJECTID または FID フィールドと出力テーブルの FEATURE_ID フィールドとともに、[入力フィーチャ] を [出力テーブル] に結合することができます。
Esri の整合チェック方法では、Esri Simplify メソッドを使用してジオメトリがトポロジ的に正しいことを確認します。エンタープライズ ジオデータベースに保存されているデータでは、Esri の検証のみが利用可能です。
OGC (Open Geospatial Consortium) の整合チェック方法では、「OpenGIS Implementation Standard for Geographic information – simple feature access – Part 1: common architecture」で定義された OGC 仕様にジオメトリが準拠していることを確認します。
[OGC] 方式を使用してフィーチャのジオメトリを修正した後に続けて編集や変更を行うと、ジオメトリが OGC 仕様に準拠しなくなる可能性があります。フィーチャの変更後は、[ジオメトリのチェック (Check Geometry)] ツールを使用して、ジオメトリの問題が新たに発生していないか確認してください。必要な場合は、[ジオメトリの修正 (Repair Geometry)] ツールを再実行します。
OGC simplify 方式では、ベジェ曲線、円弧、楕円円弧などの非線形線分がサポートされていません。これらのタイプの線分は、[ジオメトリのチェック (Check Geometry)] の実行前に [頂点の挿入 (Densify)] ツールを使用して高密度化する必要があります。[頂点の挿入 (Densify)] ツールの実行時に非線形線分が不可逆的に変更されるのを防ぐために、先にデータのコピーを作成しておきます。データに非線形線分が含まれているかどうかを判別するには、[ジオメトリ属性の追加 (Add Geometry Attributes)] ツールを使用します。
このツールで特定された問題には、次の方法で対処することができます。
- ジオメトリの問題があるフィーチャを手動で編集して修正します。一部の問題は、編集によって修正することができません。
- [ジオメトリの修正 (Repair Geometry)] ツールを使用します。エンタープライズ データベースに格納されたデータに関連する問題の中には、ArcGIS ツールで修復できないものもあります。
[出力テーブル] には次のフィールドがあります。
- CLASS - 問題が見つかったフィーチャクラスの絶対パスおよび名前
- FEATURE_ID - ジオメトリの問題があるフィーチャのフィーチャ ID (FID) またはオブジェクト ID (OID)
- PROBLEM - 問題の簡単な説明
PROBLEM フィールドには、次のコードの 1 つが格納されます。
- Short segment - ジオメトリに関連付けられている空間参照のシステム単位で許可されている長さよりも短い線分があります。
- Null geometry - フィーチャにジオメトリがありません。または Shape フィールドにデータがありません。
- Incorrect ring ordering - ポリゴンのトポロジはシンプルですが、リングが正しい方向で配置されていない可能性があります (外部リングが時計回りで、内部リングが反時計回り)。
- Incorrect segment orientation - 個々の線分の方向が同じではありません。線分iの終点は線分i+1の始点と同じになる必要があります。
- Self intersections - ポリゴンは自己交差してはいけません。
- Unclosed rings - リングの最後の線分の終点は、最初の線分の始点と同じになる必要があります。
- Empty parts - ジオメトリに複数のパートがあり、そのうちの 1 つが空です (ジオメトリがありません)。
- Duplicate vertex - ジオメトリに、同じ座標を持つ複数の頂点が連続的に配置されています。
- Mismatched attributes - 線分の端点の Z 座標または M 座標が、一致する必要がある次の線分の端点の Z 座標または M 座標に一致しません。
- Discontinuous parts - ジオメトリのパートの 1 つが、接続されていないパートまたは不連続のパートで構成されています。
- Empty Z values - Z 値が空 (NaN など) の頂点が 1 つ以上ジオメトリに存在します。
- Bad envelope - エンベロープがジオメトリの座標範囲に一致しません。
- Bad dataset extent - データセットの範囲プロパティに、データセットのすべてのフィーチャが含まれていません。この問題の場合、FEATURE_ID は -1 になります。
エンタープライズ ジオデータベースに格納されたデータの場合、PROBLEM フィールドには次のいずれかのコードが含まれます。
- NEEDS_REORDERING - 形状は問題ありませんが、順序を変更する必要があるか、重複ポイントを削除する必要があります。
- SE_INVALID_ENTITY_TYPE - 無効なエンティティ タイプ。
- SE_SHAPE_INTEGRITY_ERROR - 形状の整合性エラー。
- SE_INVALID_SHAPE_OBJECT - 指定されたシェープ オブジェクト ハンドルが無効です。
- SE_COORD_OUT_OF_BOUNDS - 指定した座標が有効な座標範囲を超えています。
- SE_POLY_SHELLS_OVERLAP - 2 つのドーナツまたは 2 つの外部シェルが重なっています。
- SE_TOO_FEW_POINTS - ポイントの数がフィーチャに必要な数より少なくなっています。
- SE_INVALID_PART_SEPARATOR - パート セパレーターの位置が不正です。
- SE_INVALID_POLYGON_CLOSURE - ポリゴンが正しく閉じていません。
- SE_INVALID_OUTER_SHELL - ポリゴンの外部シェルがすべてのドーナツのパートを完全には囲んでいません。
- SE_ZERO_AREA_POLYGON - ポリゴン シェルにエリアがありません。
- SE_POLYGON_HAS_VERTICAL_LINE - ポリゴン シェルに縦線が含まれています。
- SE_OUTER_SHELLS_OVERLAP - マルチパート エリアに重複部分があります。
- SE_SELF_INTERSECTING - ラインストリングまたはポリゴンの境界は自己交差しています。
パラメーター
arcpy.management.CheckGeometry(in_features, out_table, {validation_method})
名前 | 説明 | データ タイプ |
in_features [in_feature,...] | ジオメトリの問題をチェックする対象となる 1 つ以上のフィーチャクラスまたはフィーチャ レイヤー。 | Feature Layer |
out_table | 特定された問題のレポート (テーブル形式)。 | Table |
validation_method (オプション) | ジオメトリの問題の識別に使用するジオメトリ整合チェック方法を指定します。
| String |
コードのサンプル
次の Python ウィンドウ スクリプトは、ファイル ジオデータベースでイミディエイト モードで CheckGeometry 関数を使用する方法を示しています。
import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.CheckGeometry_management(["contours", "roads", "vegetation"], "CheckGeom_Result")
次のスタンドアロン スクリプトでは、ファイル ジオデータベース内のすべてのフィーチャクラスにループをかけて CheckGeometry 関数を使用します。
# BatchCheckGeometry.py
# Description: Loops through all the feature classes in a geodatabase, and
# generates a report of the problems encountered with feature
# geometry.
# Import modules
import arcpy
import os
# The geodatabase in which the feature classes will be checked
arcpy.env.workspace = "C:\\data\\St_Lucia.gdb"
out_table = "checkGeometryResult"
# A variable that will hold the list of all the feature classes
# inside the geodatabase
fc_list = []
# Identify all feature classes in the geodatabase
for path, dirnames, fcs in arcpy.da.Walk(arcpy.env.workspace,
datatype='FeatureClass'):
for fc in fcs:
fc_list.append(os.path.join(path, fc))
print("Running the check geometry tool on {} feature classes".format(
len(fc_list)))
arcpy.CheckGeometry_management(fc_list, out_table)
print("{} geometry problems found, see {} for details.".format(
arcpy.GetCount_management(out_table)[0], out_table))
ライセンス情報
- Basic: Yes
- Standard: Yes
- Advanced: Yes