標高レイヤーの作成

詳細な屋根形状と正確な高さで 3D 建物を作成するには、その屋根形状と高さを事前に把握しておく必要があります。 多数のサーフェスの高さを判断する最良の方法の 1 つは、広い地域をカバーできるレーザー スキャン テクノロジの LIDAR を使用することです。 ソリューションページから ArcGIS Pro プロジェクトをダウンロードして使用します。このプロジェクトには、3D Basemaps ソリューション ツールと、地方自治体の開発事業に固有のワークフローが含まれています。 プロジェクトおよびデータをダウンロードした後、ポートランド近郊の未加工の LIDAR データを 3D 点群 (LAS) データセットに変換し、スキャナーのレーザー光が対象物に当たった場所 (建物の屋上など) を表示します。 次に、点群をラスター データセットに変換して、そのエリアの標高を表示します。 詳細については、ArcGIS Solutions のページにアクセスしてください。 リンクは頻繁に変更されるため、任意の Web ブラウザーで「ArcGIS Solutions」を検索してください。

データのダウンロードとソリューションの配置

開始する前に、ポートランド市から提供されたデータをダウンロードし、ArcGIS Solutions 3D Basemaps を配置する必要があります。 さらに、ワークフローをステップごとに実行できるように、ArcGIS Pro のタスクも開きます。

  1. Roof_Form_Extraction 圧縮ファイルをダウンロードします。
  2. Roof_Form_Extraction.zip 圧縮フォルダーをコンピューター上のアクセス可能な場所に抽出します。

    次に、ArcGIS Solutions 3D Basemaps を配置します。

  3. ArcGIS Solutions を開きます。 必要に応じて、ArcGIS のアカウントにサイン インします。
    注意:

    組織のアカウントがない場合、ArcGIS の無料トライアルにサイン アップできます。

  4. ソリューションのリストで、[3D Basemaps] をクリックします。

    3D Basemaps ArcGIS Solutions

  5. 表示された 3D Basemaps ウィンドウで、[今すぐ配置] をクリックします。

    これで 3D Basemaps ソリューションが配置されました。

    注意:

    詳細については、「ArcGIS Solutions」をご参照ください。

  6. ページの上部で自分のプロフィールをクリックして、[プロフィールと設定] をクリックします。

    プロフィールと設定

  7. リボンの [コンテンツ] をクリックします。

    リボンのコンテンツ

  8. フォルダーのリストで、[3D Basemaps] フォルダーをクリックします。

    3D Basemaps フォルダー

  9. [3D Basemaps] アイテムの [Desktop Application Template] で、[その他のオプション] ボタンをクリックし、[ダウンロード] を選択します。

    3D Basemaps ソリューションをダウンロードします。

  10. [3DBasemaps.zip] ファイルを、ドキュメント フォルダーやデスクトップ フォルダーなど、アクセスしやすいフォルダーに抽出します。
    注意:

    [3DBasemaps] フォルダーへのファイル パスにスペースを含むファイルが含まれていないことを確認します。 含まれていると、ワークフローの後でエラーが発生します。

  11. [3DBasemaps] フォルダーを開き、[3Dbasemaps] プロジェクト ファイルをダブルクリックして、ArcGIS Pro でプロジェクトを開きます。

    3Dbasemaps プロジェクト ファイル

    空のプロジェクトが表示されます。 ソリューション ページからダウンロードしたこのプロジェクトを使用すると、プロジェクトに含まれている、地方自治体のワークフローに共通の作成済みタスクやツールを利用できます。

  12. 必要に応じて、ArcGIS 組織のアカウントにサイン インします。
    注意:

    ArcGIS Pro または ArcGIS アカウントがない場合、ArcGIS の無料トライアルにサイン アップできます。

LAS 点群データセットの作成

4 つの LIDAR データ ファイルから 1 つの LAS データセットを構築します。LAS データセットは、点群と呼ばれる 3D ポイントのグループとして ArcGIS Pro で表示できます。 LIDAR スキャナーは、対象物に向かってレーザー光を照射し、対象物に反射するまでのレーザー光の移動距離によって対象物の空間的な位置を決定します。 点群は、レーザーがオブジェクトに当たった場所を個々のポイントとして示します。これにより、サーフェスの位置を 3D で視覚化および解析できます。 個々の LIDAR ファイルは ArcGIS Pro でも表示できますが、すべてのファイルを表示するには、同じ手順を 4 つのファイルすべてに対して繰り返す必要があります。 4 つすべてのファイルのデータを含む LAS データセットを作成すると、時間を節約できます。

  1. [カタログ] ウィンドウで [フォルダー] を右クリックして、[フォルダー接続の追加] を選択します。 [フォルダー接続の追加] ウィンドウで、以前に展開した [Roof_Form_Extraction] フォルダーを参照して [OK] をクリックします。

    [Roof_Form_Extraction] フォルダーには、複数の LIDAR ファイルが含まれています。 ここでフォルダーを接続しておくと、後でこのデータを簡単に捜し出せます。

    注意:

    ツールが後のステップで適切に動作するために、プロジェクト パッケージのデフォルト フォルダーとジオデータベースを使用する必要があります。 たとえば建物を作成するときは、タスクがデフォルト フォルダーに保存されたレイヤー ルール パッケージを検索します。 プロジェクトのデフォルト ジオデータベースは「3DBasemaps.gdb」という名前です。ツールはこれを自動的に、すべての新規データの出力場所のデフォルトとします。

  2. [カタログ] ウィンドウで [タスク] フォルダーを展開します。 [How to use 3D Basemaps] をダブルクリックしてタスクを開きます。

    How to use 3D Basemaps タスク

    タスクをダブルクリックすると、3D ベースマップを作成するための専用ワークフローを選択する [タスク] ウィンドウが表示されます。

    3D Basemaps で使用できるタスクのリスト
  3. [タスク] ウィンドウで [Publish ground elevation surface] タスク グループを展開します。

    Publish ground elevation surface タスク グループ

    このタスク グループには複数のタスクが含まれています。これらのタスクは順番に配置されていますが、順序に関係なく開くことができます。 各タスク グループには、見出しに固有のタスクが含まれています。 ここでは、使用可能な 2 つのタスクは、地表面の標高サーフェスを操作するためのものです。

  4. [Extract elevation surfaces from LAS dataset] タスクをダブルクリックします。

    このタスクと共に、[LAS データセットの作成] ジオプロセシング ツールが [タスク] ウィンドウで開きます。 タスクを使用することで、ツールの検索や実行を別々に行うことなく、事前設定された一連のワークフローの一部としてツールやボタンにアクセスできます。 タスクには、実行するワークフローや手順についての説明情報も含まれています。

  5. [入力ファイル][参照] ボタンをクリックします。

    参照ボタン

    [入力ファイル] ウィンドウが表示されます。ここでは、コンピューターと ArcGIS Online にあるファイルやフォルダーを参照できます。

  6. [入力ファイル] ウィンドウで、[フォルダー] をクリックします。 [Roof_Form_Extraction] フォルダーを展開して [Lidar] フォルダーをダブルクリックします。 Ctrl キーを押しながら、4 つのファイルをすべてクリックして選択します。 [OK] をクリックします。

    LIDAR (*.las) ファイルを選択します。

    ヒント:

    1 つ目のファイルをクリックして、Shift キーを押しながら最後のファイルをクリックすると、4 つのファイルをすべて選択できます。

  7. [出力 LAS データセット] で、出力名を「Portland_LAS.lasd」に変更します。 出力ファイルの場所は、プロジェクト パッケージを開いたときに作成された [p20] フォルダーのままにします。

    LAS データセットの作成ツールの出力パラメーター。

    サーフェス制御 (つまり、LAS データセットの範囲を制限する高さ属性データを含むレイヤー) を追加することができます。 このシナリオでは、ポートランド市の自治体に代わって分析範囲専用の LIDAR データが取得されているため、制限を課す必要はありません。

    次に、ツールが自動的に設定しない場合は出力の座標系を設定します。 この座標系は、入力ファイルで使用されている座標系と同じでなければなりません。 入力ファイルの座標系を最も簡単に理解する方法は、データを最初に編集した人に確認することです。 このシナリオでは、ポートランド市の自治体と密接に連携しているため、LIDAR データで NAD 1983 (2011) StatePlane Oregon North FIPS 3601 (Intl Feet) 座標系が使用されています。

    注意:

    LIDAR データセットの座標系情報がわからない場合、ArcGIS Online にある 3D サンプル ツールを使用して判定できます。

  8. 必要に応じて [タスク] ウィンドウで下にスクロールして、残りのツール パラメーターを確認します。 [座標系][NAD_1983_(2011)_StatePlane_Oregon_North_FIPS_3601_Intnl_Feet] であることを確認します。 これは、LAS ファイルの座標系です。
  9. [タスク] ウィンドウの [Create PRJ For LAS Files][空間参照のないファイル] を選択し、[実行] をクリックして LAS データセットを作成します。

    座標系とその他のパラメーター

    ツールの実行が終了すると、LAS 点群データセットがシーンに追加されます。 [タスク] ウィンドウは開いたままです。 ワークフローを続行するので、[タスク] ウィンドウは開いたままにします。

  10. シーン内を移動して、追加したデータセットを検索します。 マウス ホイールをドラッグすると、シーンを傾けたり回転できます。

    シーン ビュー内の LAS 点群データセット

    点群は何百万というポイントで構成されており、標高の高いポイントは赤色、標高の低いポイントは青色になるようにシンボル表示されます。 このデータセットを使用して複数の標高ラスターを作成します。ただし、このデータセットに範囲外ポイントがないことを前もって確認しておく必要があります。

LAS データセットからの標高サーフェスの抽出

