複数ポイント間でライン(線)を引いて、距離も求めたい。

9,656 views
Skip to first unread message

arakawa.sh...@gmail.com

unread,
May 23, 2017, 6:10:00 AM5/23/17
to QGIS初心者質問グループ
初めまして、あらかわ と申します。
QGIS初心者で、初めてご質問いたします。

早速ですが、Lon, Latの情報が入ったCSVファイルを読込み
マップ上に表示を行いまして、「それぞれのポイントを線で
結んで距離を計算したい」のですがプラグインを見つけられず
また、他の方法があるのか解らず。
ご教授頂けますと幸いです。

出来るだけQGISにて処理を行いたいと思っております。
環境は、Windows7、QGISバージョン2.18.5
よろしくお願いいたします。

福岡

unread,
May 23, 2017, 6:55:35 AM5/23/17
to QGIS初心者質問グループ
こんばんは

点をつないで線にするプラグインは、何回か話題になっていました。
https://groups.google.com/forum/#!topic/qgisshitumon01/O3cAYhXUcvo
https://groups.google.com/forum/#!topic/qgisshitumon01/rZY0-YCUwG8

ちょっと前に気付いたのですが、プロセッシングツールにも用意されているようです。【Points to path】は、ベクタ作成ツールの「ポイントをパスにする」です。
http://unknown.wpblog.jp/qgis%E3%81%A7%E7%82%B9%E3%81%A4%E3%81%AA%E3%81%8E/

線の長さは、フィールド計算機で「$length」という関数を使うと簡単に得られます。
面積計算の例が掲載されていますが、「$area」を「$length」に読み替えると参考になると思います。
http://na-mii.com/gis/na_gis104/

arakawa.sh...@gmail.com

unread,
May 24, 2017, 12:57:23 AM5/24/17
to QGIS初心者質問グループ
TO:福岡さま

お世話になっております。 ご対応の連絡ありがとうございます。
新川(あらかわ)です。

 教えていただきましたPointToPathで、ポイント間を結んで
長さを計算する事ができました。※65ポイント(2グループ)
ありがとうございます。 キャプチャを添付します。

最初の質問文で説明不足な分もあり、もう少しお知恵をください。

①ポイント間を総当りで線を引いて各、線間の距離を計算したい
 ※他プラグインを探索中ですが、良さそうなのが見当たらないです。

②ポイント最外周(グループ別または全体)を結んで面積を計算したい
 ※やりたい事が、増えとると...すいません。Point2Oneで試すがうまくいかない。
  キャプチャを添付します。



色々、ご面倒をおかけいたしますが、よろしくお願いいたします。

福岡

unread,
May 24, 2017, 2:04:08 AM5/24/17
to QGIS初心者質問グループ
新川 様

こんにちは

ポイント外周部を結んで面積を計算したいということですが、これは「ベクタ - 空間演算ツール - 凸包」を使うと最外周を結んだポリゴンが得られます。
総当たりの方は参考サイトを見つけたのですが、もっと簡単な方法が無いかを考え中です。
https://sites.google.com/site/qgisnoiriguchi/13/02

福岡

unread,
May 24, 2017, 4:45:57 AM5/24/17
to QGIS初心者質問グループ

新川 様

お待たせしました。
「PointConnector」というプラグインを使うのがわかりやすいように思います。

まず最初に、属性テーブルにポイントのIDを設定します。
IDはフィールド計算機のレコードのところにある「$id」を使って番号を振りました(個人的な好みで式は「$id+1」としました。$idだと0から番号を振るので)。
そしてIDは属性テーブルの左端に無いといけないようなので、テーブルマネージャーを使って左端に移動させました。
(テーブルマネージャーは便利なのでまだ使っていますが、リファクターフィールド(QGISジオアルゴリズム - ベクタテーブルツール リファクターフィールド)が推奨されているようです。)


次にラインを引く組み合わせを記述したCSVファイルを用意します。
先頭行に「from」、「to」と記述して、組み合わせを入力します。


PointConnectorを呼び出し、QGISに読み込んでいるならレイヤで、読み込んでいないならファイルを指定して「OK」ボタンを押します。


こんな感じでラインが出力されました。

arakawa.sh...@gmail.com

unread,
May 24, 2017, 5:07:02 AM5/24/17
to QGIS初心者質問グループ
TO:福岡さま

お世話になっております。 新川です。
返信ありがとうございます。

凸包を試してみま外周を囲む事ができました。 計算はこれからですが。。。
いろいろ試してみます。

あと、総当りのサイトを見てみましたが、結構手間がかかる様で、QGISで
処理出来ればと思っております。

お手数をおかけしてすいません、今後もよろしくお願いいたします。

arakawa.sh...@gmail.com

unread,
May 24, 2017, 9:57:15 PM5/24/17
to QGIS初心者質問グループ
TO:福岡さま

毎度お世話になっております。 新川(あらかわ)です。

おはようございます。レスがずれてしまって申し訳ございません。
PointConnectorプラグインをこれから試してみます。 シンプルな感じがして良さそうですね。

あと、凸包を使用して思った事なんですが、 ※キャプチャを添付します。
 凸包で作成した属性テーブルには、valueで囲みこんだ値(フィールド)がありますが
 元となったポイントの属性テーブルには、凸包の属性情報が無いので「関連付け」を付加
 したいと思いました。 ※素人的に一つにまとまってほしい気持ちです。
何か方法もしくは、プラグインで処理とか、教えていただけますでしょう?

行き当たりばったりで申し訳ございません、宜しくお願いいたします。



福岡

unread,
May 25, 2017, 12:38:08 AM5/25/17
to QGIS初心者質問グループ

