Страница 2 из 2

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

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

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

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

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

Добавлено: 04 май 2009, 11:17
BlackRead
Сорри, за оффтопик! Но не все внимательно читают...

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 04 май 2009, 12:08
BlackRead
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 день и скачать с бешеной скоростью всё, что надо, не парясь с бесплатным доступом. Я так делала - всё работает. Несколько рублей, а сколько удовольствия!!! ;))

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

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

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

Добавлено: 27 дек 2016, 18:19
Denis Rykov
Вот ещё библиотека от Mapbox для определения визуального центра полигона - Polylabel, подробнее. Попробовал на тестовом наборе, что прикладывал Максим, вот что получилось. Для всех фигур из примера считается моментально, за исключением креста (около минуты).

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

Добавлено: 27 дек 2016, 22:57
Максим Дубинин
минуту? немало что-то

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

Добавлено: 28 дек 2016, 03:28
Denis Rykov
Да не быстро. У них там есть PR, потенциально ускоряющий процесс, попробовал его - ничего принципиально не поменялось, как была минута, так и осталась.

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

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

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