次に、3 つのデジタル標高モデルを作成します。これらは、ワークフローの [Extract Roof Form] ツールの入力レイヤーとして後で使用します。 標高モデルでは、LAS データセットの標高データがラスター形式で表示されます。 DTM (数値地形モデル) は、建物などのフィーチャがない地表の標高のみを示します。DSM (数値表層モデル) は、地表と地上にあるフィーチャの標高を示します。nDSM (正規化された DSM) は地上にあるフィーチャの高さ (正規化された高度) を示します。 前に開始したタスクがすでに開いており、タスク内に [Extract Elevation From LAS Dataset] ツールが開いています。

  1. [タスク] ウィンドウで、[入力 LAS データセット] の矢印をクリックして、[Portland_LAS.lasd] を選択します。

    ラスター データセットのセル サイズが自動的に検出されます。

  2. [出力ラスター] で、「ポートランド」と入力します。

    ツールが 3 つの標高レイヤーを計算して、ラスターの名前が追加されます。 3 つのレイヤーの名前は、[Portland_dtm_surface][Portland__dsm_surface][Portland__ndsm_surface] になりますが、それぞれはデジタル標高モデル、デジタル サーフェス モデル、正規化デジタル サーフェス モデルです。

  3. [ノイズの分類] ボックスをオンにします。 [実行] をクリックします。
    注意:

    タスクの完了には多少時間がかかる場合があります。

    LIDAR データでは、鳥や航空機などの飛行物体が調査対象のテレインのはるか上空に存在する場合でも、これらの飛行物体がスキャナーで登録され、点群の 1 つのポイントとしてデータセットに追加されることがあります。 このような範囲外ポイントが存在すると、解析結果に偏りが生じる場合があります。このため、範囲外ポイントがないかを確認し、ある場合は除去します。 鳥や飛行機などのノイズを分類するには、予想される建物の最小値と最大値を設定する必要があります。 最小値を下回っているポイントと最大値を上回っているポイントは範囲外ポイントと見なされます。 データを調べて、使用する値が適切かどうかを確認します。

  4. [タスク] ウィンドウの下部にある [コンテンツ] タブをクリックして、[コンテンツ] ウィンドウを開きます。

    コンテンツ タブ

  5. [描画順序][3D レイヤー] グループで、[Portland_LAS.lasd] を展開します。

    [コンテンツ] ウィンドウの Portland_LAS.lasd

    このレイヤーのシンボルには、データセット内の最大値と最小値 (253.74 と -69.52) が示されています。 座標系でフィートが使用されているため、これらの値もフィート単位で表示されています。 これらの値が範囲外ポイントを表しているかどうかと、残りのデータに十分に近い値かどうかを確認してください。 確認するには、シーン上の高いポイントと低いポイントをいくつかクリックします。 おおまかな視覚的評価を行うと、最大値は川の西側にある鮮明な赤色の建物に見られ、最小値は川の中にある濃い青色のポイントに見られます。

  6. 川の西側にある高層の建物に移動します。 (マウスのスクロール ホイールをドラッグして) シーンを傾けたり回転して、建物の高さを比較します。

    高い集合住宅の建物

    これらの建物の多くは、分譲マンションを表しています。 最も高い建物は、川に最も近い中央の建物です。

  7. 最も高い建物の屋上にある鮮明な赤色のポイントをクリックします。

    ポイントのポップアップ ウィンドウ

    ポップアップが表示されて、クリックしたポイントの標高などの情報が表示されます。 クリックしたポイントの標高は約 200 フィートであり、データセット内の最大値を 50 フィート近く下回っています (実際の値は、上記の画像に示された値とは若干異なる場合があります)。

  8. ポップアップを閉じます。 川の中にある濃い青色のポイントのいずれかをクリックします。

    このポイントの標高は約 10 フィートありますが、データ内の最小値は -69 フィートです。 データ内の最大ポイントと最小ポイントのどちらにも不一致があり、差異は両方の方向で 100 フィートを下回っています。 これらのポイントは、データに歪みが生じるほど重大な外れ値ではないと思われます - データの歪みには通常、ポイントが残りのデータよりも数百あるいは数千フィートも大きい/小さい必要があります。

  9. [タスク] ウィンドウを開き、[Height Detection] を展開します。 [最小高さ] に、「0」と入力します。 [最大高さ] に、「215」と入力します。

    最小標高と最大標高

    これらの値は、データで確認した値から約 10 フィートのバッファーを設けています。

  10. [実行] をクリックします。
    ヒント:

    タスクの完了には多少時間がかかる場合があります。

    3 つのラスター レイヤーが、[3DBasemaps] ジオデータベースの [コンテンツ] ウィンドウと [カタログ] ウィンドウに追加されます。

    [3DBasemaps] ジオデータベースに追加された新しいサーフェス
  11. [コンテンツ] ウィンドウで [Portland_LAS] レイヤーをオフにします。

    2D レイヤーだけが表示されます。

    マップ上の nDSM レイヤー

    nDSM には、構造物の相対的な高さが表示されます。 地表面の大部分は値 0 または 0 に近い値 (黒いセル) になります。 これで、[Extract Roof Form] ツールを実行するときに使用する 3 つの標高レイヤーを作成しました。 DSM に建物とその他のフィーチャの標高が表示されます。 エリアの色が濃くなるにつれて標高が低くなり、エリアの色が薄くなるにつれて標高が高くなります。 DTM には、地表標高のみが表示されます。 このツールは周辺のポイントに基づいて地表面の位置を推定するため、建物の位置がまだかすかに表示されています。

    DTM と DSM の標高レイヤーは LAS データセットから作成しましたが、nDSM は DSM の値から DTM の値を除算することで作成します。 DTM は地表標高を示し、DSM は地上にあるフィーチャの標高 (絶対高度) を示すため、nDSM は地上にあるフィーチャの高さ (正規化された高度) を示し、屋根が存在すると考えられる地域を正確に処理します。

  12. [Portland_dtm_surface] とベースマップを除くすべてのレイヤーをオフにします。

    Portland_dtm_surface レイヤーの表示

地表面の標高サーフェス

