Найти "центр тяжести" полигона и отметить его точкой

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение geologic » 17 апр 2009, 10:43

2BlackRead:
Вы полагаете, что этот вопрос впервые заинтересовал именно вас? (
Я не сомневаюсь, что вопрос решен математически. Я имел в виду "алгоритм, эффективный для ГИС". Я занимался геометризацией и в кадах, и самостоятельно. И в общем-то назвал пути решения - растровый или разбиение на треугольники. Вы можете с ходу назвать еще какой-либо вариант для плоских произвольных фигур? Прошу прощения что неточно высказался, и спровоцировал вас на флейм. Ну а в первом посте вы верно сформулировали не только свои, но и мои "воспоминания" о возне с центроидами на практике, попробую подтожить это наше общее (если позволите) мнение:

1) центр тяжести не совпадает точно с центроидом (разве что для простых фигур);
2) центроид капитально не совпадает с центром тяжести для сложных фигур (потому что вычисляется принципиально по-другому, упрощенным способом, как центр главной оси, например);
3) расчислить разницу между простыми и сложными фигурами не представляется возможным (ее можно разве что уловить интуитивно, что превращает работу опять-таки в ручную).

Проверить опытным путем все это непросто, нужна большая статистика на разнородных конрурах. Да и не очень нужно, мне кажется, проще найти описание ESRI. Помнится, это было для ArcINFO.

BlackRead
Интересующийся
Сообщения: 17
Зарегистрирован: 25 окт 2008, 03:01
Репутация: 0

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение BlackRead » 04 май 2009, 11:17

Сорри, за оффтопик! Но не все внимательно читают...

Исключительно 2 Izdolt:
Izdolt писал(а):
BlackRead писал(а):
geologic писал(а):IMHO векторно ЦТ непросто вычислить, вряд ли есть готовый алгоритм.
Естественно, есть!!!
Вы меня тоже извините, но я не очень понял - зачем Вы вообще написали свое сообщение?
Внимательно ещё раз прочитайте своё же сообщение. Человек говорит: "вряд ли есть готовый алгоритм". Я ему отвечаю: "есть".
Izdolt писал(а): ... И в данном случае послать в московские библиотеки - примерно равносильно тому, что просто послать...
Ещё раз мой ответ прочитайте. Кроме "посыла" в библиотеку (в три часа ночи ;) Я отправила в др. места и, даже, примерное название литературного источника указала.

Когда-то у меня самой такая книга была, пока не спёрли. Там все алгоритмы (готовые!) были изложены на алгоритмическом языке. (Не важно каком - тот, кому нужен алг., переведёт спокойно.)
--
Маша

BlackRead
Интересующийся
Сообщения: 17
Зарегистрирован: 25 окт 2008, 03:01
Репутация: 0

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение BlackRead » 04 май 2009, 11:57

geologic писал(а): 2) центроид капитально не совпадает с центром тяжести для сложных фигур (потому что вычисляется принципиально по-другому, упрощенным способом, как центр главной оси, например);
3) расчислить разницу между простыми и сложными фигурами не представляется возможным (ее можно разве что уловить интуитивно, что превращает работу опять-таки в ручную).

Проверить опытным путем все это непросто, нужна большая статистика на разнородных конрурах.
Не совсем понятно, что ты имеешь в виду под "сложной" фигурой. В математике (и компьютерной графике, где, собственно, это и изучают) есть понятие выпуклая фигура и невыпуклая (впуклая). Для них и есть разница в центроиде (в ГИСовском понимании) и центре тяжести.

Однако, эти понятия математически точно сформулированы. И алгоритмы для них верны не статистически, а абсолютно.

Как считать ц. для выпуклых фигур можно почитать тут и тут.

Текстом:
local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/
en.wikipedia.org/wiki/Centroid

Но, помните, что там Centroid - центр тяжести!

Кстати, если у нас есть произвольная фигура, то после вычисления указанными способами центра масс она может не попасть внутрь контура. И вот тут-то можно это проверить. Делается это по несложной формуле "Проверка попадания указанной точки внутрь контура указанной фигуры". Т. е. решение опять таки есть.
--
Маша

BlackRead
Интересующийся
Сообщения: 17
Зарегистрирован: 25 окт 2008, 03:01
Репутация: 0

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение BlackRead » 04 май 2009, 12:08

Izdolt писал(а): ...равносильно тому, что просто послать...
Специально для "посланного" Izdolt:
Вот "букварь по компьютерной графике" - depositfiles.com/ru/files/joogmb3r2

В этой книжке много полезного: все нужные алгоритмы расчётов, но (!) на псевдо-языке. (Сам-то переведёшь на какой-нибудь Бейсик? Или тоже за тебя...)


Не скрою, времени потратила УЙМУ, сидя в поисковике! Тем более, что мне это не надо. ЦЕЛЫХ...
...
...
...
7 мин.!!!
В др. раз, перед тем, как плакаться, вникайте в написанное.

--
Маша

зы: Вот ещё, до кучи 4 книги (+3 мин.):
http://depositfiles.com/ru/files/a8i1d23rr

http://depositfiles.com/ru/files/fmxhhazu7

http://depositfiles.com/ru/files/zzpy1y0u1
http://depositfiles.com/ru/files/05aiql227
(2 тома)

http://depositfiles.com/ru/files/f7xv9hgoz

pps: Для качальщиков: Реально проще купить GOLD-эккаунт на пару недель или 1 день и скачать с бешеной скоростью всё, что надо, не парясь с бесплатным доступом. Я так делала - всё работает. Несколько рублей, а сколько удовольствия!!! ;))

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение Mavka » 02 авг 2011, 09:31

Хороший обзор алгоритмов построения центроидов дается в книге: Dr Michael de Smith and Prof Paul Longley, "Geospatial Analysis - A comprehensive guide" (html). Приведены 6 видов центроидов, от простого центра bbox и центра масс до гарантированно лежащих внутри полигонов.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение Denis Rykov » 27 дек 2016, 18:19

Вот ещё библиотека от Mapbox для определения визуального центра полигона - Polylabel, подробнее. Попробовал на тестовом наборе, что прикладывал Максим, вот что получилось. Для всех фигур из примера считается моментально, за исключением креста (около минуты).
Вложения
polylabel.png
polylabel.png (16.69 КБ) 6211 просмотров
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение Максим Дубинин » 27 дек 2016, 22:57

минуту? немало что-то
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение Denis Rykov » 28 дек 2016, 03:28

Да не быстро. У них там есть PR, потенциально ускоряющий процесс, попробовал его - ничего принципиально не поменялось, как была минута, так и осталась.
Spatial is now, more than ever, just another column- The Geometry Column.

Vadim
Завсегдатай
Сообщения: 297
Зарегистрирован: 03 июн 2015, 10:19
Репутация: 72

Re: Найти "центр тяжести" полигона и отметить его точкой

Сообщение Vadim » 19 янв 2017, 11:10

Ещё как вариант, в ArcGIS Pro можно вычислить координаты центра тяжести (CENTROID_INSIDE) объектов и, соответственно, сгенерировать эти точки.

http://pro.arcgis.com/en/pro-app/tool-r ... ibutes.htm

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей