Re: [OSGeoJapan-discuss] ダムから河口への距離

Hiroo Imaki hiroo @ angeli.org
2010年 7月 19日 (月) 01:53:47 EDT


みなさま、

私のページへのリンクを忘れました!
http://www.geopacific.org/opensourcegis/postgis/pgrouting
です。

いまき

2010/7/18 Hiroo Imaki <hiroo @ angeli.org>

> 皆様、
>
> 皆さんからの情報を頼りに、pgRoutingの勉強をしています。これから使い出す方にも役立つかと思い、私の管理するページにその勉強の過程についてまとめています。今のところ既存のノードからノードまでの最短距離を検索するところまでは出来ました。次に何とか線上のどこかに位置するダムを表す点から線上に新しくノードを加える作業が出来ればおそらく目的としていたダムから河口までの距離は測れると思います。またこのプロジェクトが進展したら皆さんに報告します。今のところpgRoutingはとてもよく働いてくれています。
>
> いまき
>
>
> 2010/7/16 Hiroo Imaki <hiroo @ angeli.org>
>
> 嘉山さん、岩崎さん、林さん、山田さん、そして皆様
>>
>>
>> 情報ありがとうございます。まずは嘉山さんの方法で試してみます。今日、ちょっと時間があるのでこの作業に時間を使ってみてその成果を後ほど報告します。うまくいけばさまざまな魚と河川の研究にPostGISを活用できることになりそうです。ありがとうございます。
>>
>> それでは後ほど。
>>
>> いまき
>>
>> 2010/7/16 Yoichi Kayama <yoichi.kayama @ gmail.com>
>>
>> 今木さん
>>>
>>> 嘉山です
>>>
>>>
>>> pgRoutingはジオメトリの型がLINESTRING またはMULTI LINESTRING のPostGISのテーブルが
>>> 操作の対象になります。
>>>
>>> たとえば道路で検索する場合は交差点と交差点の間の区間が1レコードになっているようなPostGISのテーブル
>>> が必要です。
>>> ご要望の機能ですが、河川のつながりがLINESTRINGまたはMULTILINESTRINGのデータテーブルで
>>> あらわすことができれば可能です。
>>> 合流点と合流点の間のLINESTRINGをレコード単位とするようなテーブルで各LINESTRINGの端点が接続する
>>> LINESTRINGの端点座標とつながっているといいです。ダムの地点ではLINESTRINGを分断して、ダムの
>>> 上流と下流のLINESTRINGは別レコードにします。河口は再下流のLINESTRINGレコードの片側の端点と
>>> なります。
>>>
>>> pgRoutingでは、このようなLINESTRINGのテーブルに対して前処理でノード番号やコストのカラムを追加して
>>> 各LINESTRINGの接続関係やそこを通る場合のコストの値を定義する必要があります。
>>>
>>> そのような前処理を行った後は以下のようなSQLで経路探索を行えます
>>> テーブル名を kasen とします
>>>
>>> SELECT * FROM shortest_path ('SELECT gid AS id, source::int4,
>>> target::int4, length::double precision AS cost,FROM kasen', 3, 7, false,
>>> false);
>>>
>>>
>>>  shortest_path()  というのが pgRouting  の関数です。
>>> これはノード3からノード7までの最短経路を求めるという処理になります。
>>> ここで結果は経路各区間の始点、終点のノード番号 と コストの列が帰ってきます。
>>> コストが距離になっていれば、このコストの合計が総延長になりますし、そうでない場合は
>>> ノード番号でレコードを特定してジオメトリから長さを取り出せば延長を算出することはできます。
>>>
>>>
>>> ですから上記のSQLの例では数値3のところにダムの位置のノード番号、数値7のところに
>>>  河口のノード番号が記入されていると指定ダムから河口までの経路検索になります。
>>>
>>> ですから手順としては
>>>
>>> 1.pgRouting のインストール
>>>
>>> 2.LINESTRING または MULTILINESTRING をジオメトリとして持つテーブルとして
>>> 河川のデータを用意する。
>>>
>>> 3.上記テーブルのトポロジとコストの設定をする。
>>> 各レコードにノード番号、コストのカラムを追加、値を設定する(処理のためのSQLがあると思います)
>>>
>>> 4.必要があれば各種インデックスを設定する。
>>>
>>> 5.経路探索を行いたい始点と終点のノード番号を調べて、pgRoutingの関数を使ったSQLを
>>> 実行すると経路のノード番号とコストのリストが検索結果として取得できる
>>>
>>>
>>> というのがpgRouting で経路検索を行う場合のおおまかな手順です。
>>>
>>>
>>>
>>> 2010年7月16日0:25 Hiroo Imaki <hiroo @ angeli.org>:
>>> > 皆様、
>>> >
>>> 先日、自分のプロジェクトでアメリカの主要なダムから河口までの距離を求めてそれぞれのダムのポイントに属性値として距離を挿入するという作業が必要になりました。ESRI的に言えばネットワークアナリストでネットワーク上の2点間の距離を求めるということになると思うのですが、PostGIS的にはどうしたらこの答えが求められるでしょうか?データとしてはいかのものがあります。
>>> > ダムデータ。ポイント
>>> > 河川データ。ラインストリング
>>> > 河口データ。ポイント
>>> > PgRoutingを使うことを考えているのですが、まだ使ったことがないのでまず、
>>> > 1)私の求めようとしている答えが求まるのか
>>> > 2)それにはどのようなステップを踏んだらいいのか
>>> > を教えていただけたらうれしいです。よろしくお願いします。
>>> >
>>>
>>
>>
>>
>> --
>> Hiroo Imaki
>> hiroo @ angeli.org
>> http://www.geopacific.org
>>
>
>
>
> --
> Hiroo Imaki
> hiroo @ angeli.org
> http://www.geopacific.org
>



-- 
Hiroo Imaki
hiroo @ angeli.org
http://www.geopacific.org
-------------- next part --------------
HTML¤ÎźÉÕ¥Õ¥¡¥¤¥ë¤¬½üµî¤µ¤ì¤Þ¤·¤¿.
URL: http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20100718/dfb88d39/attachment-0001.html


OSGeoJapan-discuss メーリングリストの案内