シーンでは、データの位置は地形を示す標高サーフェスの上になります。 ほとんどの場合、グローバルな標高サーフェスが可視化目的に対しては十分ですが、距離、縮尺、面積について精度の維持が必須であるシーンを作成するときは、カスタム標高サーフェスが必要です。 次のタスク アイテムでは、標高ラスターに基づいて、自分自身の標高サーフェスを公開します。

  1. [タスク] タブをクリックして、必要に応じて [次のステップ] をクリックします。

    前のタスクの実行を完了した場合、ウィンドウは次のタスクである [Modify Ground Elevation Surface] に進んでいます。このタスクはオプションです。 このプロセスの実行が必要かどうかを確認するため、[Portland_Buildings] レイヤーの属性テーブルと標高設定を調べます。

  2. [カタログ] ウィンドウで [フォルダー] を右クリックして、[フォルダー接続の追加] を選択します。
  3. [フォルダー接続の追加] ウィンドウで、[Roof_Form_Extraction] フォルダーを参照して選択し、[OK] をクリックします。

    [Roof_Form_Extraction] フォルダーが [カタログ] ウィンドウの [フォルダー] に追加されます。

  4. [Roof_Form_Extraction] フォルダーを展開して、[City_Data.gdb] を展開します。 [Portland_Buildings] をマップにドラッグします。

    Portland_Buildings フィーチャクラス

    建物フットプリントの一部は、特に川の近くで、部分的に地表で覆われていることに注意してください。

  5. [コンテンツ] ウィンドウで、[Portland_Buildings] を右クリックして、[属性テーブル] を選択します。

    建物の属性テーブルには、フィーチャクラスに関連するデータが含まれます。 それぞれの建物には、住所で決定している名前と固有の ID があります。 これには後で使用する高さと屋根形状のデータが含まれていますが、地表標高フィールドは含まれていません。 レイヤーに地表標高のフィールドが含まれている場合はサーフェス モデルを変更して一致させますが、ここでは含まれていないため、このステップをスキップできます。

  6. [タスク] ウィンドウで、[スキップ] をクリックします。

    このタスクの最後のステップ ([Modify scene elevation surface]) で、標高サーフェスを変更して計算した標高サーフェスに一致させます。 シーンで使用するデフォルトの標高サーフェスは、[WorldElevation3D/Terrain3D] です。 このプロジェクトで計算した DTM は、ポートランドの小さいローカライズされた中心部の場合、グローバル サーフェスよりも正確です。 またこれは、世界の標高サーフェスが使用するデフォルトの Web Mercator ではなく、建物フットプリントのデータになっている同じ StatePlane グリッド内で投影されます。

  7. 必要に応じ、[コンテンツ] ウィンドウで [標高サーフェス] セクションを展開し、[地表] をクリックして選択します。 [タスク] ウィンドウで、[実行] をクリックします。

    [地表] レイヤー グループ

    [標高ソースの追加] ウィンドウが表示されます。

  8. [標高ソースの追加] ウィンドウで、[データベース] フォルダーをダブルクリックして、[3DBasemaps.gdb] を参照します。 [Portland_dtm] をクリックし、[OK] をクリックします。
    注意:

    作成したラスター データセットが表示されない場合は、アドレス バーの横の [更新] ボタンをクリックします。

  9. [コンテンツ] ウィンドウで、[Portland_dtm][標高サーフェス][地表] レイヤー グループに追加されていることを確認します。 [WorldElevation3D/Terrain3D] をオフにします。

    新しい標高サーフェスを設定します。

    ベースマップが、DTM の範囲に大まかにクリップされます。

  10. [タスク] ウィンドウで、[完了] をクリックします。

    このグループの最後のタスクで、作成した標高サーフェスを公開します。 これは、後で建物のデータを ArcGIS Online で公開するときに役立ちます。Web マップが Web Mercator を使用して投影された 3D データを表示するため、最初にカスタム標高サーフェスを公開する必要があります。

  11. [タスク] ウィンドウの [Publish ground elevation surface] グループで、[Publish ground elevation surface] をダブルクリックします。

    標高の単位がフィートになっているため、DTM をメートルに変換して最初のステップを完了します。

  12. [ラスター] ボックスで、[Portland_dtm_surface] をダブルクリックします。

    DTM レイヤーが、式ボックスに「Portland_dtm_surface」として追加されます。

  13. [式] ボックスで、プレースホルダー テキスト [Your DTM] を削除します。 式が ["Portland_dtm_surface" * 0.3048] と読み取れることが必要です。

    標高サーフェスをメートルに変換します。

  14. [出力ラスター] の設定を [DTM_meters] のままにして、[実行] をクリックします。
  15. [Reproject DTM] ステップの [入力ラスター] で、[DTM_meters] を選択します。 [出力ラスター データセット] で、「DTM_project」と入力します。

    [Reproject DTM] タスク ウィンドウのパラメーター

    [出力座標系] は、[WGS_1984_Web_Mercator_Auxillary_Sphere] に設定されています。 これが ArcGIS Online のデフォルトの図法になって、屋根形状の公開が簡単になります。

    注意:

    米国州平面座標系から Web Mercator にデータを再投影するには、地理座標系変換を使用します。

  16. [地理座標系変換] で、[WGS_1984_(ITRF08)_To_NAD_1983_2011] を選択します。
  17. 残りのデフォルト設定をそのままにして [実行] をクリックします。

    [コンテンツ] ウィンドウに追加された [DTM_project] レイヤー。 Web Mercator 投影法で建物を作成するため、標高サーフェスを [DTM_project] に切り替えます。

    [タスク] ウィンドウが [Add elevation surface to the ground] に更新されます。

  18. [コンテンツ] ウィンドウの [標高サーフェス] で、[地表] をクリックして選択します。 [タスク] ウィンドウに戻り、[実行] をクリックします。

    [標高ソースの追加] ウィンドウが表示されます。

  19. [標高ソースの追加] ウィンドウで、上部の [更新] ボタンをクリックしてから、[DTM_project] を選択して [OK] をクリックします。
  20. [コンテンツ] ウィンドウで [地表] を展開し、[Dtm_project] が標高サーフェスのリストに追加されていることを確認します。 [Portland_dtm] をオフにします。
  21. [タスク] ウィンドウで [次のステップ] をクリックし、[完了] をクリックします。

    最後に、標高サーフェスをポータルに公開します。

  22. [コンテンツ] ウィンドウで、[DTM_project] を右クリックして、[Web レイヤーとして共有] を選択します。

    標高サーフェスを Web レイヤーとして共有します。

    [Web レイヤーとして共有] ウィンドウが表示されます。

  23. [一般] タブで、次のパラメーターを入力します。

    • [名前] に、「Portland_DTM_WebMercator」と入力し、自分のイニシャルを付加します。
    • [サマリー] に、「ポートランドの投影された標高サーフェス」と入力します。
    • [タグ] に、「地表」と入力します。

  24. [構成] タブをクリックし、必要に応じて [タイル スキーマ][オプション] を展開して、次のパラメーターを入力します。

    • [タイル スキーマ] で、[ベースマップと同じ] が選択されていることを確認します。
    • [詳細レベル] で、[最大レベル][20] に設定されていることを確認します。
    • [オプション][一時キャッシュの場所] で、[Roof_Form_Extraction] フォルダーを選択するか、選択されていることを確認します。
    • [LERC 圧縮] で、「0.05」を選択するか、選択されていることを確認します。

  25. [分析] をクリックします。 エラーがないことを確認して、[公開] をクリックします。

    標高サーフェスがポータルに公開されて、Web シーンで使用できるようになりました。

  26. Web レイヤーの公開が完了したら、[Web レイヤーとして共有] ウィンドウを閉じてプロジェクトを保存します。

3DBasemaps ソリューション ツールとプロジェクト データを含むプロジェクトをダウンロードして開きました。 また、未加工の LIDAR データを LAS データセットに変換し、LAS データセットを使用して、地形のさまざまなファセットを示す 3 つの標高レイヤーを作成しました。 次回は、写実的な屋根形状を抽出し、生成されたデータセットに誤差がないかを確認します。


3D 建物の作成

前のレッスンでは、LIDAR データを 3 つの標高レイヤーに変換し、地表面の標高を表すレイヤー (DTM)、地表面とその上にあるフィーチャおよび建物の標高を表すレイヤー (DSM)、地表面からのフィーチャの高さを表すレイヤー (nDSM) を作成しました。 このレッスンでは、まずこれらの標高レイヤーと建物フットプリントを使用して、屋根の形状と高さに関する属性データを算出します。 次に、算出した属性を使用して、建物フットプリントを 3D フィーチャでシンボル表示します。 最後に、フィーチャに潜在的な問題がないか調べます。

建物の屋根形状の抽出

