Pointタイプは幾何学的な座標を格納するために作成されているようですが、それが解決しようとしている問題や、2つの数値列を使用するだけの利点はわかりません。それは16バイトです、それでそれは2つの8バイトフロートの単なる抽象化ですか?それとも、特定のクエリのパフォーマンスを最適化する何らかのジオハッシュを含む文字列ですか?
リーフレットマップ上の特定のビューポートのすべてのポイントを取得したいとしましょう...緯度と経度を表す数値列を使用して、N/S境界とE/W境界間の経度番号、簡単です。ここでポイントの使用を検討しましたが、構文が面倒であり、開発やデータベースのパフォーマンスに不要なオーバーヘッドを感じているようです...
いくつかの利点、
(SRID,long,lat)
非常に複雑な時間 定義する賢明なソート と、複合型に対するカスタムのrツリーインデックスがあります。また、Well-knownテキストを使用するテキストとの間、およびWell-knownバイナリを使用してバイナリとの間の標準化された強制を提供します。
リーフレットの例に当てはまるように、
数値列が緯度と経度を表すので、N/S境界の間の緯度番号とE/W境界の間の経度番号を持つすべての行をフィルターするだけです。
まず、できません。極に向かって移動すると、経度の1度が0に収束します。第二に、たとえできたとしても、複雑になります。代わりに、GISメソッドを検討します。
SELECT *
FROM table
WHERE ST_DWithin( ST_Point(x,y)::geography, distance_in_meters );
メートル単位の距離!いいですね。 ;)
ポイントは空間関係に役立ちます。ポリゴン内のポイント(都市が単純な正方形であることはめったにないため、都市の境界内の住所)、他のポイントに最も近いポイント(家の近くのパン屋)などを特定できます。緯度/経度を使用して、これだけですが、Lat/Longが非常に間違った答えを返すことがあります( http://workshops.boundlessgeo.com/postgis-intro/geography.html )。
Postgresでのジオメトリの入門: http://workshops.boundlessgeo.com/postgis-intro/
別の見方:米国の地図を見ると、ポイントが国内にあるかどうかをどのようにすばやく判断できますか? min/max lat/longを使用すると、AKとHI(およびプエルトリコ、グアムなど)を含める必要があり、lat/longのmin/maxボックスは、カナダ/メキシコなどとオーバーラップするため、突然機能しなくなります。しかし、ポイントを使用すると、クイックジオメトリチェックでST_Within()を介してチェックできます。
PostgreSQLの幾何データ型を使用する利点は、幾何関数と演算子を使用できることです。あなたの例はかなり単純で、機能する基本的なクエリはかなり単純です。幾何演算子を使用すると、パスと交差する、または円内に含まれる線のみを返すクエリを実行できます。これらの演算子がないと、より多くの行を返し、コードのチェックインを行う必要があります。とはいえ、幾何演算子はGIS関連ではないため、マッピングには適していません。関連するクエリをマッピングする必要がある場合は、PostGISを使用します。