CityEngine ルールからフィーチャを生成 (Features From CityEngine Rules) (3D Analyst)

3D Analyst のライセンスで利用可能。

サマリー

ArcGIS CityEngine で作成するルールを使用して、既存の 2D および 3D 入力フィーチャから 3D ジオメトリを生成します。

使用法

  • 入力フィーチャは、ポイント、ポリゴンまたはマルチパッチである必要があります。 CityEngine のルール パッケージ ファイル (*.rpk) ファイル内にある @StartRule は、対象の入力フィーチャのタイプ (ポイントの場合は @InPoint アノテーション、ポリゴンの場合は @InPolygon、マルチパッチ フィーチャの場合は @InMesh) を指定する必要があります。 いずれかに @StartRule の注釈が付いていない場合、フィーチャ タイプはポリゴンと見なされます。 予期しないジオメトリ タイプが入力されると、エラーが返されます。

  • 入力フィーチャは、プロシージャ シンボルで表示されたフィーチャ レイヤーを指定できます。 CityEngine のルールは通常、入力シェープから出力 3D モデルを生成する方法を制御する多くのプロパティ (CityEngine では attrs と呼ばれます) を定義します。 たとえば、建物構造を生成するルールは、BuildingHeight に double タイプの attrFloorCount に整数タイプの attr を持つ場合があります。 入力フィーチャクラスに、CityEngine のルール プロパティと同じ名前とデータ タイプを持つ属性フィールドがある場合、出力モデルの生成には、その属性フィールドの値が自動的に使用されます。 この CityEngine のルール プロパティと属性フィールドの自動照合は、デフォルト フィールド マッピングと呼ばれます。

    入力フィーチャ レイヤーが単一シンボルでシンボル表示され、そのシンボルに入力ルール パッケージと同じルール パッケージを参照するプロシージャル シンボル レイヤーが含まれる場合、ツールで出力を作成する際、プロシージャル シンボル レイヤーで構成されたオーバーライドを適用します。 これにより、プロシージャル シンボル レイヤーを使用して、マッピングされたフィールド名がルール パッケージの属性名と正確に対応しないカスタム フィールド マッピングを構成したり、単一のカスタム値を使用してルール パッケージ属性をオーバーライドできるようになります。 詳細については、「属性値を使用したシンボル設定」をご参照ください。

  • [ルール パッケージ] パラメーター値は CityEngine *.rpk ファイルです。 これは、コンパイルされた CityEngine ルールとこのルールが使用する関連アセットが含まれている圧縮ファイルです。 [リーフ シェープのエクスポート] パラメーターは、入力ルール パッケージが、次の CGA アノテーションを含むことでこの操作をサポートしていることを宣言している場合のみ利用可能です: @StartRule @Out (granularity=separatedShapes)

  • [リーフ シェープのエクスポート] パラメーターを使用してリーフ シェープを生成すると、一連の標準フィーチャクラスがプライマリ出力マルチパッチ フィーチャクラスと同じ場所に次の命名規則で作成されます。<outputFC_Points><outputFC_MPoints><outputFC_Lines>。 すべての出力フィーチャクラスには、出力の生成元になった入力フィーチャの ObjectID を参照する OriginalOID 属性フィールドが含まれています。 OriginalOID フィールドを使用すると、出力フィーチャクラスを入力フィーチャクラスと結合できます。 [レポートを含める] パラメーターを使用してレポートを生成する場合、出力フィーチャクラスは各レポートの属性も取得します。

  • 各出力フィーチャクラスの生成元になった入力フィーチャの ObjectID を含めるために、OriginalOID フィールドが出力フィーチャクラスに追加されます。 入力フィーチャクラスに OriginalOID という名前のフィールドがすでに存在する場合は、新しいフィールド名に数字が追加されます (例: OriginalOID2)。

  • 変換中に発生したエラーまたは警告の詳細は、ArcGISProLog<process ID and GUID>.xml という名前のログ ファイル (ツールが ArcGIS AllSource で対話的に実行され、診断ログが有効になっている場合)、または pythonLog<process ID and GUID>.xml という名前のログ ファイル (ツールがスタンドアロンの Python スクリプトで実行され、診断ログが有効である場合) に書き込まれます。ここで <process ID and GUID> とは、ツールを実行するたびにログ ファイル名に追加されるプロセス ID および新しい GUID で、たとえば ArcGISProLog-12300~1A9C1C2A-A2CB-41AF-BEB9-1F8CDC4F6D29.xmlpythonLog-2160~807AFBC8-CA35-4370-9F90-4EDB2F9238AE.xml のようになります。 このファイルは、<Install drive>:\Users\<user name>\Documents\ArcGIS\Diagnostics にあります。

