최대 너비 / 높이 비율로 "경사 경계 상자"를 작성 하시겠습니까?


13

아래 이미지와 같이 입력 기능 세트에서 최대 너비 / 높이 비율 ( "경사 경계 상자")로 주변 사각형을 만들고 싶습니다.

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

예 PostGIS와 기능 ST_EnvelopeST_Box2D뿐만 아니라 FME 변압기 BoundingBoxReplacerBoundingBoxAccumulator바운딩 박스 축과 평행하게 발생한다.

PostGIS, QGIS 또는 FME와의 접근 방식을 사용하는 제안은 크게 환영합니다!


가 아닌 경우는 정확한 사람은 FME 또는 PostGIS와에 적용 할 수있는 솔루션을 요구하지 않기 때문에, 중복. 그럼에도 불구하고 위에서 언급 한 질문에 대한 답변에서 언급 된 파이썬 스크립트는 FME PythonCaller 변환기에 넣는 데 매우 유용합니다. 작업 공간이 실행 ​​중이면 약간 수정 된 스크립트로 솔루션을 게시합니다.
Jochen Schwarze의

중복되지 않았을뿐만 아니라 참조 된 질문이 수락되지 않았으며, 어떤 알고리즘을 사용하는지에 대한 답이없는 질문이 있습니다.
John Powell

아래 답변을 참조하십시오. FME에서이 작업을 수행 할 수 있어야합니다. 어떤 버전을 사용하고 있습니까?
Fezter

답변:


9

이것은 아마도 프로세싱 측면에서 과잉이며 더 나은 수학적 솔루션이있을 수 있지만 쿼리로 간단히 수행 할 수있는 방법의 예입니다

SELECT 
   id, rotated_by, oblique_bound
  FROM 
     (
     SELECT 
        m.id,
        r rotated_by, 
        ST_Rotate(ST_Envelope(ST_Rotate(m.geom, r)),-r) oblique_bound,
        row_number OVER (PARTITION BY id) 
                   ORDER BY ST_Area(ST_Rotate(ST_Envelope(ST_Rotate(m.geom, r)),-r))) N
       FROM 
          generate_series(0, 90, 0.1) N(r), my_table m
    ) s
WHERE N = 1;

그러면 지오메트리가 회전하고, 경계가 만들어지고, 0과 90 사이의 10 분의 1 도마 다 회전이 반전됩니다. 그러면 면적이 가장 작은 경계 상자가 만들어집니다. 물론 이것은 완전히 정확한 방법은 아니며 요구 사항에 따라 일련의 증분 값을 조정해야 할 수도 있습니다.


실제로 이것이 훌륭한 해결책이라고 생각합니다. 정확한 솔루션은 매우 비쌉니다. 최고의 x 경계 상자를 기록하기 위해 plpgsql에서 쉽게 확장 할 수 있으며 두 상자가 매우 가까이 있으면 확대하고 약간의 작은 회전을 수행하여 정확한 솔루션에 더 가까이 갈 수 있습니다. 우연한 사례가 있었지만 좋은 접근 방식입니다.
존 파월

그리고 추가 혜택으로는 회전 각도 :-) 보존
요헨 SCHWARZE

6

QGIS에는 "최소 지향적 경계 상자"알고리즘이 있습니다.


"최소 경계 상자"라고합니다. Processing Toolbox> QGIS 지리 알고리즘> 벡터 일반 도구에서 호출 할 수 있습니다.
Stefan

QGIS 2.14를 넘어선 것으로 추정됩니다. 왜냐하면 우리가 여전히 여기에서 사용하고있는 2.14.15LTR에서는 찾을 수 없기 때문입니까?
Jochen Schwarze

@JochenSchwarze는 QGIS 2.14.19에 존재합니다. 처리 도구 상자에서 검색해야합니다. 직접 다음에서 찾을 수 있습니다Processing toolbox -> QGIS geoalgorithms -> Vector General tools -> Oriented minimum bounding box
ahmadhanb

4

경계 상자 대체물 당신이 언급 한 변압기는이 작업을 수행 할 수 있어야합니다. 문서에 따르면

형상의 형상을 2 차원 경계 상자 또는 2 차원 최소 방향 경계 상자로 바꿉니다.

이 매개 변수를 사용하면 축 정렬 또는 직선 경계 상자를 선택할 수 있습니다.

분명히, 방향 바운딩 박스의 더 긴면의 각도를 포함하는 개선제안이 있습니다. 안전한 번호 PR # 53924입니다.

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