屋根形状を抽出するには、[Extract Roof Form] ツールを使用します。これは、プロジェクト データとともにダウンロードした [Roof_Form_Extraction] ツールボックスに含まれている 2 つのスクリプト ツールの 1 つです。 [Extract Roof Form] ツールを実行しても、3D 建物は自動的に作成されませんが、屋根形状とその他の屋根属性を記述した属性データが 2D 建物フットプリントに追加されます。 この属性データを使用すると、これらのフィーチャを 3D で順次作成できます。

  1. 必要に応じて、ArcGIS Pro[3DBasemaps] プロジェクトを開きます。

    多くの建物は均一な四角形ではなくて、さまざまなレベル、異なっている屋根などの建築上のフィーチャを備えています。 構成要素を立ち上げた後で、これらのフィーチャを追加するための手描きを必要とする編集量を最小化するために、データを前処理します。 このための 2 つのオプションとして、建物フットプリントまたは標高のいずれかを使用します。 建物フットプリントはセグメンテーションのない単純な四角形ですので、さらに詳細な情報を取得するには建物フットプリントをどこで分割する必要があるかを DSM を使用して見積もります。 [3D Basemaps] ソリューションに含まれているスクリプト ツールを使用します。

  2. [カタログ] ウィンドウで、[ツールボックス] を展開し、続いて [CreateBuildings.tbx] を展開します。

    [3D Basemaps] プロジェクトには、これまで見てきたように、タスクと、3D ベースマップの建物、フロア、電力線、その他のフィーチャの作成と管理に使用できる多くのツールが付属しています。

    展開された CreateBuildings ツールボックス
  3. [CreateBuildings] ツールボックスで、[Segment Roof Parts] をダブルクリックします。

    [Segment Roof Parts] ウィンドウが表示されます。

  4. [Segment Roof Parts] ウィンドウの [建物のフットプリント] で、[Portland_Buildings] を選択します。 [標高サーフェス (DSM)] で、[Portland_dsm_surface] を選択します。

    [Segment Roof Parts] ツールのパラメーター

    [spatial detail] と [spectral detail] フィールドに入力されます。 値の範囲は 1 ~ 20 で、数字が大きいほどより詳細な出力に対応します。 建物や超高層ビルの高さの違いが大きい屋根の面がたくさんある可能性がある都市では、標高の変化を簡単に検出できるため、小さい値を使用できます。 郊外や低い住宅などでは、標高のわずかな違いを検出するために、値を大きくする必要があります。 超高層ビル (川沿い) と低い住宅 (東向き) の両方を処理しますので、値の範囲の比較的中間のデフォルト値を使用します。

  5. [Output Segmented Buildings] で、「Portland」と入力します。 [実行] をクリックします。
    注意:

    ツールの実行には時間がかかります。

    建物のフットプリントが分割されたら、[Create Buildings] タスクを使用して建物の 3D フィーチャクラスを作成します。

  6. [タスク] ウィンドウで [Publish Buildings] を展開し、操作している建物に適用できるタスクを表示します。

    [Publish Buildings] グループに適用できるタスク

    [Publish Buildings] グループには選択可能な 2 つのタスクがあり、これらのタスクにより、建物フットプリントを展開して前処理することができます。 1 つ目の [Extract building footprints] は、建物フットプリントがないため lidar データセットから展開する場合のみ必要なタスクです。 2 つ目の [Preprocess building footprints] タスクでは、屋根形状を作成する前に、別のフィーチャクラスに基づいて建物を分割することができます。 分割のために使用する他のフィーチャクラスがないため、標高サーフェスを使用して分割したので、[Create buildings] タスクを実行します。

  7. [タスク] ウィンドウで [Create buildings] をダブルクリックします。
  8. [Create buildings] ウィンドウで、次のように入力します。
    • [建物][Portland_Segmented] を選択します。
    • [標高サーフェス (DSM)] で、[Portland_dsm_surface] を選択します。
    • [地表面の標高サーフェス (DTM)] で、[Portland_dtm_surface] を選択します。
    • [正規化された標高サーフェス (nDSM)] で、[Portland_ndsm_surface] を選択します。

    入力データとして使用するパラメーター

  9. [Output Building Polygons] に「Portland」と入力します。 まだツールは実行しません。

    RoofForm パラメーターは、何を屋根面と見なすかを定義します。 デフォルトで、屋根は 250 平方フィート (フラット) または 75 平方フィート (傾斜) で、地表から 8 フィートの高さが必要です。 これらの最小のパラメーターにより、自動車や道路標識などの小さいオブジェクトが屋根面としてカウントされることを防止します。 より小さい建物やより大きい建物を含む LIDAR データは、パラメーターの別の範囲が必要です。 このエリアは、宅地と商業地域に区分されるため、デフォルト値が建物でないオブジェクトを含めるほど緩くなく、小さな住宅を除外するほど厳しくない値です。 詳細な建物を作成する際は、建物フットプリントの冗長または余分な頂点を削除することで、フィーチャを単純化することも検討する必要があります。 単純化したモデルは、外観が滑らかになってレンダリングの時間が短縮され、ポートランド市役所との出力の共有に最適なものになります。

    注意:

    データがメートルなどの別の計測単位の場合は、パラメーターを調整する必要があります。 これらのパラメーターの計測単位は、標高レイヤーの場合と同じになります。

    最後に、建物の単純化を選択できます。 建物を単純化すると、建物フットプリントから余分な頂点が除去されます。 この結果、3D 建物モデルの外観が滑らかになり、レンダリングにかかる時間が短縮されます。 今後、3D 建物モデルをポートランド市の自治体と共有する際には、見栄えのする出力が求められます。

  10. [Roof Form] セクションを展開して、[Simplify Buildings] ボックスがオンになっていることを確認します。

    また、[Simplify Tolerance] の値に、単純化したポリゴンと元のポリゴンの頂点間の最大距離変動として「0.1」が設定されていることも確認します。 値を小さくすると、正確性が維持され、値を大きくすると、より単純化されます。 建物フットプリントは、ポートランド市の自治体での分析に使用されることになっているため、正確性を維持する必要があり、「0.1」という小さい値に設定します。

  11. [Simplify Tolerance] に「0.1」と入力するか、すでに「0.1」に設定されていることを確認します。

    [Simplify Buildings] および [Simplify Tolerance] パラメーター

    注意:

    この値には、標高レイヤーと同じ計測単位が使用されます。

  12. [実行] をクリックします。

    ツールの実行には、時間がかかる場合があります。 実行が終了すると、新しいレイヤーがシーンに追加されます。

  13. [コンテンツ] ウィンドウの [標高サーフェス] セクションで、[Portland_roofform] レイヤー、[Topographic] ベースマップ、および [DTM_project] レイヤー以外のレイヤーをすべてオフにします。

    マップ上の [Portland_roofform] レイヤー

    新しい屋根形状のフィーチャクラスには、ポートランドの建物フットプリント レイヤーの 3D モデルが含まれます。また新しい情報がその属性テーブルに追加されました。

  14. [Portland_roofform] レイヤーを右クリックして [属性テーブル] を選択します。

    属性テーブルが表示されます。 OBJECTIDShapeShape_LengthShape_Area などの標準フィーチャクラス属性だけでなく、屋根の高さ、形状、および方向に関連したフィールドも複数存在します。

    属性テーブルに含まれるフィールド

    これらのフィールドは [Extract Roof Form] ツールで作成されたものであり、このツールの入力データとして使用されている標高レイヤーと建物フットプリントに基づいています。 これらのフィールドの意味を次に示します。

    • BLDGHEIGHT (建物の高さ) - 建物の最大高さ。
    • EAVEHEIGHT (軒高) - 建物の最小高さ。 軒高のない建物は平屋根を意味します。
    • ROOFFORM (屋根形状) - 屋根の形状。 屋根形状には、平屋根、切妻屋根、寄棟屋根があります。 それぞれの屋根形状の画像は次のとおりです。

      屋根形状の例

    • BASEELEV (ベース標高) - 建物の基準となる高さ。通常は、建物が配置されている地表面の標高に相当します。
    • ROOFDIR (屋根方向) - 屋根のコンパス方位 (度単位)。 このフィールドに値を指定できるのは、屋根形状が切妻屋根の場合に限ります。
    • RoofDirAdjust (調整された屋根の方向) - このフィールドを使用すると、屋根の方向を調整できます。 デフォルト値は 0 です。 値を 1 にすると、屋根が反時計回りに 90 度回転します。値を 2 にすると、180 度回転します。 このフィールドは、正しく抽出されなかった屋根形状の手動編集に使用されます。 現段階では、形状が正しく抽出されない点について懸念する必要はありません。

  15. 属性テーブルを閉じます。
  16. [タスク] ウィンドウで、[完了] をクリックします。
  17. プロジェクトを保存します。

