PostGIS ST_DWithin と 空間参照系の単位 暗中模索 編
久々にブログを見ていると、コメントがありまして・・・。
見ている人がいるんだと、感動していたところ、間違いの指摘。
すみません。
ありがとうございます。
とにかく、ご指摘の内容でしらべて見ました。
結果、答えに行き着いたかどうか、わからないというのが、現在の状況です。
ちょっとプロセスから、
>>ST_DWithinの半径が、メートルとネットでは言われているけど
「使用している空間参照系の単位」が使われます。4326では「度」で、sqrt(経度差^2+緯度差^2)で出してます。これは使えません。
ううう、まず、私がわかってない単語から・・・
- 「使用している空間参照系の単位」
ググッてみました。
http://bubble.atnifty.com/modules/bwiki/SRIDList.html
EPSG 4326
ESRI 4326
proj -
ellps WGS84
datum WGS 1984
units degree
捕捉 GPS,海図,Google Earthで使用
単位が、degree ですと!!
ちなみにメートルは、参考ページの中断 「日本国内 旧測地系 新測地系」にまとめて有りました。
ここで、思いついた対処法は・・・
1.geometryフィールド追加時に日本国内の測地系EPSG(ESRI?)に合わせる
select ADDGEOMETRYCOLUMN('public','テーブル名','the_geom',2443,'POINT',2);
2.単位を変換する
ネットで調べると、これにチャレンジしますっって記事が多いのですが、なぜか、それ以降のエントリーがない(ノ`Д´)ノ彡┻━┻ どうも無理みたい。
3.きっとSQLで変換あるはずさ♪
http://www.finds.jp/docs/pgisman/1.5.1/ST_Transform.html
これが使えそう・・・。
んで、使ってみる。(確信ありません。でも勇気をもって書いてみます)
SELECT * FROM テーブル名 WHERE ST_DWithin( ST_Transform(the_geom,2443), ST_Transform('0101******',2443), 10000);
あってるんでしょうか_| ̄|○