2016-05-18 7 views
0

私は数百万のレコードのデータベースを持っています。今私は隣接するレコード(それに付随する家)を持つすべてのレコードを選択し、これにステータス 'T'を与えたいと思います。各レコードには次のようなジオメトリ列があります。sqlの隣り合うポリゴンを選択

POLYGON((254059.737 593504.637 0.0, 254059.227 593500.0 0.0, 254059.216 593499.899 0.0, 254058.242 593500.0 0.0, 254057.914 593500.034 0.0, 254057.893 593500.0 0.0, 254057.807 593499.863 0.0, 254052.074 593490.692 0.0, 254052.182 593490.639 0.0, 254058.138 593490.002 0.0, 254057.932 593488.165 0.0, 254074.487 593486.413 0.0, 254075.981 593500.0 0.0, 254076.265 593502.583 0.0, 254076.561 593502.55 0.0, 254076.594 593502.847 0.0, 254059.737 593504.637 0.0)) 

SQLステートメントでこれを行う可能性はありますか?私はSQLを使用したことがないので、私は完全な新人です。詳細な説明が望ましい。

私が始めた:私はWHERE句でいくつかの交差機能を追加するために持っていると思う

SELECT id, geometry, 'T'::text as type 
FROM houses 
WHERE 

+0

しないでください[クロスポストは](http://gis.stackexchange.com/q/194023/1872) –

答えて

0

ST_IntersectionまたはST_Crossesをご覧ください。

だから、私はこのような何かをしたい:返信用

SELECT DISTINCT 
    h1.id, 
    'T'::text as type 
FROM 
    houses h1, 
    houses h2 
WHERE 
    h1.id <> h2.id and 
    ST_Intersects(h1.geometry, h2.geometry) 
+0

感謝を。しかし、私は800万レコードあります。私は 'h1.id'を 'h8000000'と書くことはできません。各家ごとに同じ線分の家があるかどうかをチェックします。 – user30058

+0

これを行う必要はありません。この選択は、交差点を持つすべての家のジオメトリを収集し、どのID-sと交差するかを教えてくれます。したがって、id1がid2とid3との交差を持つ場合、次のように表示されます:row1:id1 | id2 | T; row2:id1 | id3 | T; 制限100で選択を試してみると、あなたが表示されます。 – perzsa

+0

私はあなたが何を意味するかを見ます。新しい選択を試みて、私は質問を編集しました。これは、少なくとも1つの交差した "隣人"を持つすべてのIDを選択します。おかげさまで – perzsa

関連する問題