2013-08-16 8 views
0

Ruby/Rail에서 PostGIS를 사용하고 있으며 원하는대로 간단한 상자 모양의 다각형을 만들었습니다 카운티의 토지 소포를 검색하십시오. st_overlaps 도구는 이전에이 작업을 수행했으며 이번에는 일했습니다. 나는 157 개 결과를 얻을 수PostGIS의 st_overlaps 메소드는 다각형의 외면을 구성하는 LinearRing과 중복되는 결과 만 반환합니다.

Parcel.where{st_overlaps(:parcel_multipolygon, polygon)} 

:

그래서 내가 활성 기록 호출을 실행 한 후 (이 밝혀 다중 다각형)이

factory = RGeo::Cartesian.factory 
coords = [[1554780, 1101102], [1561921, 1062647], [1634713, 1097531], [1630867, 1140657]] 
points = coords.map { |pair| RGeo::WKRep::WKTParser.new.parse("POINT (#{pair.first} #{pair.last})") } 
ring = factory.linear_ring(points) 
polygon = factory.polygon(ring) 

아래에 소포를 검색 할 다각형을 생성 . 기대했던 것보다 훨씬 적습니다. 내 사용자 지정 스크립트를 사용하여 kml 파일을 내 보냈습니다. 나는 그것을보기 위해 곧 업로드 할 것이다. 한 번 구글 어스에 탑재되는 KML에서 볼 수있는 것들

는 명확 내가 아래에 검색하기 위해 만든 매개 변수 - 다각형의 외부 링을 saddling하는 영역 (다각형) 소포를 표시 핀의 평행 사변형이다. 명확하고 뚜렷한 모양의이 보이지 않는 선을 따라 많은 소포가 있습니다. 모양 중간에 핀이 없으므로 검색 결과가 외면 모서리가있는 소포 다중 다각형의 겹침에만 있음을 분명히 나타냅니다 (LinearRing)를 검색합니다.

st_overlaps에 대한 설명서를 다시 읽었을 때, 여기에 문제가있는 것 같아서 당황 스럽습니다.

다음은 kmz 내보내기를 볼 수있는 링크입니다. (내보내기 전에 지리적으로 변환 된 좌표). 브라우저에서 볼 수 있습니다. 검색 폴리곤 자체는 포함되어 있지 않지만 외부 링이 어디에 있는지 쉽게 알 수 있습니다. https://docs.google.com/file/d/0B5inC0VAuhH1TXdTbWQ2RngxZk0/edit?usp=sharing

답변

1

예상대로 작동한다고 생각합니다. St_overlaps는 실제로 서로 위에 놓이는 기능을 제공합니다. 다각형 내부의 모든 기능을 사용하려면 ST_Intersects을 시도하십시오.

+0

체크 아웃합니다. 그것은 쉬운 하나, 감사 Shaun –

+0

하하 you'er 환영 :) 나는 몇 년 전 똑같은 것을 기억하고 기억 : P – Shaunak

+0

나는 재미있는 오늘 배웠습니다. btw. 나는 당신이 그것과 km 드라이브를 공유 할 수 있었다라는 것을 안다. 그리고 google drive는지도에서 그것을 열 것이다! 감사! 웃음 – Shaunak