Обчисліть координатні рамки вибраного многокутника за допомогою QGIS


17

Я просто вручну (і я трохи неточно впевнений) отримав координатні рамки для графського полігону, що є виділенням з більшого шару фігур округу. Я хотів би мати можливість використовувати плагін QGIS або іншу функцію для швидкого обчислення цього, а не від руки. Це майже напевно можливо, але я не зміг знайти нічого за допомогою пошуку в Google

Відповіді:


26

Наступна маленька функція Python виведе координати обмежувального поля поточної активної функції:

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

Дякую за допомогу. Я також забував натиснути клавішу Enter, щоб повністю визначити функцію printBB (), перш ніж викликати її.
cbunn

2
Мені довелося скористатися print (feature.geometry (). LimitingBox (). ToString ()) для рядка 3.
cm1

17

QGIS може зробити це через Polygon від Layer Extent

Вектор - Інструменти дослідження - Полігон від рівня шару

Буде створено новий форм-файл з такими атрибутами, як XMIN XMAX YMIN YMAX AREA WIDTH HEIGHT


1
Ви повинні перевірити Use only selected obectsі calculate for every objectотримати бажаний результат.
AndreJ

Хм, що не працювало для мене,
вихідний формфайл

1
Ви хочете встановити прапорець "Використовувати лише вибрані об'єкти", лише якщо у вас вибрані об'єкти. Я залишив обидва ці поля без контролю та досягнув прекрасного результату.
Йоганна

4

Ви також можете це зробити, використовуючи плагін PyShp в Python .. Це набагато простіше ...

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

Якщо вам потрібно багато обмежувальних полів багатокутника, ви можете "Зберегти як ..." ваш шар в GeoJSON за допомогою параметра WRITE_BBOX = ТАК, і перед вашим атрибутом "геометрія" буде навіть один атрибут "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 ($ геометрія)
  • Ви отримаєте нове поле в таблиці атрибутів з координатою ЛІВО.

    Повторіть це для ВПРАВО, BOTTOM, TOP з виразами:

  • x_max ($ геометрія)
  • y_min ($ геометрія)
  • y_max ($ геометрія)
  • Приклад результату введіть тут опис зображення

    Потім ви можете встановити плагін AutoFields для автоматичного оновлення цих полів при зміні функції.

    Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
    Licensed under cc by-sa 3.0 with attribution required.