만 폴리곤이 있는지 확인하는 가장 쉬운 방법은 단지 그룹 ID 수가 이것은보다 2
SELECT groupid, ST_ConvexHull(ST_Collect(geom))) As hull_geom into hulledpoints
FROM somepoints
GROUP BY groupid
HAVING count(groupid)>2;
입니다 그룹의 볼록 선체를 취할 수 있도록하는 것입니다 때문에 두 가지의 볼록 선체 포인트는 포인트의 볼록 선체 인 반면, 선 스트링 같은 점, 예를 들어 유도 선 (1, 2 (2))를 반환
select ST_AsText(ST_ConvexHull(ST_Collect(St_MakePoint(1,1),St_MakePoint(2,2))));
.
SQL 접근 방식이 아닌 기하학적 방식을 사용하려는 경우 반환 된 선체가 다각형인지 확인할 수 있습니다. 다음 예는 아무 것도 반환하지 않습니다. 세 점이 있지만 두 개가 일치하므로 볼록한 선체는 여전히 선 스트링이됩니다.
원래의 예에서
with hulls as (select ST_ConvexHull(ST_Collect(Array[St_MakePoint(1,1),
St_MakePoint(2,2), St_MakePoint(2,2)])) as hull)
select * from hulls where ST_GeometryType(hull)='ST_Polygon';
, 당신은 내가 그들은 모두이 동일한 지 확인하는 방법에 관한이 정말 질문에 대한 대답 잘 모르겠어요
with hulls as (SELECT groupid, ST_ConvexHull(ST_Collect(geom)) As hull_geom
FROM somepoints GROUP BY groupid)
select * from hulls where ST_GeometryType(hull_geom)='ST_Polygon';
답변을 수락하고 감사 드려 죄송합니다. 이것은 트릭을 수행합니다. 이제 분명히 - 하루는 앉아서 모든 ST_ 함수 (예 : ST_GeometryType)를 읽어야합니다! – kgeo
예, 물론 그 문서를 읽는 동안 가치가 있습니다. 그러나 그들은 새로운 기능을 계속 추가하고 있습니다 :-) –