MapInfo. Функция Snap
-
- Завсегдатай
- Сообщения: 455
- Зарегистрирован: 17 фев 2016, 14:02
- Репутация: -5
- Откуда: Lviv
- Контактная информация:
MapInfo. Функция Snap
Привет всем. Помогите разобраться с новой задачей. На рисунке видно что точки находятся не на линиях. Как автоматически поместить эти точки на линии? Слышал что это можно сделать с помощью функции Snap. Но как именно это сделать я не знаю.
Если можно получить необходимый результат каким-то иным образом, буду рад узнать.
Заранее спасибо
Если можно получить необходимый результат каким-то иным образом, буду рад узнать.
Заранее спасибо
- Вложения
-
- 8877.png (12.06 КБ) 7890 просмотров
-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: MapInfo. Функция Snap
А не проще построить новые линии по точкам?
-
- Завсегдатай
- Сообщения: 455
- Зарегистрирован: 17 фев 2016, 14:02
- Репутация: -5
- Откуда: Lviv
- Контактная информация:
Re: MapInfo. Функция Snap
можно и так сделать, но как тогда бить если этих точек очень много?
В данном случае интересует как точки поместить на линии.
Спасибо
В данном случае интересует как точки поместить на линии.
Спасибо
- ANAT01
- Активный участник
- Сообщения: 196
- Зарегистрирован: 18 апр 2012, 14:41
- Репутация: 57
Re: MapInfo. Функция Snap
А вы уверенны, что автоматический алгоритм поместит точки 9,10 и 11 на правильные линии и в правильные места?!
Куда вообще должны быть помещены точки на линии? В узлы или перпендикулярно?
Куда вообще должны быть помещены точки на линии? В узлы или перпендикулярно?
Последний раз редактировалось ANAT01 09 июн 2016, 16:52, всего редактировалось 1 раз.
упячка11111адинадинадин!!!!11
-
- Завсегдатай
- Сообщения: 455
- Зарегистрирован: 17 фев 2016, 14:02
- Репутация: -5
- Откуда: Lviv
- Контактная информация:
Re: MapInfo. Функция Snap
Не уверен. Но жду что кто то подскажет вариант решения данной задачи.
На вопрос "куда должны быть помещены точки на линии? В узлы, к ближайшей или перпендикулярно?".
давайте рассмотрим все варианты.
На вопрос "куда должны быть помещены точки на линии? В узлы, к ближайшей или перпендикулярно?".
давайте рассмотрим все варианты.
- ANAT01
- Активный участник
- Сообщения: 196
- Зарегистрирован: 18 апр 2012, 14:41
- Репутация: 57
Re: MapInfo. Функция Snap
В любом случае это нетривиальная задача. Вряд ли вам кто-то предложит решение.
упячка11111адинадинадин!!!!11
-
- Завсегдатай
- Сообщения: 455
- Зарегистрирован: 17 фев 2016, 14:02
- Репутация: -5
- Откуда: Lviv
- Контактная информация:
Re: MapInfo. Функция Snap
для решения данной задачи есть функция SNAP, но я не знаю как ее использовать. Думаю кто то уже стыкался с подобной проблемой и знает как она решается.
- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
Re: MapInfo. Функция Snap
Есть такая утилита, писал на мапбейсике. Выделяешь одну полилинию, указываешь на таблицу с точками и поле, куда писать продольную координату (т. е. длину от начала линии). Получаешь точки на линии.
Под QGIS написал более осмысленный алгоритм. Указываешь слой линий, поле идентификатора, слой точек, поле, содержащее идентификаторы линий. На выходе слой точек, лежащих на соответствующих линиях. В выходной таблице все поля из входной плюс продольная и поперечная координаты (длина вдоль линии от начала и расстояние от линии со знаком соответственно).
Под QGIS написал более осмысленный алгоритм. Указываешь слой линий, поле идентификатора, слой точек, поле, содержащее идентификаторы линий. На выходе слой точек, лежащих на соответствующих линиях. В выходной таблице все поля из входной плюс продольная и поперечная координаты (длина вдоль линии от начала и расстояние от линии со знаком соответственно).
The purpose of computing is insight, not numbers
- ANAT01
- Активный участник
- Сообщения: 196
- Зарегистрирован: 18 апр 2012, 14:41
- Репутация: 57
Re: MapInfo. Функция Snap
Справочник по MapBasic, 462 страница
С mapbasic в плотную не работал и могу ошибаться, но судя по структуре запроса:
На вход подается только одна таблица(или выделение)! Таким образом у вас не получится взять точки из одной таблицы(селектора) и прилепить к линиям в другой(селектору).
Как сказано в описании - эта функция служит для генерализации. Она собирает узлы объектов находящиеся на заданной дистанции в одну точку.
С mapbasic в плотную не работал и могу ошибаться, но судя по структуре запроса:
Код: Выделить всё
Objects Snap From tablename
[ Tolerance [ Node node_distance ] [ Vector vector_distance ]
[ Units unit_string] ]
[ Thin [ Bend bend_distance ] [ Distance spacing_distance ]
Как сказано в описании - эта функция служит для генерализации. Она собирает узлы объектов находящиеся на заданной дистанции в одну точку.
упячка11111адинадинадин!!!!11
- ANAT01
- Активный участник
- Сообщения: 196
- Зарегистрирован: 18 апр 2012, 14:41
- Репутация: 57
Re: MapInfo. Функция Snap
ErnieBoyd, но тогда точки нужно как минимум классифицировать.
Судя по разбросу точек на картинке, это трудно сделать автоматически (например по буферу) и куда отнести 4 точку если она одинаково (в рамках заданного расстояния, например) подходит и к одной и ко второй линии.
Судя по разбросу точек на картинке, это трудно сделать автоматически (например по буферу) и куда отнести 4 точку если она одинаково (в рамках заданного расстояния, например) подходит и к одной и ко второй линии.
упячка11111адинадинадин!!!!11
-
- Завсегдатай
- Сообщения: 455
- Зарегистрирован: 17 фев 2016, 14:02
- Репутация: -5
- Откуда: Lviv
- Контактная информация:
Re: MapInfo. Функция Snap
в MapInfo есть функция Snap. на рисунке скрин окна данной функции
- Вложения
-
- рррр.png (25.31 КБ) 7797 просмотров
- ANAT01
- Активный участник
- Сообщения: 196
- Зарегистрирован: 18 апр 2012, 14:41
- Репутация: 57
Re: MapInfo. Функция Snap
Это диалоговое окно к функции которую я привел выше. Читайте что оно делает внимательнее. Оно вам в вашей задаче никак не поможет. Вам нужно то, что описывает ErnieBoyd
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
упячка11111адинадинадин!!!!11
-
- Завсегдатай
- Сообщения: 455
- Зарегистрирован: 17 фев 2016, 14:02
- Репутация: -5
- Откуда: Lviv
- Контактная информация:
Re: MapInfo. Функция Snap
но точки - это одна таблица, а линии - другая. Как быть?
- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
Re: MapInfo. Функция Snap
Сказал "А", говорю "Б".
- pinup-src.zip — читайте до просветления
- pinup.mbx.zip — готовый к использованию модуль
Выделяете линию из одного слоя, указываете на другой слой с точками, который должен содержать хотя бы одну колонку числового типа. Если поднят флажок "Explicit", в косметическом слое создаются точки на линии. В указанное числовое поле таблицы точек всегда пишется продольная координата.xtxskif писал(а):но точки - это одна таблица, а линии - другая. Как быть?
А как же иначе? Цель разумной деятельности вообще и в ГИС в частности — уменьшение энтропии. От хаоса к орднунгу!ANAT01 писал(а):но тогда точки нужно как минимум классифицировать
- Вложения
-
pinup-src.zip
- исходники
- (4.04 КБ) 207 скачиваний
-
pinup.mbx.zip
- исполняемый модуль
- (3.92 КБ) 212 скачиваний
The purpose of computing is insight, not numbers
-
- Завсегдатай
- Сообщения: 455
- Зарегистрирован: 17 фев 2016, 14:02
- Репутация: -5
- Откуда: Lviv
- Контактная информация:
Re: MapInfo. Функция Snap
а если линий много, программа видает сообщение чтобы выбрать 1 линию, но мне нужно поместить точки на все линии. В ситуции где точка находиться между 2-мя линиями точка должна быть помещена на линию к которой она находиться ближе.
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot] и 2 гостя