ArcGIS DesktopまたはQGISのラインシェープファイルの各ラインの開始点と終了点を取得しますか?


15

ベクター(ポリライン)シェープファイルがあり、各ラインの開始点と終了点(ノード)を取得し、これらの点を含むシェープファイルを作成する必要があります。次に、ポリラインの属性テーブルに、ポイントIDに基づいて各ラインの開始点と終了点を追加する必要があります。

ArcGIS DesktopまたはQGISで簡単な方法でこれを行うにはどうすればよいですか?


2
ArcGISでアドバンストライセンスをお持ちの場合、[データ管理ツールボックス]-> [フィーチャツールセット]-> [フィーチャポイントの頂点]ツールを[両端]オプションとともに使用できます。回線のすべての属性が保持されます。ただし、元のラインフィーチャクラスにフィールドを追加し、ラインでフィーチャIDを計算して、その値をポイントで保持する必要があります。行に別の一意の値フィールドがある場合、ツールを実行した後に結合してFIDを計算できます。最終オプションには、1対多オプションで空間結合を実行し、不良属性を持つコピーを削除する必要があります。
リチャードフェアハースト

これはあなたの質問に答えますか?「Python / arcpyで開始点と終了点の座標を取得するにはどうすればよいですか?」gis.stackexchange.com/q/31684/8104
アーロン

私は同様のアプローチを試みましたが、途中で迷子になりました。やり直してみます。最善の方法は、この仕事をすべて一緒に行うマクロを作成して、後で同じ手順を実行できるようにすることです。乾杯!
user51651

@RichardFairhurstメソッド。これもおそらく回答として提案されるべきです。それは私が歴史的にそれをやった方法です
-bwp8nt

回答:


8

それはGDALのワンライナーです。このコマンドは、選択した属性で開始ノードからシェープファイルを作成します。

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

エンドポイントにはST_EndPointを使用します。


恐らくこれで仕事は終わりましたが、プログラミングスキルのない他の人がタスクを実行できるように、もっとシンプルな(視覚的な)ものを探していました。
-user51651

そのコマンドはどこで書きますか?
blue_chip

コマンドラインへ。Linuxでは、通常のシェルを使用します。Windowsではコマンドウィンドウを使用しますが、環境に正しいパスがあるように注意してください。Osgeo4wシェルはそれを自動的に行います。
user30184


6

QGISソリューション:フィールド計算機でxatとyatを使用し、それぞれのインデックス0(開始)と-1(終了)を使用するだけで、行ベクトルファイルの開始ノードと終了ノード(座標)を抽出できます。

xat(0)    
yat(0)
xat(-1)
yat(-1)

5

ArcGISソリューションの場合、ライン上のポイントを作成するジオプロセシングツールを作成しました。

あなたはそれをダウンロードして、ここでコードを見ることができます:線上にポイントを作成する

タイプには、開始/終了ポイントを選択します。これにより、各ポリラインの開始点と終了点を含む新しいポイントフィーチャクラスが作成されます。

出力ポイントフィーチャクラスには、作成元のポリラインのOIDを記録するLineOIDというフィールドもあります。そうすれば、属性データを結合して戻すことができます。

以下に、パラメーターの設定方法のスクリーンショットを示します。

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


これはすごいイアン!それをダウンロードしてテストし、できるだけ早くフィードバックを提供します。このツールは、必要なものに役立ち、プロセスの自動化に役立つと思います!ありがとうございました!
user51651

こんにちはIan、Idkですが、ArcGIS 10.0または10.1でツールを動作させることができません...ツールボックスに追加しましたが、昼食を
取りませ

@ user51651エラーメッセージが表示されていますか?10.0では動作しませんが、10.1以降では動作するはずです。[ジオプロセシング]メニューに移動し、[結果]をクリックした場合。そこにメッセージはありますか?
ianbroad

3

ArcGISを使用して、属性テーブルにエンドポイントの座標を追加するには、フィールド計算機を使用できます(ジオメトリを作成する必要はありません)。フィールド名、フィールド計算機をクリックし、以下の1行でPython構文を使用します(X座標の例):

!shape.firstPoint.X!

!shape.lastPoint.X!

すべてが!!の中にあることに注意してください


これは本当に良い答えです。これが可能だとは思いませんでした。Field Calculatorでのスナップショットは、タスクに慣れていない人に役立つ場合があります。M値でもこれができると思いますか?
bwp8nt

2

QGISでは、特定の頂点の抽出ツールを使用します。セット頂点は、インデックス0開始点を取得すると-1エンドポイントを取得したりするために、0 -1の両方を取得します。

QGIS抽出固有の頂点

説明に注意してください。

最初の頂点は0のインデックスに対応し、2番目の頂点は1のインデックスを持ちます。負のインデックスを使用してジオメトリの終わりにある頂点を見つけることができます。たとえば、-1のインデックスは最後の頂点に対応します。 2は最後から2番目の頂点などに対応します。


1

ArcGISで、アドバンストライセンスをお持ちの場合は、[データ管理ツールボックス]-> [フィーチャツールセット]-> [フィーチャポイントの頂点]ツールを[両端]オプションとともに使用できます。回線のすべての属性が保持されます。ただし、元のラインフィーチャクラスにフィールドを追加し、ラインでフィーチャIDを計算して、その値をポイントで保持する必要があります。行に別の一意の値フィールドがある場合、ツールを実行した後に結合してFIDを計算できます。最終オプションには、1対多オプションで空間結合を実行し、不良属性を持つコピーを削除する必要があります。

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