Нарисовать полилинию на поверхности
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 16 июл 2009, 10:49
- Репутация: 1
Нарисовать полилинию на поверхности
Доброго вечера, уважаемые эксперты и любители ГИС. Столкнулся с проблемой, решение которой не могу найти самостоятельно. Надеюсь на помощь местного сообщества.
Проблема в следующем – необходимо нарисовать полилинии (их достаточно много) по TIN либо растру. Из исходных данных – координаты начала линии (X, Y, Z), азимут и длина отрезка (по поверхности). Проекция линии на плоскость всегда будет отличаться от реальной, измеренной длины.
Стандартными средствами (ставим точку, CTRL+G, вводим азимут и длину) получаем лишь проекцию на поверхность. Обратная же задача не решается ни в АркСцене, ни в АркМапе. Проецированную длину я не знаю, знаю лишь реальную (по поверхности).
Подскажите пожалуйста, направьте к решению.
Заранее большое спасибо!
Проблема в следующем – необходимо нарисовать полилинии (их достаточно много) по TIN либо растру. Из исходных данных – координаты начала линии (X, Y, Z), азимут и длина отрезка (по поверхности). Проекция линии на плоскость всегда будет отличаться от реальной, измеренной длины.
Стандартными средствами (ставим точку, CTRL+G, вводим азимут и длину) получаем лишь проекцию на поверхность. Обратная же задача не решается ни в АркСцене, ни в АркМапе. Проецированную длину я не знаю, знаю лишь реальную (по поверхности).
Подскажите пожалуйста, направьте к решению.
Заранее большое спасибо!
- Вложения
-
- Профиль для лучшего понимания вопроса :)
- Безымянный-1_cr.jpg (66.88 КБ) 6886 просмотров
-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: Нарисовать полилинию на поверхности
Есть такой объект как 3D полилиния, строится по точкам с 2 координатами, если они известны конечно..., существует возможность "положить" простую полилинию на 3D поверхность и вычислить полученные длины полилиний с учетом поверхности ...
-
- Завсегдатай
- Сообщения: 388
- Зарегистрирован: 09 ноя 2012, 09:25
- Репутация: 113
- Откуда: Москва
Re: Нарисовать полилинию на поверхности
Человеку, как я понял, нужно решить обратную задачу. После этого
ему нужно сократить длину полученной 3D-полилинии до известного ему значения. А как это сделать? "Сократить линию" работает, судя по всему, только в 2D. Получить 3D-длину можно через "Add surface information" в 10.1. В 10.2 вроде можно через "Добавить атрибуты геометрии".. Сомневаюсь, что ArcGIS умеет сокращать 3D-длину.Донецков писал(а):... "положить" простую полилинию на 3D поверхность и вычислить полученные длины полилиний с учетом поверхности ...
- jerry-maori
- Гуру
- Сообщения: 585
- Зарегистрирован: 22 авг 2012, 17:02
- Репутация: 143
- Откуда: Нижний Новгород
Re: Нарисовать полилинию на поверхности
В ArcGIS принципиально?
Предложил бы взять любой язык (R, Matlab, etc.) и начать рисовать линию от точки старта по поверхности, контролируя длину её проекции. Как только достигли нужного значения - начинаем рисовать следующую.
Результаты в виде пучка координат утащить в ArcGIS
Предложил бы взять любой язык (R, Matlab, etc.) и начать рисовать линию от точки старта по поверхности, контролируя длину её проекции. Как только достигли нужного значения - начинаем рисовать следующую.
Результаты в виде пучка координат утащить в ArcGIS
-
- Завсегдатай
- Сообщения: 388
- Зарегистрирован: 09 ноя 2012, 09:25
- Репутация: 113
- Откуда: Москва
Re: Нарисовать полилинию на поверхности
А как контролировать, если ее длина неизвестна? Ее нужно вычислить с помощью известной длины на местности.jerry-maori писал(а):В ArcGIS принципиально?
... контролируя длину её проекции...
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 16 июл 2009, 10:49
- Репутация: 1
Re: Нарисовать полилинию на поверхности
giser, вы абсолютно правильно поняли задачу. Действительно - есть исходная, отправная точка, азимут хода и реальная (измеренная в поле) длина интервала (мерили рулеткой по почвеgiser писал(а):Человеку, как я понял, нужно решить обратную задачу.

Думаю что без привлечения какой нибудь ГГИС не обойтись, Арк видимо бессилен в данной ситуации.

Всем огромное спасибо за советы!
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 16 июл 2009, 10:49
- Репутация: 1
Re: Нарисовать полилинию на поверхности
jerry-maori, ну раз в Арке решение такого рода задач не реализовано, то использование данного инструмента не принципиально. Теперь уже из спортивного интереса хочу добить ее. Любыми доступными способамиjerry-maori писал(а):В ArcGIS принципиально? ...

-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Нарисовать полилинию на поверхности
Можно попробовать так (в Арке не пробовал, но в GRASS работает):
— по имеющимся азимуту и длине строим линию (в проекции);
— если линия прямая и имеет только 2 вершины (начальную и конечную), то программно добавляем вершины через определённый промежуток;
— разбиваем линию на набор линий (действие типа "explode");
— подымаем эту "составную" линию по рельефу (действие типа "drape");
— проверяем длину получившейся линии — она должна получиться больше, чем в проекции;
— объединяем "составную" поднятую по рельефу линию в единую (если нужно для следующего инструмента);
— используем инструмент типа v.segment в GRASS, который строит сегменты с заданной длиной по имеющимся линиям; указываем исходно известную нам длину.
Пример в GRASS (красная — 3D-линия, чёрная — положенная на рельеф 2D-линия, у обеих одинаковая фактическая длина):
— по имеющимся азимуту и длине строим линию (в проекции);
— если линия прямая и имеет только 2 вершины (начальную и конечную), то программно добавляем вершины через определённый промежуток;
— разбиваем линию на набор линий (действие типа "explode");
— подымаем эту "составную" линию по рельефу (действие типа "drape");
— проверяем длину получившейся линии — она должна получиться больше, чем в проекции;
— объединяем "составную" поднятую по рельефу линию в единую (если нужно для следующего инструмента);
— используем инструмент типа v.segment в GRASS, который строит сегменты с заданной длиной по имеющимся линиям; указываем исходно известную нам длину.
Пример в GRASS (красная — 3D-линия, чёрная — положенная на рельеф 2D-линия, у обеих одинаковая фактическая длина):
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 16 июл 2009, 10:49
- Репутация: 1
Re: Нарисовать полилинию на поверхности
Большое спасибо, попробую реализовать вашу мысль на практикеАлександр Мурый писал(а):Можно попробовать так ...
Кто сейчас на конференции
Сейчас этот форум просматривают: Semrush [Bot] и 1 гость