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


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.