Страница 1 из 1
Нарисовать полилинию на поверхности
Добавлено: 17 фев 2016, 16:44
galav
Доброго вечера, уважаемые эксперты и любители ГИС. Столкнулся с проблемой, решение которой не могу найти самостоятельно. Надеюсь на помощь местного сообщества.
Проблема в следующем – необходимо нарисовать полилинии (их достаточно много) по TIN либо растру. Из исходных данных – координаты начала линии (X, Y, Z), азимут и длина отрезка (по поверхности). Проекция линии на плоскость всегда будет отличаться от реальной, измеренной длины.
Стандартными средствами (ставим точку, CTRL+G, вводим азимут и длину) получаем лишь проекцию на поверхность. Обратная же задача не решается ни в АркСцене, ни в АркМапе. Проецированную длину я не знаю, знаю лишь реальную (по поверхности).
Подскажите пожалуйста, направьте к решению.
Заранее большое спасибо!
Re: Нарисовать полилинию на поверхности
Добавлено: 17 фев 2016, 17:48
Донецков
Есть такой объект как 3D полилиния, строится по точкам с 2 координатами, если они известны конечно..., существует возможность "положить" простую полилинию на 3D поверхность и вычислить полученные длины полилиний с учетом поверхности ...
Re: Нарисовать полилинию на поверхности
Добавлено: 17 фев 2016, 18:43
giser
Человеку, как я понял, нужно решить обратную задачу. После этого
Донецков писал(а):... "положить" простую полилинию на 3D поверхность и вычислить полученные длины полилиний с учетом поверхности ...
ему нужно сократить длину полученной 3D-полилинии до известного ему значения. А как это сделать? "Сократить линию" работает, судя по всему, только в 2D. Получить 3D-длину можно через "Add surface information" в 10.1. В 10.2 вроде можно через "Добавить атрибуты геометрии".. Сомневаюсь, что ArcGIS умеет сокращать 3D-длину.
Re: Нарисовать полилинию на поверхности
Добавлено: 17 фев 2016, 19:41
jerry-maori
В ArcGIS принципиально?
Предложил бы взять любой язык (R, Matlab, etc.) и начать рисовать линию от точки старта по поверхности, контролируя длину её проекции. Как только достигли нужного значения - начинаем рисовать следующую.
Результаты в виде пучка координат утащить в ArcGIS
Re: Нарисовать полилинию на поверхности
Добавлено: 17 фев 2016, 19:49
giser
jerry-maori писал(а):В ArcGIS принципиально?
... контролируя длину её проекции...
А как контролировать, если ее длина неизвестна? Ее нужно вычислить с помощью известной длины на местности.
Re: Нарисовать полилинию на поверхности
Добавлено: 18 фев 2016, 18:41
galav
giser писал(а):Человеку, как я понял, нужно решить обратную задачу.
giser, вы абсолютно правильно поняли задачу. Действительно - есть исходная, отправная точка, азимут хода и реальная (измеренная в поле) длина интервала (мерили рулеткой по почве

). Проецированную длину я не знаю. Ее и предположить сложно - уж больно расчлененный рельеф.
Думаю что без привлечения какой нибудь ГГИС не обойтись, Арк видимо бессилен в данной ситуации.
Всем огромное спасибо за советы!
Re: Нарисовать полилинию на поверхности
Добавлено: 18 фев 2016, 18:49
galav
jerry-maori писал(а):В ArcGIS принципиально? ...
jerry-maori, ну раз в Арке решение такого рода задач не реализовано, то использование данного инструмента не принципиально. Теперь уже из спортивного интереса хочу добить ее. Любыми доступными способами

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

- Снимок экрана_2016-02-24_15-02-04.png (138.18 КБ) 6655 просмотров
Re: Нарисовать полилинию на поверхности
Добавлено: 27 фев 2016, 17:40
galav
Александр Мурый писал(а):Можно попробовать так ...
Большое спасибо, попробую реализовать вашу мысль на практике