1

必要なものはタイトルにあります。

CREATE TABLE newTable1 AS SELECT t2.name,t2.the_geom2
FROM t1,t2
WHERE ST_Contains(ST_Expand(t2.the_geom2,0.05),t1.the_geom1) 
      and t1.gid=2;

CREATE TABLE newTable2 AS SELECT t1.the_geom,t1.label FROM t1 WHERE t1.gid=2;

最初のクエリ結果は、ポリゴン内のすべてのポイントであり、このポリゴンが gid=2 である 5 分間はポリゴンから離れています。しかし、このポリゴンも表示したいです。最初のクエリで書いてみました

... AS SELECT t2.name,t2.the_geom2,t1.the_geom1,t1.label...しかし、ポリゴンなしでポイントしか得られませんでした...

この質問は、「ポ​​リゴンから離れたすべてのポイントを見つけるにはどうすればよいですか?」という質問とリンクしています。しかし、答えが得られなかったので、お願いします...

そして、 ST_expand は問題ない解決策ですか、それとも ST_DWithin または ST_buffer を使用する方がよいでしょうか?

4

1 に答える 1

1

CREATE TABLE2 つのステートメントを 1 つに結合することはできません。データをクエリするだけなのに、なぜテーブルを作成するのですか?

あなたが実際にやろうとしているのは、ポリゴン内のポイントとポリゴン自体を提供する 1 つのクエリであるように思えます。このようなもの?

SELECT
    t1.the_geom AS polygon, t1.label AS polygon_label, 
    t2.the_geom2 AS point, t2.name AS point_name
FROM
    t1, t2
WHERE
    ST_Contains(ST_Expand(t2.the_geom2,0.05), t1.the_geom1) 
    AND t1.gid = 2;

これでも明確でない場合は、完全なテーブル定義と、何をしようとしているのかについての詳細を投稿してください。

于 2010-07-26T23:09:49.200 に答える