2016-07-01 7 views
1

と交差:がにVertica空間表を作成し、私はのように見えるポリゴンテーブルを持っているポイント

tableu polygon table

私のデータベースがにVerticaであり、私はそれで新しいです。すべての点をグループ化してポリゴンを作成するテーブルを作成したい場合は、ポリゴンを使用して緯度と経度のポイントがポリゴンにあるかどうかをチェックします。

この選択の作成方法は?私は連結機能によってグループがあることを理解します。

答えて

2

これにはVertica Placeを使用します。インストールガイドhereがあります。

,.に変更する必要があります。ポリゴンのカスタムデリミタを指定する方法がわからず、干渉する可能性があります(または使用しているデータの種類など)。また、サポートされている他の空間関数もありますので、APIを少し見てみてください。

は、基本的には最初にあなたのポリゴンテーブルを定義する必要があります。

CREATE TABLE regions (gid INT, geog GEOGRAPHY); 

次に、あなたがそれにすべてのポリゴンを挿入します。私はGROUP_CONCATを使用していますが、これはstrings packageからインストールする必要があります。

INSERT /*+ DIRECT */ regions 
SELECT "POLYGON NUMBER", ST_GeographyFromText('POLYGON((' || polygon_text || '))') 
FROM (
    SELECT "POLYGON NUMBER", GROUP_CONCAT(longitude || ' ' || latitude) 
     over (partition by "POLYGON NUMBER" order by "POINT ORDER") polygon_text 
    FROM mytable 
) x; 

COMMIT; 

あなたは、インデックスにそれらをする必要があります:

SELECT STV_Create_Index(gid, geog USING PARAMETERS index='my_regions', 
     overwrite=true, max_mem_mb=256) OVER() FROM regions; 

次にチェックしたいポイントのテーブルを作成します。

CREATE TABLE points (gid INT, geog GEOGRAPHY); 

ポイントを追加します。

INSERT INTO points VALUES (100, ST_GeographyFromText('POINT(-91.217706 43.50055)')); 
INSERT INTO points VALUES (101, ST_GeographyFromText('POINT(-93.217706 43.70055)')); 

COMMIT; 

交差点を探します:

SELECT gid AS pt_gid, 
     STV_Intersect(geog USING PARAMETERS index='my_regions') AS pol_gid 
FROM points ORDER BY pt_gid; 
関連する問題