パラメーター

ラベル説明データ タイプ
入力フィーチャ

入力ポイント、ポリゴン、またはマルチパッチ フィーチャ。 入力フィーチャは、プロシージャ シンボルで表示されたフィーチャ レイヤーを指定できます。 フィールド マッピング (属性値を使用したシンボル プロパティ) が適用されます。

Feature Layer
ルール パッケージ

CGA ルールの情報、およびアセットを含んだ CityEngine ルール パッケージ ファイル (**.rpk)。 *.rpk ファイル内で @StartRule の注釈が付いているルールは、ポイント フィーチャ用のルール パッケージには @InPoint、ポリゴン フィーチャ用のルール パッケージには @InPolygon、マルチパッチ フィーチャ用のルール パッケージには @InMesh の注釈が付いています。 @StartRule@InPoint@InPolygon または @InMesh の注釈がついていない場合、フィーチャ タイプはポリゴンと見なされます。

File
出力フィーチャ

CGA ルールが適用されたマルチパッチ フィーチャを含む出力フィーチャクラス。 各出力フィーチャクラスの生成元になった入力フィーチャの ObjectID を含めるために、OriginalOID フィールドが出力フィーチャクラスに追加されます。

Feature Class
既存フィールドを含める
(オプション)

出力フィーチャクラスが、入力フィーチャクラスの属性フィールドを含めるかどうかを指定します。

  • オン - 入力フィーチャクラスの属性フィールドが、出力フィーチャクラスに含められます。 これがデフォルトです。
  • オフ - 入力フィーチャクラスの属性フィールドが、出力フィーチャクラスに含められません。 このオプションは、[リーフ シェープのエクスポート] パラメーターがオンの場合、自動的に使用されます。

Boolean
レポートを含める
(オプション)

プロシージャル ルール パッケージで指定された追加のレポート フィールドを出力に含めるかどうかを指定します。 ルール パッケージの作成方法によっては、モデルを作成するときに 1 つ以上のレポートを生成するロジックを含めることができます。 これらのレポートには、フィーチャに関する情報を含めることができます。 例として、各構築モデルに生成されるウィンドウ数を報告するルール パッケージが挙げられます。

  • オン - ルール パッケージのレポート生成ロジックの定義に従い、各フィーチャのレポートされる値を保持するために、出力フィーチャクラスに新しい属性フィールドが作成されます。 レポートされる各値に対して一意の属性が作成されます。
  • オフ - ルール パッケージ内に生成されるレポートは無視され、レポートに関連する新しい属性は生成されません。 これがデフォルトです。

このパラメーターは、ルール パッケージにレポートを生成するオプションが含まれていない場合は無視されます。

Boolean
リーフ シェープのエクスポート
(オプション)

各入力フィーチャを単一のマージされたマルチパッチ フィーチャに変換するか、ポイント、ライン、マルチパッチから構成される多くのフィーチャのセットにするかを指定します。

CityEngine のルール パッケージは、コンポーネントを個別に生成し、それらを 1 つの 3D オブジェクトにマージすることで、コンテンツを構築します。 ただし、これらのコンポーネント (リーフ シェープ) を別々のフィーチャとして保存することもできます。 このオプションは、建物の窓など、3D オブジェクトのサブエレメントを使用して解析操作を実行するときに、特に重要な場合があります。