建物の作成が完了したので、LIDAR データとどの程度良く一致するかを確認します。

建物の精度の確認

属性テーブル内の屋根形状情報を使用して 3D 建物フットプリント レイヤーを作成しました。 次に、それらがどの程度正確であるかを確認します。

  1. [タスク] ウィンドウの [Publish Buildings] で、[Review buildings] をダブルクリックします。
  2. [Review buildings] ウィンドウの [建物][Portland_roofform] レイヤーを選択して、[標高サーフェス (DSM)][Portland_dsm_surface] を選択します。 [実行] をクリックします。

    [Confidence Measurement] ツールは、RMSE (二乗平均平方根誤差) を計算します。これは、屋根形状レイヤー内の値と DSM 内の値の間の差異です。 RMSE が高いほど、生成された建物フットプリントのエラーが高いことを示します。 統計が属性テーブルに追加されます。

  3. [コンテンツ] ウィンドウで、[Portland_roofform] を右クリックして、[属性テーブル] を選択します。
  4. 属性テーブルで、[RMSE] 列が表示されるまでスクロールします。 属性名を右クリックし、[降順で並べ替え] を選択します。

    RMSE 値を降順で並べ替えます。

    一般に、約 3 フィート (1 メートル)の RMSE 値を目標にしますが、この精度のレベルはユース ケースにより異なります。 これらの値は便利ですが、[Portland_roofform] レイヤーには 1,083 のフィーチャがあるため、すべてのフィーチャに対してエラーを調べるには時間がかかります。 誤差の大きい建物をすばやく視覚化するには、RMSE に基づいてレイヤーをシンボル表示します。

  5. 属性テーブルを閉じます。
  6. [タスク] ウィンドウで、[次のステップ] をクリックします。

    リンクされている 2D マップが開きます。

  7. 2D マップの [コンテンツ] ウィンドウで [Portland_roofform] レイヤーを選択し、[タスク] ウィンドウで [実行] をクリックします。

    [Portland_roofform] レイヤーの [シンボル] ウィンドウが表示されます。

  8. [シンボル] ウィンドウで [オプション] をクリックして、[シンボルのインポート] を選択します。

    シンボル オプションのインポート

    [レイヤーのシンボル情報を適用] ウィンドウが表示されます。

  9. [レイヤーのシンボル情報を適用] ウィンドウで、次のように入力します。
    • [入力レイヤー] では、[Portland_roofform] が選択される必要があります。タスク ステップの実行時にこれが選択されたからです。
    • [シンボル レイヤー][参照] をクリックし、[p20] プロジェクト フォルダーの [layer_files] フォルダーに移動します。 [LOD2RMSEclassification.lyrx] をダブルクリックします。

    .lyrx ファイルを追加します。

  10. [実行] をクリックします。

    *.lyrx スタイルが [Portland_roofform] レイヤーに適用されます。 シンボルは、RMSE が低い建物を緑色で、RMSE が高い建物を赤色で示します。

  11. 2D マップの [コンテンツ] ウィンドウで、[Portland_dsm] をクリックし、レイヤーを選択します。
  12. リボンの [表示設定] タブをクリックします。 [効果] グループで [透過表示] に「50」と入力して Enter キーを押します。

    50.0% に設定された [レイヤーの透過表示] スライダー

  13. [タスク] ウィンドウで、[次のステップ] をクリックします。
  14. [マップ] タブをドラッグして、[3D Basemap] ビュー タブの横にドッキングします。

    [マップ] ビュー タブをドラッグしてドッキングします。

  15. [マップ] タブをクリックして、2D マップをアクティブにします。
  16. [マップ] タブで [ベースマップ] をクリックし、[衛星画像] を選択します。

    視覚的に比較すると、RMSE 値が高い建物のほとんどで、高さの異なる複数の部分があることがわかります。 上記の画像に示された正方形の建物では、駐車場が一部を占めており、建物自体はフットプリント全体の約半分にすぎません。 RMSE 値が高い原因として、建物フットプリントが建物の実際の範囲を表していないことが考えられます。 また、建物フットプリントの位置が衛星画像と合っていません。 これらのエラーは後で修正します。

  17. 川の西側に位置する RMSE 値が高い建物を拡大表示します。 建物フィーチャを、DSM および衛星画像レイヤーと比較します。

    RMSE 値が高い建物

  18. [タスク] ウィンドウで、[次のステップ] をクリックします。

    [Review buildings] タスク ウィンドウの 4 つ目のステップで指示に従い、LIDAR ポイントを含む建物形状に注目し、RMSE 値が高い建物がエラーになっている場所を確認します。

  19. [3DBasemap] シーンをクリックして有効化します。 [コンテンツ] ウィンドウで [Portland_LAS] レイヤーをオンにします。

    シーン ビューの Portland_LAS レイヤー

    フットプリントが正しくない原因は、主に次の 2 つです。1 つは、屋根形状の入力が不適切な場合、もう 1 つは LIDAR が誤って解釈されている場合です。 建物フットプリントを確認すると、LIDAR データで示されているよりも頂点やセグメント パーツが多すぎます - 可能性が高いのは、ツールが空調設備などの屋根のフィーチャから詳細をピックアップしたことです。 属性を調査して、フィーチャを編集する前に手動で変更する必要があるフィーチャの有無を確認します。

  20. リボン上の [マップ] タブの [選択] をクリックして、[マップ] ビューの赤色または黄色の建物フットプリントのいずれかをクリックします。

    選択された赤色の建物フットプリント

  21. フィーチャの 1 つを選択して、[属性] をクリックします。

    フィーチャ属性

    [属性] ウィンドウが表示されます。

    属性を表示すると、屋根形状を確認できます。 多くの屋根形状がフラットになっており、これで問題ありません。 次のタスクでは、正しくない頂点を修正します。

  22. リボン上の [選択] グループで [選択解除] をクリックして、選択を解除します。

    消去

  23. [タスク] ウィンドウで、[完了] をクリックしてプロジェクトを保存します。

