Як визначити центроїд багатокутників?


34

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

В ідеалі координати центроїдів були б у таблиці атрибутів багатокутника, і я міг би просто скопіювати та вставити координати.

Мені не хочеться створювати окремий точковий векторний файл, який представляє центроїд, а потім знаходити ці координати та копіювати та вставляти їх.


Який формат - ваш текстовий документ?
— Nathan W

Це документ у форматі MS, але насправді це може бути все, що завгодно.
— Девід

Відповіді:


34

Центроїд - це визначення точкового шару, а не багатокутник. Для цього вам потрібно створити новий шар, який є простим як пиріг у QGIS 1.8 та новіших версіях.

  • Завантажте свій багатокутник
  • Перейдіть до меню -> Вектор -> Інструменти геометрії -> багатокутник центроїд і створіть точковий шар центроїда
  • Експортуйте координати створеного центроїда в таблицю атрибутів, натиснувши -> Меню вектор -> Інструменти геометрії -> Експорт / Додати стовпчики геометрії.

Після цього ви можете зробити просторове з'єднання, щоб додати стовпчики центроїдів до полігонів та ще раз видалити точковий шар.


Дякую за відповідь, я вдячний за допомогу. І все-таки це дуже проста робота, щоб дізнатися, що таке координати центроїда. Шкода, що в QGIS немає більш простого способу.
— Давид

Якщо ви все ще хочете простіше, ви можете поглянути на PostGIS та функцію ST_Centroid, згадану нижче. Таким чином вам не потрібно створювати тимчасові файли. Крім того, ви можете написати собі сценарій python для QGIS або використовувати SEXTANTE Modeler.
— Curlew

10

Дійсно, створення нового формату файлів є одним з найпростіших варіантів. Однак вам не потрібно копіювати та вставляти координати. Зробити це:

  • Створіть свій файл центроїдів за допомогою інструмента «Полігонний центроїд».
  • Відкрийте таблицю атрибутів centroids та зробіть її редагованою (піктограма олівця внизу).
  • Відкрийте калькулятор поля (піктограма калькулятора внизу) та оберіть опцію Створити нове поле і назвіть це щось значиме (наприклад, Easting).
  • У списку функцій розгорніть меню Геометрія та виберіть $ x, а потім повторіть з новим стовпцем для $ y (називаючи це Northing, скажімо).
  • Збережіть свої зміни, і тепер у вас є всі координати, як частина таблиці атрибутів, доповнена оригінальним ідентифікатором полігону та атрибутами, якщо ви використовували інструмент центроїдів.

Крім того, вам доведеться імпортувати свої дані в PostGIS, а потім перебирати полігони, використовуючи функцію ST_Centroid і зберігати результат у новому полі. Робота, яка займається, приблизно однакова, але другий варіант означає, що у вас немає окремого файлу точки центроїдів.


Дякую за відповідь. Я вдячний за твою допомогу. Здається, відповідь Керла трохи легше для мене. Але обидва ці відповіді - це набагато більше роботи, яку я хотів. Врешті-решт у вас з’являються різні файли форм, які вам потрібно назвати, видалити, відредагувати тощо.
— David

8

Більш міцний засіб на відповідь Майка: long = toreal(regexp_substr(geom_to_wkt(centroid($geometry)), '(-?\\d+\\.?\\d*) -?\\d+\\.?\\d*')) lat = toreal(regexp_substr(geom_to_wkt(centroid($geometry)), '-?\\d+\\.?\\d* (-?\\d+\\.?\\d*)'))


1
Занижена відповідь;)
— Фернандо Іраразавал G

6

Як щодо використання цього в поле 2.2 калькулятор?

Довге поле = substr (geomToWKT (центроїд ($ геометрія)), 7, 12)

Lat field = substr (geomToWKT (центроїд ($ геометрія)), strpos (geomToWKT (центроїд ($ геометрія)), '') +2, 12)

Здається, це вирішено в 2.6 з опцією xmin xmin (центроїд ($ геометрія))


5

Я щойно натрапив на цю посаду майже на 5 років (!), Але ось що я роблю для обчислення центроїдів багатокутника у версії 2.18.14:

  1. Почніть редагувати шар багатокутника
  2. Створіть нове текстове поле, назвіть це центрокси
  3. Використовуючи калькулятор поля, обчисліть центрокси = x ($ геометрія) || ',' || y ($ геометрія)
  4. Результат виглядає приблизно так: 397640.915545362, 2126924.53637653
  5. Збережіть свої зміни.
  6. Тепер ваш багатокутний шар містить поле зі значеннями x, y центроїда

простий та чудовий
— Kazuhito

3

Пов’яжіть таблицю центроїдних точок із таблицею багатокутників, а потім поставте координати з назвою та формою багатокутника. Полігони не мають одного ширини в собі


Дякую за вашу відповідь. Так, я усвідомлюю, що у багатокутників немає одного ширини, а самі по собі це просто щось, що можна обчислити. На жаль, це не простіше, ніж це в QGIS. Ще раз дякую всім за відповіді. І так швидко теж. Спасибі!
— Девід

2

Потрапив через цю публікацію і важко було дотримуватися, запропонував оновити:

Примітка. Це обчислює широту та довготу у ваших координатах проекції (які можуть бути метри). Якщо ви хочете, щоб координати були в десяткових градусах (я вважаю, що ви це робите, або вони здебільшого не зрозумілі) спочатку збережіть шар у цій CRS: EPSG: 4326, WGS 84.

  1. Калькулятор відкритого поля
  2. Створіть нове поле
  3. Введіть ім’я (або Широта, або Довгота)
  4. Виберіть десятковий як тип поля виводу
  5. Введіть цей вираз для широти: y ($ геометрія) і цей вираз для довготи: x ($ геометрія)
  6. Натисніть OK

-2

lon = ToReal (regexp_substr (geomToWKT (центроїд ($ геометрія)), "([\ s] ')) lat = ToReal (regexp_substr (geomToWKT (центроїд ($ геометрія))",' \ s [)] ')


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