YouTube | Facebook | Twitter  Feed

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

放物線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
 

関連記事

  • この記事を書いた人

羽田 康祐

Esri認定インストラクター、GIS上級技術者、測量士補、潜水士。GISy / GISc とその関連分野である地理学・地図学について日々の出来事で学んだ記憶を記録するためにブログを書いています。行動原理は伊達と酔狂。好きな地形は圏谷。好きな地図投影法はパースクインカンシャル図法。呉市生まれ広島市出身。GIS を使った自己紹介はこちら

-プログラミング, ArcGIS
-

© 2020 WINGFIELD since1981