ポートランド市の建物の屋根形状を抽出し、屋根形状フィーチャを 3D でシンボル表示しました。 3D フィーチャを作成しましたが、これらのフィーチャの一部に誤差があることがわかりました。 ポートランド市の自治体にデータを提供する前に、これらの誤差を修正します。 次のセクションでは、ポートランド市の自治体と共有できる 3D マルチパッチ フィーチャクラスに屋根形状レイヤーをエクスポートする前に、屋根形状フィーチャを編集して見栄えをよくします。


建物の編集とフィーチャのエクスポート

前回は、LOD2 屋根形状を持つ 3D 建物を作成し、エラーを特定しました。 今回は、RMSE (二乗平均平方根誤差) 値が高いフィーチャを修正します。 次に、データの共有を簡単にするために、建物を 3D マルチパッチ フィーチャクラスにエクスポートします。 複数の建物で RMSE 値が高いことが示されましたが、時間の都合上、1 つの建物のみ編集します。

建物フットプリントの頂点の変更

判明した建物の問題の 1 つとして、建物フットプリントの位置が衛星画像および標高データと合っていない問題があります。 他の変更を加える前に、頂点を修正して正確な位置合わせを行います。

  1. 必要に応じて、ArcGIS Pro[3DBasemaps] プロジェクトを開き、[タスク] ウィンドウを開きます。
  2. [タスク] ウィンドウの [Publish Buildings] タスク グループで、[Modify buildings] をダブルクリックします。

    [Modify buildings] タスクが開き、3D シーンではなく、2D マップに専用の [選択] ツールが起動します。 編集する建物フットプリントを選択します。

  3. マップで、必要に応じて、マップの中心を川の西側にあるオレンジ色の建物にします。
    ヒント:

    マップを移動またはズームする必要がある場合、画面移動には C キー、縮小には X キー、拡大には Z キーのショートカット キーを押して使用します。

    マップの建物フットプリント

    建物は、複数の構造物で構成されています。 目視確認では、建物の低い部分は適度に十分な精度がありますが、不適切にデジタイズされた高い屋根フィーチャがあります。

    また、画像はかなり傾いていて、真上からではなく一定の角度で取得したように見えます。 このままでは、変更内容が 3D 建物形状と異なってしまうため、編集を開始する前に、ベースマップを適切な画像に変更します。

  4. [カタログ] ウィンドウで [ポータル] タブをクリックして [ArcGIS Online] を選択します。

    [カタログ] ウィンドウの ArcGIS Online

  5. 検索バーに「World Imagery (Wayback 2017-05-31)」と入力し、Enter キーを押します。 [World World Imagery (Wayback 2017-05-31)] アイテムを右クリックして [現在のマップに追加] を選択します。

    World Imagery Wayback を追加します。

    [World World Imagery (Wayback 2017-05-31)] レイヤーが [マップ] ビューに追加されました。 解像度が向上して、建物がより明確に表示されます。

  6. [選択] ツールを使用し、建物の中央のオレンジ色のフィーチャをクリックして選択します。

    オレンジ色のフィーチャを選択

    ヒント:

    間違ったフィーチャを選択してしまった場合は、[タスク] ウィンドウで [選択の変更] をクリックします。

  7. [タスク] ウィンドウの [Modify Buildings] ウィンドウの上部で、[Modify Building Footprint vertices] をクリックします。

    建物フットプリントの頂点の変更

    [頂点の編集] 編集ツールが [タスク] ウィンドウで開き、この建物の頂点がマップ上に表示されます。 ただし、透過表示の DSM では、頂点の位置を正確に確認することがやや難しくなります。

  8. [コンテンツ] ウィンドウで [Portland_dsm] レイヤーをオフにします。
  9. [マップ] ビューで、[衛星画像] ベースマップに基づき、頂点をそれぞれドラッグして、塔状構造物の屋根フィーチャをトレースします。
    ヒント:

    頂点をドラッグすると、頂点が既存のフィーチャにスナップする場合があります。 このスナップ機能は、編集中にスペースバーを押すことで、一時的に無効化できます。

    衛星画像ベースマップの位置に合わせて配置された頂点

    注意:

    このフィーチャの編集には 4 つの頂点の調整だけが含まれますが、他のシナリオでは一部のフィーチャがもっと複雑になることがあります。 不要な頂点がたくさんある場合は、それらの頂点を選択して削除し、建物を単純にできます。 元のオレンジ色のフィーチャは必要ないので、その頂点を削除することでフィーチャを削除します。

  10. [Modify Roof Tools] ウィンドウで [選択の変更] をクリックして、[マップ] ビューで前の屋根形状 (オレンジ色の四角形) を選択し、頂点にアクセスします。

    これにより、大きいほうの建物の頂点も選択されますが、問題ありません。

  11. 元のオレンジ色の屋根の頂点のみを右クリックして、[頂点の削除] を選択します。 残り 3 つの頂点でも同じことを行います。

    頂点の削除

  12. 頂点の新しい位置に問題がなければ、[Modify Roof Tools] ウィンドウで [次のステップ] をクリックします。 表示される [編集の保存] ウィンドウで、[はい] をクリックして、編集内容を保存します。 [マップ] タブの [選択] グループで、[選択解除] をクリックしてフィーチャの選択を解除します。

    編集内容を永続的に保存すると、編集したデータセットが変更されるため、必ず編集内容が正確であることを確認した上で保存しなければなりません。 RMSE 値が高いオレンジ色の屋根のフィーチャが削除されます。編集したフィーチャは黄色で表示され、RMSE 値が低いことを示します。

    編集した黄色の屋根フィーチャ
  13. [タスク] ウィンドウの最下部にある [スキップ] を 2 回クリックして、タスクのメイン リストに戻ります。

    次に、ポートランド市の自治体と共有できるようにフィーチャを変換します。 続いて、データセットを公開します。

