YouTube | Facebook | X(Twitter) | RSS

ポリライン フィーチャに放物線を描く Z値を格納するツール

2020/5/10 (日)

放物線Z値の格納ツール

はじめに

このツールは、ライン フィーチャに放物線を描くための Z値を格納します。Z値は一律の計数とフィーチャの属性値が指定できます。

数年前に ArcObjects で作成した VBA マクロを ArcGIS Pro で動作する Python スクリプトとして移植したものです。

ダウンロード

以下からダウンロードして利用してください。ソースコードも含まれています。

使用方法

ArcGIS Pro プロジェクトから解凍した ZIP ファイル内の *.tbx ファイルを参照し、ジオプロセシング ツールを実行してください。

パラメーター

パラメーター説明データ タイプ
入力フィーチャ処理するポリライン フィーチャFeatureLayer
出力フィーチャクラス処理後のフィーチャクラスFeatureclass
係数値全フィーチャに一律でZ値をするための係数Double
係数フィールド個々のフィーチャ毎に最大Z値を変更するためのフィールド値Field

処理イメージ

ライン フィーチャの Z値を放物線で描画
ライン フィーチャの Z値を放物線で描画

補足

  • ライン フィーチャクラスの座標系は地理座標系でも投影座標系でも処理できますが、ライン フィーチャの頂点間は測地線(最短経路)で結ばれます。
  • Z値はライン フィーチャの座標系に基づく距離に対して、距離の中間地点のZ値が計数値となるよう放物線を描く値が内挿されます。
  • 入力ライン フィーチャの距離値は座標系の値をデカルト座標とみなして計算するため、地理座標系の場合は緯度経度1度が等距離とみなされます。そのため高緯度ほど期待する放物線を描く Z値は内挿されません。
  • 係数は「係数値×係数フィールド」で計算されます。係数フィールドが未指定の場合は計数値が一律で設定されます。
  • 入力フィーチャの座標系が地理座標系で最短距離が経度180度を跨ぐ場合、ポリラインはマルチパートに分割され、経度180度を考慮した M値が格納されます。
    ※意図的に作成されたマルチ パート フィーチャの各パート M値も逆転されるため、期待する結果にはなりません。
  • 本ツールは ArcGIS Pro Basic 2.5 で動作確認をしました。

コード スニペット

    # 放物線を描く関数
    def calculate_parabola_y(x, y_top, x_max):
        # 放物線を描くための二次方程式
        # Y = c(X - a)^2 + b
        # a = 頂点のX座標
        # b = 頂点のY座標
        # c = 放物曲線の係数

        x_top = x_max / 2
        the_factor = -(y_top / x_top ** 2)
        return the_factor * (x - x_top) ** 2 + y_top
 
  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-