문제

다음 두 테이블이 있습니다.-

지오 시페이프

  • Geoshapeid int Identity
  • 이름 varchar (100)
  • Shapefile Geography [이것은 Lat/Long의 폐쇄 된 다각형입니다

범죄

  • 범인 위치 정체성
  • Latlong Geography [이것은 LAT/Long Point입니다

이제 약 10K 지오 시페이프 결과와 약 500 크리 멜로가가 있습니다.

나는 500 범죄 LAT/긴 포인트가 모두 존재하는지 알아 내려고 노력하고 있습니다.

:( 나는 그것을 얻지 못합니다! 나는 STIntersects 하위 퀘스트에서는 작동하지 않았습니다. 제안이 있습니까?

건배!

편집 1 : 사용할 수 없습니다 GEOMETRY 기능 .. (위에서 언급 한 바와 같이) 이들은 모든 지리 유형이기 때문입니다.

편집 2 : 사용 방법을 알고 있습니다 STContains 그리고 STIntersects. 그 기본 예를 제공하지 마십시오. 위의 테이블 구조로 복잡한 쿼리를하고 싶은 것이 더 궁금합니다.

도움이 되었습니까?

해결책

당신의 '편집'과 관련하여, 그것은 종종 "제발 제공하지 마십시오 ..."가 포함 된 질문이 보이지 않습니다. 분명히 약간의 도움이됩니까? 특히 당신은 실제로 우리에게 당신을 보여주지 않았기 때문에 하다 알고 있습니다 STContains 또는 STIntersects (또는 Filter() 그 문제에 대한)...

어쨌든, 나는 zipcodes와 storelocations의 데이터베이스를 편리하게 가지고 있었기 때문에 당신과 일치하도록 테이블/칼럼의 이름을 바꿨습니다 (6,535 개의 범죄 로코 인과 3,285 개의 Geoshapes가 있습니다). 나는 당신이 지금까지 그것을 알아 냈다고 가정합니다. 그러나 다른 사람이 이것을 유용 할 수도 있습니다 ...

다음 쿼리는 수를 반환합니다 범죄GeoShapes.shapefile

SELECT G.Name, COUNT(CL.Id)
FROM   GeoShapes G
INNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) = 1
GROUP BY G.Name
ORDER BY 2 DESC

필요합니다 나이 (20 분 마찬가지) 지리 공간 지수를 설정하지 않았고 내 모양 파일에는 높은 점수가 있지만 성공적으로 실행됩니다. 제안대로 결과를 제한하고 싶다면 다음과 같습니다.

SELECT G.Name, COUNT(CL.Id)
FROM   GeoShapes G
INNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) = 1
GROUP BY G.Name
HAVING COUNT(CL.Id) = 500

물론 당신은 숫자 500을 하드 코드하고 싶지 않으므로 추가 할 수 있습니다. COUNT(*) FROM CrimeLocations 서브 쿼리 또는 별도의 쿼리에서 총계가있는 변수.

그게 충분히 복잡합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top