編集した建物の公開

[Portland_Roof_Forms] データセットは、3D に見えるようにシンボル表示された 2D フィーチャクラスです。 このフィーチャクラスをポートランド市の自治体と共有する場合、3D 表示されるようにもう一度シンボル表示する必要があります。 また、使用したレイヤー ファイルのシンボル仕様でしか 3D 形状を保持することができません。 そのため、フィーチャの 3D 形状を維持する 3D マルチパッチ フィーチャクラスにデータセットを変換します。 次に、建物を ArcGIS Online に公開します。建物は、Web シーンへの追加や視覚化をすることができます。

  1. [タスク] ウィンドウで、必要に応じ、[Publish Buildings] タスク グループを展開して [Publish buildings layer] タスクをダブルクリックします。

    [Publish buildings layer] タスク

    [Publish buildings layer] タスクが表示されます。 シーンをすでに Web Mercator で公開済みなので、最初のステップをスキップできます。 ここで、建物ポリゴンをマルチパッチ フィーチャに変換します。

  2. [Publish buildings layer] ウィンドウで、[スキップ] をクリックします。
  3. [3D Basemap] タブがアクティブになっていることを確認します。 [コンテンツ] ウィンドウで [3D Basemap] シーンを選択します。
    選択された [3D Basemap] シーン
  4. [Publish buildings layer] ウィンドウで、次のように入力します。
    • [ビルディング レイヤー] で、[Portland_roofform] を選択します。
    • [一意の ObjectID] で、[BuildingFID] を選択します。
    • [Output Building Multipatch] で、「Portland_Building_Roof_Forms」と入力します。

    建物をマルチパッチ フィーチャに変換します。

    一意のオブジェクト ID は、個々の建物を一意のフィーチャとして識別するフィールドです。 [Portland_roofform] レイヤーを作成した場合、[Portland_Buildings] レイヤーからの一意の OBJECTID フィールドが BuildingFID として再作成されています。

  5. [実行] をクリックします。

    [Portland_Building_Roof_Forms] レイヤーが [コンテンツ] ウィンドウに追加されます。

  6. [タスク] ウィンドウで、[スキップ] をクリックし、[レイヤーのフィーチャのマスク] ツールをスキップします。
  7. [コンテンツ] ウィンドウで、[Portland_Building_Roof_Forms] レイヤーが選択されていることを確認します。 [タスク] ウィンドウで、[実行] をクリックします。

    [Web レイヤーとして共有] ウィンドウが表示されます。

  8. [Web レイヤーとして共有] ウィンドウの [名前] で、「Portland_Building_Roof_Forms」の後に自分のイニシャルを付けます。

    組織の各レイヤーは、一意の名前にする必要があります。組織の他のメンバーが類似のレイヤーをすでに公開していたとしても、自分のイニシャルを追加することでレイヤーを確実に公開できます。

  9. [サマリー] に、「LIDAR から抽出された建物の屋根形状」と入力するか、コピーして貼り付けて、[タグ] に、「3D」、「都市開発」、および「グリーン イニシアチブ」と入力して Enter キーを押します。
  10. [次のグループと共有][すべての人に公開] を選択します。
  11. [分析] をクリックして、エラーがないことを確認します。
  12. [公開] をクリックします。

    公開プロセスが完了すると、このウィンドウの下部に通知が表示されます。

  13. [Web レイヤーとして共有] ウィンドウの下部で、[Web レイヤーの管理] をクリックし、共有されているアイテムをオンラインで表示します。
  14. [タスク] ウィンドウで [完了] をクリックします。
  15. プロジェクトを保存します。

これで、3D 建物がポートランド市役所と共有できるマルチパッチ フィーチャクラスとして公開されました。 [3DBasemaps] ソリューション プロジェクト パッケージにより、LIDAR データから標高レイヤーを生成し、これらの標高レイヤーを使用して建物フットプリントから LOD 2 屋根形状を抽出することで、建物を作成しました。 建物フットプリントを 3D でシンボル表示し、誤差の大きいフィーチャを編集しました。 より写実的な屋根形状は、土地区画、開発、都市計画だけでなく、3D ソーラーや陰影解析にも活用できます。

このプロジェクトのタスク、ツール、およびレイヤー ファイルで独自のデータを使用することができます。 建物フットプリントと位置の LIDAR データがある限り、LOD2 屋根形状を作成できます。 この ArcGIS Pro タスクは、ArcGIS Solutions ページで利用でき、これまでのレッスンで解説したワークフローを簡単に再現できるように設計されています。 レッスン用データと併せてダウンロードしたプロジェクト パッケージを独自のデータで使用するか、ArcGIS Solutions ページからプロジェクト パッケージをダウンロードしてください。

その他のレッスンについては、「Learn ArcGIS Lesson ギャラリー」をご参照ください。