Здравствуйте
Как измерить "вытянутость" полигонального объекта- расстояние между двумя максимально удаленными его узлами? Естественно автоматически или полуавтоматически (ведь полигонов- 10 000)), с возможностью записать все это дело в таблицу в качестве атрибутов. В крайнем случае- как определить координаты этих максимально удаленных узлов (НЕ крайних узлов- северного, южного и т.п.- а именно максимально удаленных друг от друга)
программы- ArcGis , mapinfo
очень прошу помочь. заранее спасибо
"вытянутость" полигонов
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 26 фев 2011, 17:22
- Репутация: 0
- Откуда: Харьков
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: "вытянутость" полигонов
решение только одно - посчитать расстояние между всеми узлами. возможно, что для этого можно использовать не "минимальный описывающий прямоугольник", а "минимальный описывающий многоугольник" - в нем все же точек обычно меньше. на мапбсике программа из 10 строк максимум.
если развалить полигоны на точки, то можно вообще где угодно посчитать. очень возможно, что в и SQL запросе можно.
за два SQL запроса уж точно можно - в одном посчитать расстояния между всеми точками, входящими в один объект, а во втором отобрать их максимум. если это спроецированные данные, то тогда по теореме пифагора считаем расстояния - подойдет любая СУБД, если долгота/широта, то надо ГИС напрячь для расчета расстояний с приемлемой точностью.
если развалить полигоны на точки, то можно вообще где угодно посчитать. очень возможно, что в и SQL запросе можно.
за два SQL запроса уж точно можно - в одном посчитать расстояния между всеми точками, входящими в один объект, а во втором отобрать их максимум. если это спроецированные данные, то тогда по теореме пифагора считаем расстояния - подойдет любая СУБД, если долгота/широта, то надо ГИС напрячь для расчета расстояний с приемлемой точностью.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: "вытянутость" полигонов
вытянутость -это одно, а максимальное расстояние (диаметр) - немного другое. Что-то подсказывает, что самый лучший вариант - растеризовать на мелкой сетке, и посчитать все метрики в fragstats, там и диаметр есть (хотя и преобразованный), и вытянутость, и много чего ещеvetal писал(а):Здравствуйте
Как измерить "вытянутость" полигонального объекта- расстояние между двумя максимально удаленными его узлами?
Последний раз редактировалось gamm 03 мар 2011, 08:32, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: "вытянутость" полигонов
вы умеете за 10 строк построить выпуклую оболочку? не поделитесь?Boris писал(а):решение только одно - посчитать расстояние между всеми узлами. возможно, что для этого можно использовать не "минимальный описывающий прямоугольник", а "минимальный описывающий многоугольник" - в нем все же точек обычно меньше. на мапбсике программа из 10 строк максимум.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: "вытянутость" полигонов
Построение многоугольника требует одной команды или одного запроса:gamm писал(а):вы умеете за 10 строк построить выпуклую оболочку? не поделитесь?... на мапбсике программа из 10 строк максимум.
10 строчек - это о всей обработке многоугольника хоть простого, хоть выпуклого. Или два запроса к СУБД.ConvexHull( ) function
Purpose
Returns a region object that represents the convex hull polygon based on the nodes from the input object. The convex hull polygon can be thought of as an operator that places a rubber band around all of the points. It will consist of the minimal set of points such that all other points lie on or inside the polygon. The polygon will be convex-no interior angle can be greater than 180 degrees.
Syntax
ConvexHull( inputobject )
inputobject is an object expression.
Return Value
Returns a region object.
Description
The ConvexHull( ) function returns a region representing the convex hull of the set of points comprising the input object. The ConvexHull( ) function operates on one single object at a time. To create a convex hull around a set of objects, use the Create Object As ConvexHull statement.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей