ArcPyを使用してファイルジオデータベースに真の曲線楕円ポリゴンを生成しますか?


9

背景として、この質問は、Table To Ellipseツールから出力されたラインからオーバーラップポリゴンを生成する方法に関する質問に答えようとすることから生じました

ArcMap 10.1 GUIを使用すると、楕円作成ツールを使用して実際のカーブポリゴンをファイルジオデータベースフィーチャクラスにデジタル化するのは非常に簡単ですが...

中心点、主軸、副軸、およびそれぞれの方位角を含むテーブルから行(arcpy.da.SearchCursor)を読み取りながら、真の曲線楕円ポリゴンを書き込むことはできますか?

これを行うためにarcpy.da.InsertCursorで使用できるトークンがあることを期待していましたがSHAPE@Geometryオブジェクトがサポートするものによって制限されているようで、実際の曲線が含まれていないようです。


1
私は周りを検索しましたが、わずかに役立つかもしれないと私が見つけた唯一のものはこれです。
ポール

1
そして、そのために、このQ&Aは役に立つかもしれません:gis.stackexchange.com/questions/80/...
blord-カスティージョ

これに関する回答を書きたい場合は、私は喜んで賛成票を投じますが、ArcObjectsの回答なしでAcceptをArcPyに残します(他に誰もしなければArcGIS Ideaにリンクして提供します)。
PolyGeo

これは古い投稿であることは知っていますが、arcpyを使用してこれを回避する方法を見つけました。いくつかの計算が必要ですが、以下の私の答えを参照してください。
crmackey、

回答:


11

Arcpy Geometryオブジェクトは真の曲線をサポートしていませんが、10.3では、EsriはREST APIに真の曲線を実装していたため、FeatureSetでそれらのJSONサポートを実装する必要がありました。したがって、JSON構造でカーブ作成する場合は、arcpyを「だまして」これを実行させることができます

次に例を示します。次のような真の曲線(円弧とベジェ曲線を使用)を含むJSONファイルを作成します。

{   'fieldAliases': {
        'Id': 'Id',
        'FID': 'FID'
    },
    'fields': [{
        'alias': 'FID',
        'type': 'esriFieldTypeOID',
        'name': 'FID'
    }, {
        'alias': 'Id',
        'type': 'esriFieldTypeInteger',
        'name': 'Id'
    }],
    'displayFieldName': '',
    'spatialReference': {
        'wkid': 103734,
        'latestWkid': 103734
    },
    'geometryType': 'esriGeometryPolyline'
    'features': [{
        'geometry': {
                      "curvePaths":[[
                        [6,3],[5,3],
                        {"b":[[3,2],[6,1],[2,4]]},
                        [1,2],
                        {"a":[[0,2],[0,3],0,0,2.094395102393195,1.83,0.33333333]}
                      ]]
                    },
        'attributes': {
            'Id': 0,
            'FID': 0
        }
    }],
}

次に、それを機能セットにロードして、Featureクラスに保存します。

fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')

そしてブーム、あなたは本当のカーブを持っています!これは、ArcMapで作成したものです。

ここに画像の説明を入力してください

したがって、あなたのケースでは、元の機能を機能セットにキャストしてJSONを再生するか、検索カーソルの行を繰り返して、json構造を構築できます。数学はあなたが望むものを得るには少し難しいかもしれませんが、確かに実行可能です。


また、完全な機能セットを形成する必要はなく、JSONジオメトリをに直接渡してarcpy.AsShape(geojson, True)、ジオメトリオブジェクトを取得することもできます。


1

法的記述からジオデータベースに何百もの区画を描画しなければならないときに、同じ問題に遭遇しました。COGOツールは、真の曲線を描画して保持できる唯一のツールです。残念ながら、COGOツールはスクリプト化できません。

ただし、正当な説明をtxt形式に変換することができたため、トラバースウィンドウに読み込んで形状を作成することができました。テーブルの形式によっては、(Pythonを使用して)テーブルをtxtに変換し、トラバースウィンドウにロードすることができます。


今日、私は真の曲線の輪郭をFGDBにインポートしようとしていて、曲線変換アドインに遭遇しました。それが役立つかどうかはわかりませんが、実際の曲線を操作するのに役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.