2点間距離(1点からの距離)による検索方法
via: ここギコ!:PostGISで1点からの半径検索は、UTMなりに変換してから検索するのがベストプラクティス?, ここギコ!:PostGISのGeospatial化大作戦 その3(デタラメ編)
最近、GISにかかわり始めたばかりなので間違いかもしれませんが、上記ふたつを元にこんなこと考えてみました。
CREATE OR REPLACE FUNCTION expand_by_meter(geometry,double precision) RETURNS geometry AS ' DECLARE utm_sid integer; geo geometry; BEGIN utm_sid = 32600 + ceil((ST_X($1)+180)/6)::int; geo = ST_Transform(ST_Expand(ST_Transform($1, utm_sid), $2), ST_SRID($1)); RETURN geo; END ' IMMUTABLE LANGUAGE plpgsql;
処理の流れはこんな感じです。
- 与えられた点に最適なUTM(WGS84)を取得
- UTMに変換
- UTM上で円に外接する矩形を取得
- 得られた矩形をもとの座標系に変換
たぶんこの矩形の少なくとも2辺は円の内側を通ってしまいます。どうしましょう。