ArcPyを使用してラインの中点を見つけますか?


11

ジオプロセシングフレームワークを使用して、たとえばPythonスクリプトでポリラインの中間点を計算するにはどうすればよいですか?

polyline.centroidプロパティを返し、それが内または機能にある場合はtrue重心を。それ以外の場合、ラベルポイントが返されます。重心が非直線上にあることはめったにありませんが、これは私の目的には役に立ちません。

[ フィーチャの頂点からポイントへ]ツールには中間点オプションがありますが、これにはArcInfoが必要ですが、現在はありません。

オプションとして、ポリラインにメジャーを追加し、ラインに沿って50%のルートイベントを作成できます。

別の回避策は、ArcMapで[ジオメトリの計算]オプションを使用することですが、理想的には、このプロセスをスクリプトで自動化する必要があります。

より良い/より速い提案はありますか?

現時点では、ArcGIS 10.0(ArcInfoレベルライセンスへのアクセスなし)に制限されています。


4
この質問をご覧ください。最後に、中間点を決定するためにShapelyの線形参照関数を使用しました。
マイクT

1
@MikeToewsには正しい考えがあり、Shapelyに取り込むのではなく、ArcGISで線形参照関数を使用するだけだと思います。これはあなたが望む機能であるように見えます: Make Route Event Layer-Linear Referenceencing。イベントテーブルはその場で作成できます。これは10.1用ですが、10.0でも同じである必要があります。
空間の取得

1
:このブログは、Python / ArcPyに変換することができアルゴリズム含んでいるようだrbrundritt.wordpress.com/2008/10/14/...
PolyGeo

誰かがjavascriptでそれをしましたか?Arcpyでのみ成功しました。心からエゼキア
エゼキア

新しい質問がある場合は、[ 質問する ]ボタンをクリックして質問してください。コンテキストの提供に役立つ場合は、この質問へのリンクを含めてください。- 口コミより
BERA

回答:


22

ポリラインクラスは、ArcGIS 10.1で「positionAlongLine」と呼ばれる新しいメソッドを持っています。これは、行の始点から指定された距離、またはstartとendの間の距離の一部にある正確に1つのポイントを持つPointGeometryオブジェクトを返します。中間点を見つけるには、を実行するだけです。ラインの中点を見つけて、それらの座標を属性テーブルに追加するには、次のステートメントでフィールド計算を実行できます。positionAlongLine(0.5,True)

  • !Shape!.positionAlongLine(0.5,True).firstPoint.X
  • !Shape!.positionAlongLine(0.5,True).firstPoint.Y

これを機能させるには、フィールド計算機でPythonパーサーを使用する必要があることに注意してください。

Pythonでこのポイントオブジェクトにアクセスする場合は、次のようにします。

Input_shp = "C:\Temp\Line.shp"
Cursor = arcpy.SearchCursor(Input_shp)
for Feature in Cursor:
    Midpoint = Feature.shape.positionAlongLine(0.50,True).firstPoint
    print Midpoint.X
    print Midpoint.Y

おかげで、これは素晴らしいですね。私は今で十分に持っているかもしれルートオプション上記のように、私は現在、しかし10.0に制限されてることを言及している必要があります
スティーブン鉛

エラー:行に不正な値が含まれています。モデルビルダーでPythonがチェックされているarcGIS10を使用して、同じステートメントを使用しました:!Shape!.positionAlongLine(0.5、True).firstPoint.X
juasmilla

1

ET Geo Wizardsライセンスを使用すると、オプション「中間点」および「重複点の削除」(オプション)を使用して、機能「ポイントからポリライン」を試すことができます:http : //www.ian-ko.com/ET_GeoWizards/UserGuide/convertPl2Pnt。 htm

次のようにET Geoウィザードを実装できます。

toolbox_ETgeowizards = arcpy.GetParameterAsText(0) # Location ET Toolbox (Type: Toolbox)
arcpy.ImportToolbox(toolbox_ETgeowizards)

...

arcpy.ET_GPPolylineToPoints(pInFeatureClass, sOutFileName, sExportOption, bRemoveDuplicates)

ET関数の入力変数については、http//www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htmを参照して ください。

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