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

пересечения

Добавлено: 20 апр 2011, 23:08
Anton
Здравствуйте!
Может обсуждалось, не нашел пока...
Вопрос такой. Есть полигоны, они пересекаются. Нужно вычислить длины линий пересечений, желательно в метрических единицах. Все спроецировано.
Спасибо!

Re: пересечения

Добавлено: 20 апр 2011, 23:43
self-improving
Первое, что пришло в голову - возможно, есть более удобный и логичный метод.

Выполняете Intersect - на выходе новый полигональный класс объектов. И для него считаете "сумму периметров".
Если это БГД и все спроецировано (да еще и единицы измерения - метры и пр.), то просто щелчок правой кнопкой на поле Shape_Length (системное, создается и обновляется автоматически) и выбираете Statistics.
Если это SHP-файл или единицы измерения отличаются (напр., мили) - создаете новое поле, далее Calculate Geometry -> Perimeter (дословно не помню) -> Statistics.

Re: пересечения

Добавлено: 22 апр 2011, 14:13
Anton
Эх, в том то и дело, что не все так просто. Про Intersect сразу мысль приходит, однако дело в том, что нужно высчитывать не периметр новообразованных полигонов, а отрезки. Проще говоря, полигоны, это некие территории, охватывающие кусок берега. Так вот нужно вычислить длину береговой линии внутри таких полигонов...

Спасибо!

Антон

Re: пересечения

Добавлено: 22 апр 2011, 14:21
Игорь Сергеев
а вы переведите полученные Intersect-полигоны в полилинии и подсчитайте аналогичным подсчету периметру способом длины этих линий

Re: пересечения

Добавлено: 22 апр 2011, 14:38
ggis
Можно еще после Intersect и Feature To Line сделать Split Line At Vertices (разбить на отрезки) и посчитать длину интересующей "береговой линии внутри таких полигонов" .

Re: пересечения

Добавлено: 22 апр 2011, 15:37
self-improving
Anton, если честно, суть вопроса не совсем понятна. Говорят, правильная формулировка вопроса - уже 50% ответа :wink:
У вас есть некие полигоны_1 - условно, "висящие в воздухе". И есть полигоны_2 - берег. Границы этих полигонов_2 - это и есть береговая линия? И вам нужно узнать, какова длина береговых линий, попадающих на территорию полигонов_1?
Если так, то все решается просто. Если нет - тогда объясните, в чем все-таки суть задачи.

Re: пересечения

Добавлено: 22 апр 2011, 18:39
Anton
В качестве примера - вложенный рисунок. Нужно вычислить сумму длин отрезков A-B; C-D; E-F; G-H; I-J; K-L. Плюс длины береговой линии островов, попавших внутрь наложенного полигона. Зеленым цветом обозначена территория, охватывающая кусок берега (синий), море бесцветно. Это все разные слои.
Все бы хорошо, если бы такой полигон в задании был один, но их под сотню... Можно, в принципе, разбивать на отрезки и считать каждый, но нет ли какого-нибудь автоматизированного способа для массовой обработки?

Спасибо!

Re: пересечения

Добавлено: 22 апр 2011, 21:45
gamm
Anton писал(а):В качестве примера - вложенный рисунок. Нужно вычислить сумму длин отрезков A-B; C-D; E-F; G-H; I-J; K-L. Плюс длины береговой линии островов, попавших внутрь наложенного полигона. Зеленым цветом обозначена территория, охватывающая кусок берега (синий), море бесцветно. Это все разные слои.
Все бы хорошо, если бы такой полигон в задании был один, но их под сотню... Можно, в принципе, разбивать на отрезки и считать каждый, но нет ли какого-нибудь автоматизированного способа для массовой обработки?

Спасибо!
что мешает скопировать всю береговую линию в новый слой, превратить полигоны в полилинии, и уже потом делать пересечение?

Re: пересечения

Добавлено: 22 апр 2011, 23:58
Anton
Народ, большое спасибо за наставления. Но я видимо совсем отупел... Говорите, вроде, понятные вещи - делаю, но что-то не ладится.
1. После превращения полигонов в полилинии, при попытке сделать пересечения двух полилиний, Аркгис ругается, говорит, что надо выбрать, по крайней мере две пересекающиеся линии ??? (для редактирования выбрана нужная полилиния)
2. После intersect полигонов, после превращения новых полигонов в полилинии, они разбиваются на какое-то немыслимое количество мелких отрезков, измерять которые по отдельности или объединять для измерения очень долго. Учитывая, что исходных (покрывающих) полигонов очень много, это то же не вариант...

Что бы Вы, Господа и Дамы, делали, если бы Вам, скажем, поручили измерить длины береговых линий в пределах сотни участков на территории России, которые покрывают часть суши и часть моря, захватывая еще и острова?

