0

私はこれと交差するすべてのポリゴンを得ることができます:

SELECT * 
FROM propriedades 
WHERE ST_Intersects(
    ST_GeomFromText(location::geometry),
    ST_GeomFromText('POLYGON(-7.9245860488441 -37.122384500713,-7.9245860488441 -37.11904223938,-7.9233955716106 -37.1187601948)'));

propriedades は私のテーブルです location は保存された地理ポリゴンの列です

返されたエラー

エラー: 解析エラー - 無効なジオメトリ ヒント: "POLYGON(-7.9245860488441" <-- ジオメトリ内の位置 25 で解析エラー

***エラー** *

エラー: 解析エラー - 無効なジオメトリ SQL 状態: XX000 ヒント: "POLYGON(-7.9245860488441" <-- ジオメトリ内の位置 25 で解析エラー

解決しました。地理を使用しましたが、ジオメトリは使用しませんでした:

SELECT * 
FROM propriedades 
WHERE ST_Intersects(
    location,
    'POLYGON((-7.9239281216632 -37.118491021708,-7.9239281216632 -37.116096663161,-7.9240937813677 -37.116105295265,-7.9241591799314 -37.116171875421,-7.9246636046819 -37.116271405188,-7.9259677455811 -37.118572530098,-7.9256079206171 -37.118728486796,-7.9243335012771 -37.118675962065,-7.9243194973485 -37.11849254918,-7.9242705964918 -37.118491021708,-7.9239281216632 -37.118491021708))'
)

しかし、私は他の問題を抱えています.50メートル以上の交差が必要です

このようにhttp://slimber.com/gallery/pictures2/23/235563/polygons.jpg

4

1 に答える 1

1

ポリゴンの WKT には 2 つの問題があり、これが解析できない理由です。多角形には 2 つの深さの括弧が必要であり、最後の座標は最初の座標と一致して閉じた線形リングを作成する必要があります (つまり、三角形には 4 つの点が必要です)。WKT は次のようになります。

POLYGON((-7.9245860488441 -37.122384500713, -7.9245860488441 -37.11904223938,
         -7.9233955716106 -37.1187601948, -7.9245860488441 -37.122384500713))

また、はすでに PostgreSQL の へのキャスト演算子であるためST_GeomFromText(location::geometry)、実際には不要です。型の場合は、としてキャストするのに十分なはずです。::geometrygeometrygeographylocation::geometrygeometry

于 2012-09-19T20:17:17.957 に答える