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どきゅめんと…って何?点字文書?(building2008)
・3Dどきゅめんと…って何?点字文書?(building2008)
・Vodafone 3GのUserAgent問題:その後(Igroktectonick)
・GoogleMapsと連動したいならPostGISの他にmysqlという選択肢も出てきた あとジオメディアサミット関西も(okumula)
・人員がクラスタ化できている職場と言うのはうらやましい そろそろ限界です(「ま」のつく人)
・もうAmazonクレジットカードは使いません...楽天カード一本で。(名無し)
・ジオメディア忘年会 新年会から始まり東京1、2、関西と続いたジオメディア2008の締めくくり(ぴかぴか)
・GoogleMapsと連動したいならPostGISの他にmysqlという選択肢も出てきた あとジオメディアサミット関西も(kokogiko)