2004年08月24日

PostGISの実験[1] 球面上での領域内/領域外判定ができるか

Posted by nene2001 at 14:03 / Tag(Edit): / 0 Comments: Post / View / 0 TrackBack このエントリーを含むはてなブックマーク

昨日のエントリーで書いた実験

東経135度北緯35度〓東経136度北緯35度間を線分で結んだとして、実際の地球上では、大圏コースを通るから東経135度30分北緯35度よりちょっと北、の地点は、この線分の南側にくるはずだけど、直交座標系で計算するとこの点は線分より北側になってしまう。
PostGISはどう判定するんだろうか(おそらく後者だと思うけど)。
また実験してみないといけないですね。

をやってみた。

結果は、PostGISが直交座標系で扱ってると判った以上当たり前っちゃあ当たり前だけど、後者でした。

実験詳細。
昨日と同じテーブル上に、東経135度、北緯35.00000000001度の点を設定してやる。
これだけ微妙な値ならば、大圏コースで判定すれば領域内に入るだろう。
その上で、以下のクエリを実行。

select within(point,GeomFromText('POLYGON((134.5 34,134.5 35,135.5 35,135.5 34,134.5 34))',4326)) FROM gis_test

すると見事に領域外と判定。
やっぱりね。
実際にはポリゴンの方も判定点の方も、色々微妙に変更して試してみたけど、やっぱり結論は同じ。

という事は、設定されたポリゴン中に、球面上でも正確に領域内/領域外である事を保証する判定を行うには、ポリゴン及び判定点を直交座標系に再投影してやって、その上で判定しなきゃいけないって事か。
直交座標系に再投影するって事は、どこを原点とする座標系を選ぶか、座標系を横断するサイズのオブジェクトの場合どうするか…とか、そんなノウハウが入りそうで、ああ、厳密にやろうとすると思ったよりややこしいシステムだなー。

Posted with ecto

Related query words in Google & Yahoo
Related Books from Amazon
Trackback to this entry
TrackBack URL :
Trackbacks
トラックバックはありません。
Comments
コメントはありません。
Post a comment












Remember personal info? 
2004年08月
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

About Me

Navigation

Search
Google
Web
kokogiko.net
Archives
Recent Entries
Recent Comments
Recent Trackbacks
『共通善は共有してはいけない』に一部解毒され、一部またもやもやした(ここギコ!)
右翼はアイヌや沖縄を包摂する論理を構築すべきではないのか
『共通善は共有してはいけない』に一部解毒され、一部またもやもやした(ここギコ!)
確信犯より無関心・無神経の方が根が深い大問題
"「次世代交通情報を考える」ブロガーミーティング"に参加(チミンモラスイ?)
AMNブロガーミーティング「ユビークリンク/全力案内!」に行ってきました。
Google未オルソ衛星画像にぶった切られた我が母校(ここギコ!)
未オルソ画像が生むジョジョの世界&MSNの航空写真はオルソされている?
AMNブロガーミーティング「ユビークリンク/全力案内!」に行ってきました。(ここギコ!)
あいまいな個人認証の技術ってないんだろうか
ジオメディア忘年会2008に行ってきた(近江商人JINBLOG)
ジオメディア忘年会行ってきました
ジオメディア忘年会 2008 を終えて(Cirius Lab. ブログ)
ジオメディア忘年会行ってきました
ジオメディア忘年会行ってきました(ここギコ!)
ジオメディア忘年会 新年会から始まり東京1、2、関西と続いたジオメディア2008の締めくくり
ジオメディア忘年会行ってきました(ここギコ!)
モーバイルインフォサーチ実験から続く想いの系譜
「Web 2008 Expo」行って来ました(ここギコ!)
コンテキストを検知できないモバイルWebなどあり得ない
Hatena bookmarked
My del.icio.us

Banners

Syndication
Powered by
Get it!!