たとえば、ルールによって、入力ポリゴンのフットプリントからシームレスな建物モデルを生成したり、集合住宅の正面ごとに、外向きパネル、代表の中心点、境界線を示すラインなど、別々のフィーチャを作成したりできます。 この例では、集合住宅のパネル、中心点、およびアウトラインがすべてリーフ シェープと見なされています。

  • オン - 追加の出力フィーチャクラスが生成されます。 入力フィーチャクラスの属性フィールドは、出力フィーチャクラスには含まれません。 出力フィーチャクラスには、出力の生成元になった入力フィーチャの ObjectID を参照する OriginalOID と呼ばれるフィールドが含まれています。
  • オフ - ルールのロジックで追加のリーフ シェープが定義されている場合でも、追加の出力フィーチャクラスは生成されません。 すべてのジオメトリは、出力マルチパッチ フィーチャ内に含まれます。 これがデフォルトです。

Boolean

派生した出力

ラベル説明データ タイプ
出力ポイント フィーチャ

リーフ シェープを生成するとき、プライマリ出力マルチパッチ フィーチャクラスと同じ場所に出力ポイント フィーチャクラスが作成されます。

Feature Class
出力ライン フィーチャ

リーフ シェープを生成するとき、プライマリ出力マルチパッチ フィーチャクラスと同じ場所に出力ポリライン フィーチャクラスが作成されます。

Feature Class
出力マルチポイント フィーチャ

リーフ シェープを生成するとき、プライマリ出力マルチパッチ フィーチャクラスと同じ場所に出力ポリゴン フィーチャクラスが作成されます。

Feature Class

arcpy.ddd.FeaturesFromCityEngineRules(in_features, in_rule_package, out_feature_class, {in_existing_fields}, {in_include_reports}, {in_leaf_shapes})
名前説明データ タイプ
in_features

入力ポイント、ポリゴン、またはマルチパッチ フィーチャ。 入力フィーチャは、プロシージャ シンボルで表示されたフィーチャ レイヤーを指定できます。 フィールド マッピング (属性値を使用したシンボル プロパティ) が適用されます。

Feature Layer
in_rule_package

CGA ルールの情報、およびアセットを含んだ CityEngine ルール パッケージ ファイル (**.rpk)。 *.rpk ファイル内で @StartRule の注釈が付いているルールは、ポイント フィーチャ用のルール パッケージには @InPoint、ポリゴン フィーチャ用のルール パッケージには @InPolygon、マルチパッチ フィーチャ用のルール パッケージには @InMesh の注釈が付いています。 @StartRule@InPoint@InPolygon または @InMesh の注釈がついていない場合、フィーチャ タイプはポリゴンと見なされます。

File
out_feature_class

CGA ルールが適用されたマルチパッチ フィーチャを含む出力フィーチャクラス。 各出力フィーチャクラスの生成元になった入力フィーチャの ObjectID を含めるために、OriginalOID フィールドが出力フィーチャクラスに追加されます。

Feature Class
in_existing_fields
(オプション)

出力フィーチャクラスが、入力フィーチャクラスの属性フィールドを含めるかどうかを指定します。 このパラメーターは、in_leaf_shapes パラメーターが使用されている場合は考慮されません。

  • INCLUDE_EXISTING_FIELDS入力フィーチャクラスの属性フィールドが、出力フィーチャクラスに含められます。 これがデフォルトです。
  • DROP_EXISTING_FIELDS入力フィーチャクラスの属性フィールドが、出力フィーチャクラスに含められません。 このオプションは、in_leaf_shapes パラメーターが FEATURE_PER_LEAF_SHAPE に設定されている場合に自動的に使用されます。
Boolean
in_include_reports
(オプション)

ルール パッケージの作成方法によっては、モデルを作成するときに 1 つ以上のレポートを生成するロジックを含めることができます。 これらのレポートには、フィーチャに関する情報を含めることができます。 例として、各構築モデルに生成されるウィンドウ数を報告するルール パッケージが挙げられます。

  • INCLUDE_REPORTSルール パッケージのレポート生成ロジックの定義に従い、各フィーチャのレポートされる値を保持するために、出力フィーチャクラスに新しい属性フィールドが作成されます。 レポートされる各値に対して一意の属性が作成されます。
  • EXCLUDE_REPORTSルール パッケージ内に生成されるレポートは無視され、レポートに関連する新しい属性は生成されません。 これがデフォルトです。

