UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【PostgreSQL】地球は丸かった

以前PostgreSQLPostGISを使った検索を行った

uga-box.hatenablog.com

最近このGISデータに対してある地点から近いデータを取得するということをやる必要がでてきた

このとき、2点間の距離を考える場合にgeometrygeographyという2つの検索方法があるのを知ったので調べた

2つのざっくりとした説明は以下

  • geometry — 平面空間データ型
    ユークリッド座標系上の地物を表現するために使われる
  • geography — 回転楕円体空間データ型
    球面座標系での地物表現に使われる

つまり、地球の楕円体を考慮して距離を出すかどうか

ja.wikipedia.org

精度を気にするのであればgeographyにしたほうがよいということになる

今回は精度を気にするのでgeographyを使う

クエリはこんな感じになる  

where ST_Distance(geography g1, geography g2) <= #{distance}

http://postgres.cn/docs/postgis-2.3/ST_Distance.html

地球が丸いというのを計算に考慮するかどうかの違いがあることを知って面白かったし、覚えておくべき重要なことだなっと思った

他参考

https://www.sraoss.co.jp/tech-blog/pgsql/postgis/

https://ochi0218.hatenablog.com/entry/20101229/1293646091

https://zenn.dev/boiledorange73/articles/0015-pgis-searchneighbour