Связать вершины с линиями после корректировки топологии лини
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 02 сен 2016, 10:45
- Репутация: 0
Связать вершины с линиями после корректировки топологии лини
Добрый день, прошу помощи в алгоритме или подборе инструмента для решения следующей задачи:
дано 2 таблицы - линии и точки, обе со своей различной семантикой. Точки представляют собой узлы пересечения (соприкосновения) линий. Количество объектов - десятки тысяч.
В линиях есть проблемы с топологией, нужно удалить разрывы между вершинами линий, например, если они больше 30 см. С этой задачей справляется встроенный инструмент в mapinfo 15. Вершины соединяются сдвигаясь в рамках допустимой погрешности.
При этом точки не меняются, так как находятся в отдельной таблице.
Подскажите, каким образом можно задать точкам новые координаты вершин линий, сохраняя семантику
дано 2 таблицы - линии и точки, обе со своей различной семантикой. Точки представляют собой узлы пересечения (соприкосновения) линий. Количество объектов - десятки тысяч.
В линиях есть проблемы с топологией, нужно удалить разрывы между вершинами линий, например, если они больше 30 см. С этой задачей справляется встроенный инструмент в mapinfo 15. Вершины соединяются сдвигаясь в рамках допустимой погрешности.
При этом точки не меняются, так как находятся в отдельной таблице.
Подскажите, каким образом можно задать точкам новые координаты вершин линий, сохраняя семантику
- ginpetr
- Завсегдатай
- Сообщения: 376
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Связать вершины с линиями после корректировки топологии
Линии или полилинии?
и картинку, если можно.
и картинку, если можно.
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 02 сен 2016, 10:45
- Репутация: 0
Re: Связать вершины с линиями после корректировки топологии
Изначально они линии. После корректировки топологии в мапинфо 15 они становятся полилиниями.
- Вложения
-
- точки-линнии-после.PNG (3.84 КБ) 5170 просмотров
-
- точки-линнии-до.PNG (4.56 КБ) 5170 просмотров
-
- Гуру
- Сообщения: 5287
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Связать вершины с линиями после корректировки топологии
1. Строим буфер (размер в допуск) от точек
2. Находим пересечения линий с буфером
3. Определяем для линии точку пересечения и меняем её на точку из таблицы точек
2. Находим пересечения линий с буфером
3. Определяем для линии точку пересечения и меняем её на точку из таблицы точек
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Связать вершины с линиями после корректировки топологии
На мой взгляд без программирования здесь не обойтись. Хотя м.б. в MI15 и появились какие-то специфические штатные средства.
Опишу, как я вижу алгоритм решения задачи:
0. Имеем два слоя myLines (только полилинии) и myPoints (только точки)
1. Делаем копию myLines (myLinesC)
2. На myLinesC объединяем все в один объект
3. Цикл по точкам myPoints:
ob1=ConnectObjects(ob2,ob3,"T")
x=ObjectGeography(ob1, OBJ_GEO_LINEENDX)
y=ObjectGeography(ob1, OBJ_GEO_LINEENDY)
Alter Object ob2 Geography OBJ_GEO_POINTX, x
Alter Object ob2 Geography OBJ_GEO_POINTY, y
Update myPoints obj = ob2 Where RowID = id
Здесь ob2 – текущая точка из myPoints;
ob3 – комбинированный объект со слоя myLinesC;
ob1 – объект линия, от ob2 до ближайшего узла ob3.
PS. Не забудьте установить Set CoordSys
Опишу, как я вижу алгоритм решения задачи:
0. Имеем два слоя myLines (только полилинии) и myPoints (только точки)
1. Делаем копию myLines (myLinesC)
2. На myLinesC объединяем все в один объект
3. Цикл по точкам myPoints:
ob1=ConnectObjects(ob2,ob3,"T")
x=ObjectGeography(ob1, OBJ_GEO_LINEENDX)
y=ObjectGeography(ob1, OBJ_GEO_LINEENDY)
Alter Object ob2 Geography OBJ_GEO_POINTX, x
Alter Object ob2 Geography OBJ_GEO_POINTY, y
Update myPoints obj = ob2 Where RowID = id
Здесь ob2 – текущая точка из myPoints;
ob3 – комбинированный объект со слоя myLinesC;
ob1 – объект линия, от ob2 до ближайшего узла ob3.
PS. Не забудьте установить Set CoordSys
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Связать вершины с линиями после корректировки топологии
Предлагаю программу для решения вашей задачи. Использовалась идея, изложенная в предложенном выше алгоритме (в том виде как он изложен результат не будет получен).
Условия использования:
1. Для ваших таблиц с точками и полилиниями делаете копии с именами myPoints и myLines соответственно. Это полезно и с точки зрения безопасности ваших данных.
2. По окончании работы программы таблицу myLines можно удалить, а таблицу myPoints (результат обработки) можно, по необходимости, переименовать.
Условия использования:
1. Для ваших таблиц с точками и полилиниями делаете копии с именами myPoints и myLines соответственно. Это полезно и с точки зрения безопасности ваших данных.
2. По окончании работы программы таблицу myLines можно удалить, а таблицу myPoints (результат обработки) можно, по необходимости, переименовать.
- Вложения
-
- после обработки
- _после.png (15.9 КБ) 5087 просмотров
-
- до обработки
- _до.png (16.05 КБ) 5087 просмотров
-
- PLPoints.zip
- (1.67 КБ) 337 скачиваний
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 21 гость