このパラメーターは、ルール パッケージにレポートを生成するオプションが含まれていない場合は無視されます。

Boolean
in_leaf_shapes
(オプション)

各入力フィーチャを単一のマージされたマルチパッチ フィーチャに変換するか、ポイント、ライン、マルチパッチから構成される多くのフィーチャのセットにするかを指定します。

CityEngine のルール パッケージは、コンポーネントを個別に生成し、それらを 1 つの 3D オブジェクトにマージすることで、コンテンツを構築します。 ただし、これらのコンポーネント (リーフ シェープ) を別々のフィーチャとして保存することもできます。 このオプションは、建物の窓など、3D オブジェクトのサブエレメントを使用して解析操作を実行するときに、特に重要な場合があります。

たとえば、ルールによって、入力ポリゴンのフットプリントからシームレスな建物モデルを生成したり、集合住宅の正面ごとに、外向きパネル、代表の中心点、境界線を示すラインなど、別々のフィーチャを作成したりできます。 この例では、集合住宅のパネル、中心点、およびアウトラインがすべてリーフ シェープと見なされています。

  • FEATURE_PER_LEAF_SHAPE追加の出力フィーチャクラスが生成されます。 入力フィーチャクラスの属性フィールドは、出力フィーチャクラスには含まれません。 出力フィーチャクラスには、出力の生成元になった入力フィーチャの ObjectID を参照する OriginalOID と呼ばれるフィールドが含まれています。
  • FEATURE_PER_SHAPEルールのロジックで追加のリーフ シェープが定義されている場合でも、追加の出力フィーチャクラスは生成されません。 すべてのジオメトリは、出力マルチパッチ フィーチャ内に含まれます。 これがデフォルトです。
Boolean

派生した出力

名前説明データ タイプ
out_points

リーフ シェープを生成するとき、プライマリ出力マルチパッチ フィーチャクラスと同じ場所に出力ポイント フィーチャクラスが作成されます。

Feature Class
out_lines

リーフ シェープを生成するとき、プライマリ出力マルチパッチ フィーチャクラスと同じ場所に出力ポリライン フィーチャクラスが作成されます。

Feature Class
out_multipoints

リーフ シェープを生成するとき、プライマリ出力マルチパッチ フィーチャクラスと同じ場所に出力ポリゴン フィーチャクラスが作成されます。

Feature Class

コードのサンプル

FeaturesFromCityEngineRules の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで FeaturesFromCityEngineRules 関数を使用する方法を示しています。

import arcpy

arcpy.CheckOutExtension("3D")
arcpy.env.workspace = "C:/data"
arcpy.ddd.FeaturesFromCityEngineRules("in_polygons", 
                                      "rules.rpk", 
                                      "out_multipatches")
FeaturesFromCityEngineRules の例 2 (スタンドアロン スクリプト)

次の Python ウィンドウ スクリプトは、FeaturesFromCityEngineRules 関数をスタンドアロン Python スクリプトで使用するときに、診断ログを有効にする方法を示しています。

import arcpy
import ctypes
from arcpy import env

def enableDiagnostics(enable: bool = True):
  pro = arcpy.GetInstallInfo()['InstallDir']
  dll = ctypes.CDLL(f'{pro}/bin/DADFLib.dll')
  if enable:
    dll.EventLogEnable()
  else:
    dll.EventLogDisable()

def setLogLevel(level: int = 2):
  pro = arcpy.GetInstallInfo()['InstallDir']
  dll = ctypes.CDLL(f'{pro}/bin/DADFLib.dll')
  dll.EventLogSetLogLevel(level)

enableDiagnostics(True) #enable diagnostic logging
# Setting a log level (0 == error, 1 == warning, 2 == information, 3 == debug)
# will get that level and everything below it. 0 is only errors, 1 is warnings and errors etc.
setLogLevel(3) # Max diagnostic log level 

arcpy.CheckOutExtension("3D")
env.workspace = r"C:\data"
arcpy.ddd.FeaturesFromCityEngineRules(r"geometry.gdb\in_polygons", 
                                      "rules.rpk", 
                                      r"geometry.gdb\out_multipatches")

環境

このツールは、ジオプロセシング環境を使用しません。

関連トピック