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

Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 12:47
AleXStam
Имеется неровный профиль с точким, также имеется профиль в виде кривой линии, нужно точки спроецировать на линию, подскажите как. Использовал функцию из Векторной трансформации связь смещения, и подгонкой резиновый лист, но при таком подходе нужно создавать для каждой точки связь смещения - это долго, т.к. точек штук 200 может быть
Screenshot_1.jpg
Screenshot_1.jpg (20.59 КБ) 9404 просмотра

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 12:53
Александр Мурый

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 13:16
AleXStam
Возможно, но немогу понять в версии 10.2.2 этой функции нет?

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 15:40
giser
Это отдельный платный модуль. Правда, я не уверен, что он здесь поможет. Не до конца понятен принцип, по которому точки привязываются к линиям. Если судить по примеру, то к конечной точке линии.

Предлагаю топорный способ (подразумевается строго вертикальный перенос точек на линию):

1. Если у точек отсутствуют какие-либо уникальные атрибуты, то их нужно создать. Самый простой способ - скопировать objectID в новое поле.
2. Выделить все точки, скопировать, вставить в этот же точечный слой.
3. Вставленные точки выделить и с помощью инструмента Move сдвинуть их на такое значение Y, чтобы они оказались полностью визуально выше кривой линии профиля.
4. С помощью инструмента Points to line создать параллельные линии проецирования. В настройке Line_Field используем уникальное поле точек, о котором говорилось выше.
5. Если требуется перенос атрибутов из точечного слоя, то нужно будет с помощью Spatail Join присоединить атрибуты к линейному слою.
6. С помощью инструмента Intersect получить точки пересечения созданных параллельных линий и кривой.

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 16:02
Александр Мурый
Извиняюсь за оффтоп, но недавно была слегка похожая тема касательно QGIS: https://gis-lab.info/forum/viewtopic.ph ... 95#p158295

Там был выложен рабочий скрипт для проецирования точек на линию. Можно попробовать сделать в QGIS. За консультациями обращайтесь на форум QGIS, если решитесь, там всё очевидно, в общем-то.

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 16:38
gamm
Александр Мурый писал(а):
04 дек 2017, 16:02
Извиняюсь за оффтоп, но недавно была слегка похожая тема касательно QGIS: https://gis-lab.info/forum/viewtopic.ph ... 95#p158295
не, там точки на линии лежали, а здесь все не так. Здесь требует уточнения вообще понятие "спроецировать". Если речь о переносе точек по кратчайшему пути, это одно. Если речь о морфинге (совмещении) линий глобальной трансформацией - это совсем другое.

Если первое - то либо в цикле для каждой точки перебирать все сегменты, искать ближайший, а потом проецировать, либо снести линию на растр, построить дистанционное преобразование, и скатиться из точек в пиксели линии (либо этого будет достаточно, либо можно использовать как начальное приближение). Наверняка для этих операций (поиск ближайшей точки на линии) есть готовые программы, но "чукча не читатель, чукча писатель" :mrgreen:

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 17:27
giser
Мне кажется, что усложняете :) Я почти уверен, что перед ТС встала задача, решение которой я представил выше. Мне так кажется, потому что габариты линейного и точечного слоя визуально совпадают.
Конечно, я тоже рассматривал вариант с поиском кратчайшего расстояния до линии. Если задача стоит таким образом, то в ArcGIS она решается в 2 действия: с помощью инструмента Near находятся координаты ближайшей точки на линии, затем создается новый точечный слой по записанным координатам.

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 17:47
Игорь Белов
Всё обсуждение — гадание по полёту птиц и внутренностям жертвенных животных. Надо у топикстартера спросить, как он считает правильным это делать:
AleXStam писал(а):
04 дек 2017, 12:47
нужно создавать для каждой точки связь смещения

Re: Помогите спроецировать точки на линию

Добавлено: 04 дек 2017, 17:51
gamm
Там упоминание "rubber shit" какбэ намекает на морфинг. Но, несомненно, мнение ТС хотелось бы узнать :roll:

Re: Помогите спроецировать точки на линию

Добавлено: 05 дек 2017, 05:07
AleXStam
Что-то прям усложняется все, вот смотрите, что нужно:
Screenshot_1.jpg
Screenshot_1.jpg (47.22 КБ) 9285 просмотров
Тут я с помощью смещения точек спроецировал(сместил) их на линию, но тут почти каждую так нужно указывать, а хотелось бы хотябы указать крайние и далее точки бы все сместились на линию

Re: Помогите спроецировать точки на линию

Добавлено: 05 дек 2017, 08:25
Игорь Белов
Как будто нужно оставить координату X прежней, а координату Y снять с линии. Тогда «топорный» способ giser'а должен работать.

Re: Помогите спроецировать точки на линию

Добавлено: 18 дек 2017, 11:58
Monstria
AleXStam писал(а):
04 дек 2017, 12:47
нужно точки спроецировать на линию
Как раз у самого появилась такая же задача - решал по своемому...

https://youtu.be/kCWzZdIAin8 - тут можно посмотреть как работает
ExpotrTriagles.rar
(47.3 КБ) 348 скачиваний
- это сам плагин.

PS... делал на коленке, решая "СВОИ" проблемы, поэтому не без проблем - к примеру не в меркатовской ск возможны исключения при малых значениях расстояний от точки к линии (округление)
PSS.. Так же в плагине еще две кнопки - настоятельно рекомендую ими не пользоваться - они вам не пригодятся в принципе :) а прятать их было тупо лень.

Пожалуйста.

Re: Помогите спроецировать точки на линию

Добавлено: 18 дек 2017, 13:45
giser
Классно, но работает по принципу поиска ближайшего, а у ТС, как мы выяснили, немного другая задача :)

Re: Помогите спроецировать точки на линию

Добавлено: 18 дек 2017, 15:05
novia
1. представьте, что ваша линия это маршрут
2. запустите инструмент для точек http://desktop.arcgis.com/en/arcmap/10. ... g-feat.htm
3. постройте "события" на маршруте

Re: Помогите спроецировать точки на линию

Добавлено: 18 дек 2017, 15:22
Monstria
giser писал(а):
18 дек 2017, 13:45
Классно, но работает по принципу поиска ближайшего, а у ТС, как мы выяснили, немного другая задача
Ну так поиск ближайшей линии это оптимальный и универсальный вариант (вариант предложенный novia) будет работать по тому же принципу ИМХО (не проверял на практике)

Сделать вертикальную проекцию не сложно - но уже не будет универсально .. Видимые проблемы:
1 - Не все вероятные точки могут пересекать линию (особенно если линия вертикально расположена)
2 - Не оптимально для множества объектов (особенно линий)

PS... Сделать именно так как хочет пользователь возможно, ограничив объекты выборкой и проецируя точку(и) вертикально проверять пересечения луча с полилинией - но у меня стояла цель притянуть точки к ближайшей линии по ближайшей траектории - поэтому и инструмент работает именно так (специально под топикстартера я ничего не делал - просто совпало)