Re: пересечения

Добавлено: 23 апр 2011, 06:29
gamm
Anton писал(а):но что-то не ладится.
1. После превращения полигонов в полилинии, при попытке сделать пересечения двух полилиний, Аркгис ругается, говорит, что надо выбрать, по крайней мере две пересекающиеся линии ??? (для редактирования выбрана нужная полилиния)
а зачем было ВСЕ превращать в полилинии???? То, ЧЕМ режем, всегда полигон, то, ЧТО режем, может быть и полигоном и полилинией. Береговую линию превращаем в полилинии, а "резак" (который зеленый на первой картинке) оставляем полигоном ... в МапИнфо это делается так (и даем команду "разрезать"), думаю, что в арке тоже в тулбоксе есть соотв. пункт

Re: пересечения

Добавлено: 23 апр 2011, 11:57
Anton
В АркГис можно резать только одинаковые геометрические объекты, линии - линиями, полигоны - полигонами...

Простите, что диалог затягивается, но, к сожалению, я так и не осознал способа решения уже упомянутой задачи:
Anton писал(а):Что бы Вы, Господа и Дамы, делали, если бы Вам, скажем, поручили измерить длины береговых линий в пределах сотни участков на территории России, которые покрывают часть суши и часть моря, захватывая еще и острова?

Re: пересечения

Добавлено: 23 апр 2011, 14:24
self-improving
Вот стоило на один вечер от компьютера отойти :)
Anton, вы практически все уже сделали. И Gamm вам уже почти все подсказал. Просто вы немного в терминологии запутались, т.к. MapInfo и ArcGIS - они все-таки немного разные. Дело за малым )

Итак, по порядку:
1. Слой с береговой линией превращаете из полигонов в полинии (Feature to Line)
2. Делаете пересечение новой береговое линии (линейной) с вашими полигонами (зелеными) - Intersect (почитайте справку, входные данные могут быть разными).
3. Не надо ничего измерять и объединять для измерения! ArcGIS все сам умеет, и без ваших титанических усилий.
3а. Если это БГД и все спроецировано (да еще и единицы измерения - метры и пр.) - щелчок правой кнопкой на поле Shape_Length (системное, создается и обновляется автоматически), выбираете Statistics, смотрите на строчку Sum.
3b. Если это SHP-файл или единицы измерения отличаются (напр., мили) - создаете новое поле, далее Calculate Geometry -> Length (выбираете нужные вам единицы) -> Statistics, смотрите на строчку Sum.
4. Все.

Re: пересечения

Добавлено: 23 апр 2011, 15:57
Anton
Еще раз прошу прощения!
Огромное Всем Спасибо за потраченное на меня драгоценное время!
В том-то и дело, что моя конечная задача не вычисление ПЕРИМЕТРА! Это делается на "раз" в аттрибутивной таблице. А мне надо знать длину ОТРЕЗКА!
Anton писал(а):Что бы Вы, Господа и Дамы, делали, если бы Вам, скажем, поручили измерить длины береговых линий в пределах сотни участков на территории России, которые покрывают часть суши и часть моря, захватывая еще и острова?
Это и есть мое задание.
А теперь склонитесь перед сиянием моего скромного гения! Мне все-таки удалось решить эту задачку по планиметрии для 6 класса!
1. Мы имеем дело ТОЛЬКО с периметрами! Никаких площадей!
2. Сначала вырезаем из территории России полигон вместе с островами.
3. Вычисляем периметр вырезанной части. Вычисляем периметр "остатка" территории России.
4. Затем в Excel вычитаем из периметра "остатка" территории России периметр вырезанного полигона с островами.
5. Получаем кусок периметра России без "выемки" + КУСКА БЕРЕГОВОЙ ЛИНИИ + ДЛИНЫ ПЕРИМЕТРОВ ОСТРОВОВ (которые в итоге и нужен).
6. Вычитаем из нетронутого периметра России то, что получилось в пункте 5.
7. В результате избавляемся от длины "выемки".
8. Остались в двойном экземпляре: Кусок береговой линии и длины периметров островов.
9. Делим на 2.
Вот теперь действительно ВСЕ!!!
Вот...

Re: пересечения

Добавлено: 23 апр 2011, 16:10
Anton
А, что касается пересечений, ну не хочет АркГис резать полигоном линейный объект, хоть ты тресни!
И по одному пробовал и все сразу. Кстати для редактирования выбран именно линейный объект.
В приложении то, что мне выдается на экране...
Пришлось изобрести описанный выше способ.

Спасибо!

Re: пересечения

Добавлено: 23 апр 2011, 16:12
Anton
АркГис даже пишет, что геометрические типы объектов при intersect должны быть одинаковые, либо только полигоны, либо только полилинии!