2017-01-06 11 views
0

私はPostGISを持っていないので、私は組み込み関数を使用します。 以下の質問が正しく機能しています。 はしかし、私は、クエリがエラーを返し、以下の表PostgreSQLのフィールドを使ってポリゴンを作成するには?

select area(circle((polygon '(43.5042,-96.8391),(33.508,-112.1254),(33.4912,-111.9237),(33.4912,-111.9237),(33.4912,-111.9237),(38,-97)'))) 

からこれらの値を見つける必要があります。 テーブルのフィールドからポリゴンを取得する方法についてのヘルプはありますか?

select id, polygon '('||array_to_string(array_agg('('||latdec_src||','||longdec_src||')'),',') ||')' from access where id='99999' and time >= '2017-01-03' and time < '2017-01-04' group by 1 

select id, polygon array_agg('('||latdec_src||','||longdec_src||')') from access where id='99999' and time >= '2017-01-03' and time < '2017-01-04' group by 1 


select id, polygon array_agg(point(latdec_src,longdec_src)) from acesss where id='99999' and time >= '2017-01-03' and time < '2017-01-04' group by 1 
+0

そしてエラーは...? – jcaron

答えて

0

あなたはに似た何かを行うことができます:私は、私はよく(その定義は、あなたの質問に含めることができます)あなたのテーブルを理解していれば、それは

SELECT 
    area(circle(polygon(string_agg(one_point, ',')))) AS area 
FROM (
    SELECT 
     '(' || latdec_src || ',' || longdec_src || ')' AS one_point 
    FROM 
     access 
    WHERE 
     id ='99999' and time >= '2017-01-03' and time < '2017-01-04' 
    ORDER BY 
     time 
    ) AS s0 ; 

(だろう

WITH points (lat, lng, sort_order) AS 
(
    VALUES 
     (43.5042, -96.8391, 1), 
     (33.508, -112.1254, 2), 
     (33.4912,-111.9237, 3), 
     (33.4912,-111.9237, 4), 
     (33.4912,-111.9237, 5), 
     (38,  -97,  6) 

) 
SELECT 
    area(circle(polygon(string_agg(one_point, ',')))) AS area 
FROM (
    SELECT 
     '(' || lat || ',' || lng || ')' AS one_point 
    FROM 
     points 
    ORDER BY 
     sort_order 
    ) AS s0 ; 

実際には経度と緯度の値だけを使用すれば、これがあなたのエリアになるかどうかはわかりませんが、別の話です)

関連する問題