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

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Аватара пользователя
AleXStam
Новоприбывший
Сообщения: 4
Зарегистрирован: 04 дек 2017, 12:43
Репутация: 0
Откуда: Новосибирск
Контактная информация:

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

Сообщение AleXStam » 04 дек 2017, 12:47

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

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

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

Сообщение Александр Мурый » 04 дек 2017, 12:53

Редактор материалов, модератор форума

Аватара пользователя
AleXStam
Новоприбывший
Сообщения: 4
Зарегистрирован: 04 дек 2017, 12:43
Репутация: 0
Откуда: Новосибирск
Контактная информация:

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

Сообщение AleXStam » 04 дек 2017, 13:16

Возможно, но немогу понять в версии 10.2.2 этой функции нет?

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

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

Сообщение giser » 04 дек 2017, 15:40

Это отдельный платный модуль. Правда, я не уверен, что он здесь поможет. Не до конца понятен принцип, по которому точки привязываются к линиям. Если судить по примеру, то к конечной точке линии.

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

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

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

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

Сообщение Александр Мурый » 04 дек 2017, 16:02

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

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

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

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

Сообщение gamm » 04 дек 2017, 16:38

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

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

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

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

Сообщение giser » 04 дек 2017, 17:27

Мне кажется, что усложняете :) Я почти уверен, что перед ТС встала задача, решение которой я представил выше. Мне так кажется, потому что габариты линейного и точечного слоя визуально совпадают.
Конечно, я тоже рассматривал вариант с поиском кратчайшего расстояния до линии. Если задача стоит таким образом, то в ArcGIS она решается в 2 действия: с помощью инструмента Near находятся координаты ближайшей точки на линии, затем создается новый точечный слой по записанным координатам.
Вложения
Пример.png
Пример.png (3.36 КБ) 9258 просмотров
Последний раз редактировалось giser 04 дек 2017, 18:25, всего редактировалось 1 раз.

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

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

Сообщение Игорь Белов » 04 дек 2017, 17:47

Всё обсуждение — гадание по полёту птиц и внутренностям жертвенных животных. Надо у топикстартера спросить, как он считает правильным это делать:
AleXStam писал(а):
04 дек 2017, 12:47
нужно создавать для каждой точки связь смещения
The purpose of computing is insight, not numbers

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

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

Сообщение gamm » 04 дек 2017, 17:51

Там упоминание "rubber shit" какбэ намекает на морфинг. Но, несомненно, мнение ТС хотелось бы узнать :roll:

Аватара пользователя
AleXStam
Новоприбывший
Сообщения: 4
Зарегистрирован: 04 дек 2017, 12:43
Репутация: 0
Откуда: Новосибирск
Контактная информация:

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

Сообщение AleXStam » 05 дек 2017, 05:07

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

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

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

Сообщение Игорь Белов » 05 дек 2017, 08:25

Как будто нужно оставить координату X прежней, а координату Y снять с линии. Тогда «топорный» способ giser'а должен работать.
The purpose of computing is insight, not numbers

Monstria
Активный участник
Сообщения: 133
Зарегистрирован: 17 май 2011, 06:22
Репутация: 50
Откуда: Нижний Новгород

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

Сообщение Monstria » 18 дек 2017, 11:58

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

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

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

Пожалуйста.

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

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

Сообщение giser » 18 дек 2017, 13:45

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

Аватара пользователя
novia
Гуру
Сообщения: 2261
Зарегистрирован: 29 апр 2011, 15:06
Репутация: 489
Откуда: Тель-Авив

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

Сообщение novia » 18 дек 2017, 15:05

1. представьте, что ваша линия это маршрут
2. запустите инструмент для точек http://desktop.arcgis.com/en/arcmap/10. ... g-feat.htm
3. постройте "события" на маршруте
понравилось? жми палец вверх :!:

Monstria
Активный участник
Сообщения: 133
Зарегистрирован: 17 май 2011, 06:22
Репутация: 50
Откуда: Нижний Новгород

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

Сообщение Monstria » 18 дек 2017, 15:22

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

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

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

Ответить

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

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

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