2004年08月23日
でけた!でけましたよ経緯度間の距離計算が!
思わず関西弁ですが。
PostGIS上での経緯度の距離計算ですが、よくよく拡張関数リストを読んでみると、distance_spheroidなる関数が。
説明を読むと、「再投影もせんと距離が欲しいちゅうような不埒な輩はこの関数でもつことったらええがな」というふうに書いてある。
2点の座標と回転楕円面の設定を与えてやれば、距離を出してくれるらしい。
なんで測地系指定してるのに回転楕円面を与えてやらないといけないのか判らないが(もしかしてアホな事書いてる?)、とりあえずこいつでいけそうだ!
試してみる。
とりあえずPOINTのGEOMETRY型フィールドを1つ持つ、gis_testテーブルに、(135.0,35.0)のPOINTデータを1つだけ突っ込んでみて、以下のSQLを実行してみた。
SELECT distance_spheroid(point,GeometryFromText('POINT(136.00 35.00)',4326),'SPHEROID["GRS_1980",6378137,298.257222101]') FROM gis_test;
その結果。
91287.7884490275
単位はmか?
こちらのサイトで、東経135度北緯35度〓東経136度北緯35度間の距離を確かめてみる〓91km!
91km≒91287.8...m!おお!求まった!求まりましたよ2点間距離が!
ちなみに、普通のDistance関数は、予想通り、度単位での距離を返しました。
東経135度北緯35度〓東経136度北緯35度間の距離は、1。
やりたい事のやり方が判った今では、何となく「かわいい」。
でも、PostGISって、地理の専門ソフトなわけだから、球体である地球の特性も考慮されて座標管理してるのかと思ったら、基本は単純?な直交2次元/3次元座標での管理みたいですね。
座標系設定は異なる座標系への再投影にしか使われないのかな。
という事は、東経135度北緯35度〓東経136度北緯35度間を線分で結んだとして、実際の地球上では、大圏コースを通るから東経135度30分北緯35度よりちょっと北、の地点は、この線分の南側にくるはずだけど、直交座標系で計算するとこの点は線分より北側になってしまう。
PostGISはどう判定するんだろうか(おそらく後者だと思うけど)。
また実験してみないといけないですね。
Posted with ecto
Excerpt: GoogleAPIで逆Geocoder Geocodeは、住所から緯度経度(位置情報)を取得することをいいますが、逆Geocoderは、緯度経度から住所...
Weblog: 今感じていること
Tracked: 2006年09月10日 21:28
Excerpt: WindowsのPostgreSQL8.1インストールでは、インストール中にP
Weblog: minddump
Tracked: 2006年10月04日 19:33
![[ここギコ!]](http://kokogiko.net/logo.png)





・3Dどきゅめんと…って何?点字文書?(moscow_city4)
・MovableType 3.2、MT::App::Trackback.pmの修正(名無し)
・滝川クリステル?(Lymmerres)
・3Dどきゅめんと…って何?点字文書?(veles1234)
・PostGISとPostgreSQL幾何データ型の比較(Bad credit loan)
・滝川クリステル?(SweapeBar)
・3Dどきゅめんと…って何?点字文書?(veles1234)
・ケータイ国盗り合戦が地域振興策「国おこし」「国札」を投入(宋)
・mixiアプリモバイルプラットフォームはまだ位置ゲーには使えない(まさに)