пересечения

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

пересечения

Сообщение Anton » 20 апр 2011, 23:08

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

self-improving
Активный участник
Сообщения: 144
Зарегистрирован: 18 дек 2009, 15:36
Репутация: 4
Откуда: Златоглавая

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

Сообщение self-improving » 20 апр 2011, 23:43

Первое, что пришло в голову - возможно, есть более удобный и логичный метод.

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

Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

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

Сообщение Anton » 22 апр 2011, 14:13

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

Спасибо!

Антон

Игорь Сергеев
Новоприбывший
Сообщения: 10
Зарегистрирован: 22 фев 2011, 11:13
Репутация: 0

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

Сообщение Игорь Сергеев » 22 апр 2011, 14:21

а вы переведите полученные Intersect-полигоны в полилинии и подсчитайте аналогичным подсчету периметру способом длины этих линий

ggis
Завсегдатай
Сообщения: 301
Зарегистрирован: 31 окт 2008, 10:39
Репутация: 1

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

Сообщение ggis » 22 апр 2011, 14:38

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

self-improving
Активный участник
Сообщения: 144
Зарегистрирован: 18 дек 2009, 15:36
Репутация: 4
Откуда: Златоглавая

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

Сообщение self-improving » 22 апр 2011, 15:37

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

Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

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

Сообщение Anton » 22 апр 2011, 18:39

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

Спасибо!
Вложения
Intersect1.jpg
Intersect1.jpg (103.12 КБ) 7028 просмотров

gamm
Гуру
Сообщения: 2929
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 681
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 22 апр 2011, 21:45

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

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

Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

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

Сообщение Anton » 22 апр 2011, 23:58

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

Что бы Вы, Господа и Дамы, делали, если бы Вам, скажем, поручили измерить длины береговых линий в пределах сотни участков на территории России, которые покрывают часть суши и часть моря, захватывая еще и острова?
Вложения
Intersect3.jpg
Intersect3.jpg (33.74 КБ) 7005 просмотров
Intersect2.jpg
Intersect2.jpg (69.24 КБ) 7005 просмотров

gamm
Гуру
Сообщения: 2929
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 681
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 23 апр 2011, 06:29

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

Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

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

Сообщение Anton » 23 апр 2011, 11:57

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

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

self-improving
Активный участник
Сообщения: 144
Зарегистрирован: 18 дек 2009, 15:36
Репутация: 4
Откуда: Златоглавая

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

Сообщение self-improving » 23 апр 2011, 14:24

Вот стоило на один вечер от компьютера отойти :)
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. Все.
Последний раз редактировалось self-improving 23 апр 2011, 17:11, всего редактировалось 1 раз.

Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

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

Сообщение Anton » 23 апр 2011, 15:57

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

Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

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

Сообщение Anton » 23 апр 2011, 16:10

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

Спасибо!
Вложения
Intersect4.jpg
Intersect4.jpg (83.82 КБ) 6958 просмотров

Anton
Интересующийся
Сообщения: 44
Зарегистрирован: 23 апр 2009, 13:42
Репутация: 0

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

Сообщение Anton » 23 апр 2011, 16:12

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

Ответить

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

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

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