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

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 КБ) 1291 просмотр

Александр Мурый
Гуру
Сообщения: 5150
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 776
Ваше звание: званий не имею
Откуда: Москва

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

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

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

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

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

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

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

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

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 раз.

Александр Мурый
Гуру
Сообщения: 5150
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 776
Ваше звание: званий не имею
Откуда: Москва

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

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

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

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

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

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

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

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

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

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

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

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

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

Игорь Белов
Гуру
Сообщения: 1609
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1002
Откуда: Казань

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

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

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

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

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 КБ) 1172 просмотра
Тут я с помощью смещения точек спроецировал(сместил) их на линию, но тут почти каждую так нужно указывать, а хотелось бы хотябы указать крайние и далее точки бы все сместились на линию

Игорь Белов
Гуру
Сообщения: 1609
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1002
Откуда: Казань

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

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

Как будто нужно оставить координату X прежней, а координату Y снять с линии. Тогда «топорный» способ giser'а должен работать.

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

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

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

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

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

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

Пожалуйста.

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

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

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

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

Аватара пользователя
novia
Гуру
Сообщения: 2221
Зарегистрирован: 29 апр 2011, 15:06
Проекты: 1
Репутация: 472
Ваше звание: Модератор по ArcGIS
Откуда: Москва
Контактная информация:

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

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

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

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

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

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

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

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

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

Ответить

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

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

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