STIntersects를 사용하여 다각형의 포인트 수를 제공하도록 필드를 업데이트합니까?


11

포인트 레이어가 있습니다 (dbo.ptLayer)

  • 약 1M 포인트
  • 공간 형상 유형 (dbo.ptLayer.geom)
  • 공간 인덱스는 없지만 데이터 수집이 완료되면 공간 인덱스가 생성됩니다.

다각형 레이어 (dbo.polygonLayer)가 있습니다

  • 약 500 개의 다각형.
  • 공간 형상 유형 (dbo.polygonLayer.geom)

둘 다 ID라는 필드를 가지고 있습니다.

다각형 레이어의 빈 정수 필드를 각 다각형 내의 총 점 수로 채우려면 어떻게해야합니까?

다른 소프트웨어 제품에 액세스 할 수 있지만 SQL 및 SQL Server 내에서 순수하게 수행 할 수있는 작업에 관심이 있습니다.

STIntersects 를 사용해야한다고 생각 하지만이 필드를 채우려면 업데이트를 수행하는 가장 좋은 방법이 무엇인지 알고 싶습니다.

답변:


17

필요한 작업을 수행해야합니다.

선택 쿼리 :

SELECT polygons.id, Count(*) 
FROM points
JOIN polygons
ON polygons.ogr_geometry.STContains(points.ogr_geometry) = 1
GROUP BY polygons.id

업데이트 :

UPDATE polygons
SET [countcolumn] = counts.pointcount
FROM polygons
JOIN
(
 SELECT polygons.id, Count(*) 
 FROM points
 JOIN polygons
 ON polygons.ogr_geometry.STContains(points.ogr_geometry) = 1
 GROUP BY polygons.id
) counts ON polygons.id = counts.id

이것은 내 데이터 세트 중 하나에서 해당 쿼리를 실행 한 결과입니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.