Нарисовать полилинию на поверхности

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
galav
Интересующийся
Сообщения: 21
Зарегистрирован: 16 июл 2009, 10:49
Репутация: 1

Нарисовать полилинию на поверхности

Сообщение galav » 17 фев 2016, 16:44

Доброго вечера, уважаемые эксперты и любители ГИС. Столкнулся с проблемой, решение которой не могу найти самостоятельно. Надеюсь на помощь местного сообщества.
Проблема в следующем – необходимо нарисовать полилинии (их достаточно много) по TIN либо растру. Из исходных данных – координаты начала линии (X, Y, Z), азимут и длина отрезка (по поверхности). Проекция линии на плоскость всегда будет отличаться от реальной, измеренной длины.
Стандартными средствами (ставим точку, CTRL+G, вводим азимут и длину) получаем лишь проекцию на поверхность. Обратная же задача не решается ни в АркСцене, ни в АркМапе. Проецированную длину я не знаю, знаю лишь реальную (по поверхности).
Подскажите пожалуйста, направьте к решению.
Заранее большое спасибо!
Вложения
Безымянный-1_cr.jpg
Профиль для лучшего понимания вопроса :)
Безымянный-1_cr.jpg (66.88 КБ) 6884 просмотра

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Нарисовать полилинию на поверхности

Сообщение Донецков » 17 фев 2016, 17:48

Есть такой объект как 3D полилиния, строится по точкам с 2 координатами, если они известны конечно..., существует возможность "положить" простую полилинию на 3D поверхность и вычислить полученные длины полилиний с учетом поверхности ...

giser
Завсегдатай
Сообщения: 388
Зарегистрирован: 09 ноя 2012, 09:25
Репутация: 113
Откуда: Москва

Re: Нарисовать полилинию на поверхности

Сообщение giser » 17 фев 2016, 18:43

Человеку, как я понял, нужно решить обратную задачу. После этого
Донецков писал(а):... "положить" простую полилинию на 3D поверхность и вычислить полученные длины полилиний с учетом поверхности ...
ему нужно сократить длину полученной 3D-полилинии до известного ему значения. А как это сделать? "Сократить линию" работает, судя по всему, только в 2D. Получить 3D-длину можно через "Add surface information" в 10.1. В 10.2 вроде можно через "Добавить атрибуты геометрии".. Сомневаюсь, что ArcGIS умеет сокращать 3D-длину.

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Нарисовать полилинию на поверхности

Сообщение jerry-maori » 17 фев 2016, 19:41

В ArcGIS принципиально?
Предложил бы взять любой язык (R, Matlab, etc.) и начать рисовать линию от точки старта по поверхности, контролируя длину её проекции. Как только достигли нужного значения - начинаем рисовать следующую.
Результаты в виде пучка координат утащить в ArcGIS

giser
Завсегдатай
Сообщения: 388
Зарегистрирован: 09 ноя 2012, 09:25
Репутация: 113
Откуда: Москва

Re: Нарисовать полилинию на поверхности

Сообщение giser » 17 фев 2016, 19:49

jerry-maori писал(а):В ArcGIS принципиально?
... контролируя длину её проекции...
А как контролировать, если ее длина неизвестна? Ее нужно вычислить с помощью известной длины на местности.

galav
Интересующийся
Сообщения: 21
Зарегистрирован: 16 июл 2009, 10:49
Репутация: 1

Re: Нарисовать полилинию на поверхности

Сообщение galav » 18 фев 2016, 18:41

giser писал(а):Человеку, как я понял, нужно решить обратную задачу.
giser, вы абсолютно правильно поняли задачу. Действительно - есть исходная, отправная точка, азимут хода и реальная (измеренная в поле) длина интервала (мерили рулеткой по почве :D ). Проецированную длину я не знаю. Ее и предположить сложно - уж больно расчлененный рельеф.
Думаю что без привлечения какой нибудь ГГИС не обойтись, Арк видимо бессилен в данной ситуации. :cry:
Всем огромное спасибо за советы!

galav
Интересующийся
Сообщения: 21
Зарегистрирован: 16 июл 2009, 10:49
Репутация: 1

Re: Нарисовать полилинию на поверхности

Сообщение galav » 18 фев 2016, 18:49

jerry-maori писал(а):В ArcGIS принципиально? ...
jerry-maori, ну раз в Арке решение такого рода задач не реализовано, то использование данного инструмента не принципиально. Теперь уже из спортивного интереса хочу добить ее. Любыми доступными способами :D С программированием знаком поверхностно, по этой причине надежда только на готовые инструменты.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Нарисовать полилинию на поверхности

Сообщение Александр Мурый » 24 фев 2016, 15:03

Можно попробовать так (в Арке не пробовал, но в GRASS работает):
— по имеющимся азимуту и длине строим линию (в проекции);
— если линия прямая и имеет только 2 вершины (начальную и конечную), то программно добавляем вершины через определённый промежуток;
— разбиваем линию на набор линий (действие типа "explode");
— подымаем эту "составную" линию по рельефу (действие типа "drape");
— проверяем длину получившейся линии — она должна получиться больше, чем в проекции;
— объединяем "составную" поднятую по рельефу линию в единую (если нужно для следующего инструмента);
— используем инструмент типа v.segment в GRASS, который строит сегменты с заданной длиной по имеющимся линиям; указываем исходно известную нам длину.

Пример в GRASS (красная — 3D-линия, чёрная — положенная на рельеф 2D-линия, у обеих одинаковая фактическая длина):
Снимок экрана_2016-02-24_15-02-04.png
Снимок экрана_2016-02-24_15-02-04.png (138.18 КБ) 6650 просмотров
Редактор материалов, модератор форума

galav
Интересующийся
Сообщения: 21
Зарегистрирован: 16 июл 2009, 10:49
Репутация: 1

Re: Нарисовать полилинию на поверхности

Сообщение galav » 27 фев 2016, 17:40

Александр Мурый писал(а):Можно попробовать так ...
Большое спасибо, попробую реализовать вашу мысль на практике

Ответить

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

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

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