MapInfo. Функция Snap

Не знаете, где задать вопрос? Задавайте здесь.
xtxskif
Завсегдатай
Сообщения: 455
Зарегистрирован: 17 фев 2016, 14:02
Репутация: -5
Откуда: Lviv
Контактная информация:

MapInfo. Функция Snap

Сообщение xtxskif » 09 июн 2016, 13:56

Привет всем. Помогите разобраться с новой задачей. На рисунке видно что точки находятся не на линиях. Как автоматически поместить эти точки на линии? Слышал что это можно сделать с помощью функции Snap. Но как именно это сделать я не знаю.
Если можно получить необходимый результат каким-то иным образом, буду рад узнать.
Заранее спасибо
Вложения
8877.png
8877.png (12.06 КБ) 7901 просмотр

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: MapInfo. Функция Snap

Сообщение Донецков » 09 июн 2016, 14:01

А не проще построить новые линии по точкам?

xtxskif
Завсегдатай
Сообщения: 455
Зарегистрирован: 17 фев 2016, 14:02
Репутация: -5
Откуда: Lviv
Контактная информация:

Re: MapInfo. Функция Snap

Сообщение xtxskif » 09 июн 2016, 14:22

можно и так сделать, но как тогда бить если этих точек очень много?
В данном случае интересует как точки поместить на линии.
Спасибо

Аватара пользователя
ANAT01
Активный участник
Сообщения: 196
Зарегистрирован: 18 апр 2012, 14:41
Репутация: 57

Re: MapInfo. Функция Snap

Сообщение ANAT01 » 09 июн 2016, 14:35

А вы уверенны, что автоматический алгоритм поместит точки 9,10 и 11 на правильные линии и в правильные места?!
Куда вообще должны быть помещены точки на линии? В узлы или перпендикулярно?
Последний раз редактировалось ANAT01 09 июн 2016, 16:52, всего редактировалось 1 раз.
упячка11111адинадинадин!!!!11

xtxskif
Завсегдатай
Сообщения: 455
Зарегистрирован: 17 фев 2016, 14:02
Репутация: -5
Откуда: Lviv
Контактная информация:

Re: MapInfo. Функция Snap

Сообщение xtxskif » 09 июн 2016, 14:42

Не уверен. Но жду что кто то подскажет вариант решения данной задачи.
На вопрос "куда должны быть помещены точки на линии? В узлы, к ближайшей или перпендикулярно?".
давайте рассмотрим все варианты.

Аватара пользователя
ANAT01
Активный участник
Сообщения: 196
Зарегистрирован: 18 апр 2012, 14:41
Репутация: 57

Re: MapInfo. Функция Snap

Сообщение ANAT01 » 09 июн 2016, 15:34

В любом случае это нетривиальная задача. Вряд ли вам кто-то предложит решение.
упячка11111адинадинадин!!!!11

xtxskif
Завсегдатай
Сообщения: 455
Зарегистрирован: 17 фев 2016, 14:02
Репутация: -5
Откуда: Lviv
Контактная информация:

Re: MapInfo. Функция Snap

Сообщение xtxskif » 09 июн 2016, 15:44

для решения данной задачи есть функция SNAP, но я не знаю как ее использовать. Думаю кто то уже стыкался с подобной проблемой и знает как она решается.

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

Re: MapInfo. Функция Snap

Сообщение Игорь Белов » 09 июн 2016, 16:16

Есть такая утилита, писал на мапбейсике. Выделяешь одну полилинию, указываешь на таблицу с точками и поле, куда писать продольную координату (т. е. длину от начала линии). Получаешь точки на линии.

Под QGIS написал более осмысленный алгоритм. Указываешь слой линий, поле идентификатора, слой точек, поле, содержащее идентификаторы линий. На выходе слой точек, лежащих на соответствующих линиях. В выходной таблице все поля из входной плюс продольная и поперечная координаты (длина вдоль линии от начала и расстояние от линии со знаком соответственно).
The purpose of computing is insight, not numbers

Аватара пользователя
ANAT01
Активный участник
Сообщения: 196
Зарегистрирован: 18 апр 2012, 14:41
Репутация: 57

Re: MapInfo. Функция Snap

Сообщение ANAT01 » 09 июн 2016, 16:29

Справочник по MapBasic, 462 страница

С 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

Сообщение ANAT01 » 09 июн 2016, 16:57

ErnieBoyd, но тогда точки нужно как минимум классифицировать.
Судя по разбросу точек на картинке, это трудно сделать автоматически (например по буферу) и куда отнести 4 точку если она одинаково (в рамках заданного расстояния, например) подходит и к одной и ко второй линии.
упячка11111адинадинадин!!!!11

xtxskif
Завсегдатай
Сообщения: 455
Зарегистрирован: 17 фев 2016, 14:02
Репутация: -5
Откуда: Lviv
Контактная информация:

Re: MapInfo. Функция Snap

Сообщение xtxskif » 09 июн 2016, 18:05

в MapInfo есть функция Snap. на рисунке скрин окна данной функции
Вложения
рррр.png
рррр.png (25.31 КБ) 7808 просмотров

Аватара пользователя
ANAT01
Активный участник
Сообщения: 196
Зарегистрирован: 18 апр 2012, 14:41
Репутация: 57

Re: MapInfo. Функция Snap

Сообщение ANAT01 » 09 июн 2016, 18:29

Это диалоговое окно к функции которую я привел выше. Читайте что оно делает внимательнее. Оно вам в вашей задаче никак не поможет. Вам нужно то, что описывает ErnieBoyd

[ Сообщение с мобильного устройства ]
упячка11111адинадинадин!!!!11

xtxskif
Завсегдатай
Сообщения: 455
Зарегистрирован: 17 фев 2016, 14:02
Репутация: -5
Откуда: Lviv
Контактная информация:

Re: MapInfo. Функция Snap

Сообщение xtxskif » 09 июн 2016, 21:26

но точки - это одна таблица, а линии - другая. Как быть?

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

Re: MapInfo. Функция Snap

Сообщение Игорь Белов » 10 июн 2016, 07:50

Сказал "А", говорю "Б".
  • pinup-src.zip — читайте до просветления
  • pinup.mbx.zip — готовый к использованию модуль
xtxskif писал(а):но точки - это одна таблица, а линии - другая. Как быть?
Выделяете линию из одного слоя, указываете на другой слой с точками, который должен содержать хотя бы одну колонку числового типа. Если поднят флажок "Explicit", в косметическом слое создаются точки на линии. В указанное числовое поле таблицы точек всегда пишется продольная координата.
ANAT01 писал(а):но тогда точки нужно как минимум классифицировать
А как же иначе? Цель разумной деятельности вообще и в ГИС в частности — уменьшение энтропии. От хаоса к орднунгу!
Вложения
pinup-src.zip
исходники
(4.04 КБ) 208 скачиваний
pinup.mbx.zip
исполняемый модуль
(3.92 КБ) 212 скачиваний
The purpose of computing is insight, not numbers

xtxskif
Завсегдатай
Сообщения: 455
Зарегистрирован: 17 фев 2016, 14:02
Репутация: -5
Откуда: Lviv
Контактная информация:

Re: MapInfo. Функция Snap

Сообщение xtxskif » 10 июн 2016, 11:08

а если линий много, программа видает сообщение чтобы выбрать 1 линию, но мне нужно поместить точки на все линии. В ситуции где точка находиться между 2-мя линиями точка должна быть помещена на линию к которой она находиться ближе.

Ответить

Вернуться в «Я новичок!»

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

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