新川 様

こんにちは

元になったポイントの属性テーブルに、ポリゴンとの関連性に関するものを記載したいということですね?

それなら、調査ツールとフィールド計算機を使うと良いかと思います。
まず、属性テーブルに新しいフィールドを追加します。
例ではAREAというテキストにしていますが、番号などで関連付けたい場合には整数値にしてください。


次にポリゴンを構成するために使用したポイントを選択します。
「ベクタ - 調査ツール - 場所」による選択を使うと便利だと思います。


うまく選択できたらフィールド計算機を使います。
既存のフィールドを更新するにチェックを入れ、新しく追加したフィールド名を指定します。
選択しているポイントだけを対象としたいので、左上の「選択されている○○個の地物のみ更新する」にチェックを入れます。
例としているフィールドはテキストなので、式フィールドに「''」で前後を挟んで、属性テーブルに入力したい名称を入れます。



「OK」ボタンを押すと、選択された地物にだけ文字が入力されます。

arakawa.sh...@gmail.com

unread,
May 29, 2017, 2:41:20 AM5/29/17
to QGIS初心者質問グループ
TO:福岡さま

毎度、お世話になっております。 新川(あらかわ)です。

お返事遅くなりましてすいません。

教えていただきました”調査ツール → 場所による選択”と”計算機ツール”で関連ができました
ありがとうございます。
あと計算機ツールの式の記述ルールは、よく解っておりませんが色々と使えそうです。

以上、お知らせいたします。

kb7...@gmail.com

unread,
Oct 7, 2019, 4:06:49 AM10/7/19
to QGIS初心者質問グループ
福岡様

失礼します。

PointConnectorを上記のように行ってみたのですが、下記のようなエラーが出てしまいます。
190 out of 190 line(s) not drawn.

解決方法をご存じでしたら、お教えいただけると幸いです。
よろしくお願いします。

福岡

unread,
Oct 7, 2019, 8:44:15 PM10/7/19
to QGIS初心者質問グループ
おはようございます。

手持ちの適当なポイントデータを使って試してみました。
そうするとご指摘のようなエラーメッセージが確かに示されました。
ただラインは引かれていて、数もポイント数から引かれるはずのものと一致していました。

おそらく気にする必要が無いメッセージのような気もしますが、確かに気持ち悪い状況です。
そこで条件を変えて試してみましたが、Shapeとcsvをレイヤに追加してから実行すると、エラーメッセージが発生しませんでした。

message.png


さらに試してみると、csvだけをレイヤに取り込んで実行したものもエラーメッセージが発生しません。
どうやらcsvをファイル指定で処理を実行した際に、エラーメッセージが示されるようです。
デリミティッドテキストレイヤとして取り込んでから、処理を実行すると良いようです。

福岡

unread,
Oct 8, 2019, 8:56:29 PM10/8/19
to QGIS初心者質問グループ
おはようございます。

メールでご連絡頂きましたが、他の方のアドバイスも得られるチャンスもありますので、掲示板の方に投稿いたします。
メールの内容としては、エラーメッセージだけではなく、そもそもラインの生成ができないということでした。

メールを頂いてから、パスに2バイト文字を入れたり、IDのデータ形式を整数以外にしたり、プロジェクトのCRSを変えたりと、ラインが生成できない状況を再現できないかトライしていますが、なかなか再現できていません。
そこでお手数をお掛けしますが、私がテストに使ったサンプルデータで動作チェックして頂けませんでしょうか?

これで動作するのならデータの問題、動作しないのならソフトウェア若しくは操作の問題ということに、問題の切り分けができると思います。
それと可能でしたら、サンプルデータはデスクトップと今回問題のあったファイルと同じ場所の2箇所でご確認頂けませんでしょうか?
よろしくお願いいたします。
SampleData.zip

kb7...@gmail.com

unread,
Oct 10, 2019, 1:22:20 AM10/10/19
to QGIS初心者質問グループ
福岡様

回答の方ありがとうございます。
テストデータで試してみたところ、どちらのパターンでもラインが引けました。
ファイルの問題のようです。

福岡

unread,
Oct 10, 2019, 4:50:38 AM10/10/19
to QGIS初心者質問グループ
こんにちは

ファイルの問題ということでしたので、かなり無茶なことをしてエラーを発生させようとしているのですが、なかなか発生しません。(x_x)
そこで姑息な手段なのですが、こんな方法ではどうでしょうか?

線の繋がりを記述したCSVファイルに問題があるとは考えにくいので、ポイントレイヤーを新たなファイルとして保存してそれを使ってみてはどうでしょうか?
レイヤの上で右クリックして「エクスポート - 地物の保存」で新たなファイルとして保存できます。

また、以前メールで頂いた写真ではポイントデータのX、Y座標を属性テーブルに取り込んでいるように見えました。
このデータをエクセルに貼り付けてポイントのCSVファイルを作り、ジオメトリ定義のあるデリミティッドテキストレイヤとして取り込む手もあると思いました。
色々試した中で、デリミティッドテキストレイヤとして取り込んだポイントでも動作テストしましたが、正常に動作しています。

正統派の的確なアドバイスができず申し訳ありません。
もし良いアドバイスをお持ちの方は、是非とも投稿ください。m(__)m

kb7...@gmail.com

unread,
Oct 14, 2019, 10:34:33 AM10/14/19
to QGIS初心者質問グループ
福岡様

返信が遅くなってしまい、申し訳ありません。
新たに地点のshpを作成しましたところ、エラーが生じず、ラインが生成されました。
shpファイルに何かしら問題があったようです。
お時間をとっていただき、ありがとうございました。


Reply all
Reply to author
Forward
0 new messages