QGIS를 사용하여 선택한 다각형의 경계 상자 좌표 계산


17

방금 수동으로 (그리고 다소 부정확하게 확신합니다) 카운티 다각형의 경계 상자 좌표를 검색했습니다. 이는 카운티 모양의 더 큰 레이어에서 선택한 것입니다. QGIS 플러그인 또는 다른 기능을 사용하여 이것을 직접 수동으로 계산할 수 있기를 원합니다. 이것은 거의 가능하지만 Google 검색으로 아무것도 찾을 수 없습니다

답변:


26

다음의 작은 파이썬 함수는 현재 활성화 된 지형지 물의 경계 상자 좌표를 출력합니다.

def printBB():
    feature = iface.activeLayer().selectedFeatures()[0]
    print feature.geometry().boundingBox().toString()

함수를 정의하려면 플러그인 메뉴에서 Python 콘솔을 열고 세 줄을 복사하여 콘솔에 붙여 넣은 다음 Enter 키를 누릅니다. 그런 다음 printBB()원하는 기능을 선택한 상태에서 enter를 입력 하고 눌러 기능을 호출 할 수 있습니다 .


1
이 스크립트를 실행하려고하면이 오류가 발생합니다. File "<input>", line 4 printBB() ^ SyntaxError: invalid syntax
cbunn

@cbunn 당신이 레이어 / 목차에서 레이어를 선택했는지 확인하십시오-이것에 매우 민감합니다!
DPSSpatial

도와 주셔서 감사합니다. 또한 printBB () 함수를 호출하기 전에 enter를 눌러 함수를 완전히 정의하는 것을 잊었습니다.
cbunn

2
3 번 줄에 print (feature.geometry (). boundingBox (). toString ())을 사용해야했습니다.
cm1

16

QGIS는 Layer Extent의 Polygon을 통해이를 수행 할 수 있습니다

스톡 콘텐츠-연구 도구-레이어 범위에서 다각형

XMIN XMAX YMIN YMAX AREA WIDTH HEIGHT와 같은 속성을 가진 새로운 shapefile을 생성합니다


1
원하는 결과 를 확인 Use only selected obects하고 calculate for every object얻어야합니다.
AndreJ

나를 위해 작동하지 않았다 그 흠, 출력 된 모양 파일이 빈은 본질적으로했다
boulder_ruby

1
개체를 선택한 경우에만 '선택한 개체 만 사용'을 선택하십시오. 나는 두 필드를 모두 체크하지 않고 좋은 결과를 얻었습니다.
Johanna

4

파이썬에서 PyShp 플러그인을 사용 하여이 작업을 수행 할 수도 있습니다. 훨씬 간단합니다 ...

import shapefile

sf = shapefile.Reader("Path to shapefile...") 
shapes = sf.shapes() 
bbox = shapes[0].bbox # Retrieves the bounding box of the first shape

print bbox # Will print the bounding box coordinates

PyShp 및 기타 기능에 대한 자세한 내용은 여기를 참조하십시오 .


3

많은 다각형 경계 상자가 필요한 경우 WRITE_BBOX = YES 옵션을 사용하여 레이어를 GeoJSON에 "다른 이름으로 저장 ..."할 수 있으며 다중 다각형의 경우에도 "형상"속성 앞에 단일 "bbox"속성이 있습니다.

..., "bbox": [ -70.062408006999874, 12.417669989000046, -69.876820441999939, 12.632147528000104 ], "geometry": ...

1

다른 곳에서 목록으로 가져올 수있는 필드를 생성하려면이 작업을 수행해야합니다.

  1. QGIS 플러그인 FieldPyculator 설치
  2. 레이어 편집 토글
  3. 속성 테이블에 새 열을 문자열로 작성하십시오 (예 : bbox (편집 저장)).
  4. FieldPyculator 열기
  5. 업데이트 필드를 bbox로 설정
  6. 필드 표현식에 다음과 같이 입력하십시오.

    bb = $geom.boundingBox().toString()

    bb = bb.replace(' ','')

    bb = bb.replace(':',',')

    value = bb

  7. 운영

  8. 편집 기능 끄기 및 레이어 저장

1

빠른 액세스를 위해 옵션은 bbox 좌표를 속성 테이블에 유지하는 것입니다.

  • Toogle 편집 모드
  • 발 사장 계산기
  • 새 필드 만들기 설정, 이름 설정 (예 : xmin), 유형 (십진법), 길이, (정밀도)
  • 식 : x_min ($ geometry)
  • LEFT 좌표가있는 속성 테이블에 새 필드가 표시됩니다.

    표현식이있는 RIGHT, BOTTOM, TOP에 대해이를 반복하십시오.

  • x_max ($ 형상)
  • y_min ($ 형상)
  • y_max ($ 형상)
  • 결과의 예 여기에 이미지 설명을 입력하십시오

    그런 다음 기능이 변경 될 때 자동 필드 플러그인 을 설정 하여 이러한 필드를 자동으로 업데이트 할 수 있습니다 .

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