PostGIS를 사용하여 경계 상자로 선택


12

PostGIS 데이터베이스에 큰 데이터 세트가 있습니다. 데이터를 GeoJSON으로로드하는 웹 인터페이스를 통해보고 있습니다. 한 번에 클라이언트에게 제공 할 데이터가 너무 많습니다 (10MB의 가치가 있습니다 ...). 창 가장자리 (아래 이미지의 점선)에 의해 형성된 경계 상자 내에 데이터 영역을 가져오고 싶습니다. ). 점 f와 g의 좌표를 얻는 것은 쉽습니다.

질문 1 : 이것이 일을하는 좋은 방법입니까? 타일로 캐싱을 생각해야합니까, 아니면이 방법이 충분히 효율적입니까?

질문 2 : 이 경계 상자 내의 데이터 만 어떻게 검색합니까?

질문 3 : 모양이 경계 상자의 가장자리와 겹치는 경우 (예 : 아래의 모양 A) 두 번째 이미지처럼 쿼리 할 때 자르는 간단한 방법이 있습니까?

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


클라이언트에서 어떤 뷰어를 실행하고 있습니까?
underdark

지도 견인. 현재 OpenLayers를 공급자로 사용하고 있습니다.
Mr_Chimp

답변:


8

질문 순서를 변경하면 절차가 있습니다.

2) bbox와 교차하는 것만 선택하십시오 ( ST_Intersects).
3) bbox와 교차하여 다각형을 자릅니다 ( ST_Intersection).
1) 결과 ( CREATE TABLE newtable AS SELECT...) 로 새 테이블을 만듭니다 .

ST_Intersection 문서 는 코드 샘플을 포함합니다. 이를 적용하고 ST_PolygonFromText 를 bbox로 사용해야 합니다.


4

나는 대부분의 (모든) 웹 클라이언트 (및 데스크탑 gis)가 이것을하고 있다고 생각합니다. 전체 데이터 세트를 보낼 수 없습니다.

어떤 종류의 캐싱을 설정해야하는 경우 데이터가 변동이 많은지 또는 변경되는지에 따라 다릅니다.

이 경계 상자를 확인하여 데이터를 가져 오려면 공간 인덱스가있는 경우 매우 빠르지 만 물론 무료는 아닙니다. CPU 파워로 지불합니다.

앞에서 말했듯이 : 범위 내에서 다각형을 찾으려면 ST_Intersects를 사용하십시오.

익스텐트 내부의 일부만 가져 오려면 ST_Intersection을 사용하십시오. ST_Intersection은 비용이 많이 드는 프로세스입니다. 매우 큰 다각형이 없으면 전체 다각형을 보내는 것이 좋습니다.

그러나 나는 당신이 테이블에 넣는 대신에 즉시 이것을하고 싶다고 생각합니다.

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