Объединение линий

0 голосов
спросил 17 Май, 10 от Karapuzekee (480 баллов) в категории Программные продукты Esri
Всем доброго времени суток.
Посоветуйте и/или покажите пожалуйста, как можно реализовать следующую задачу...

Имеется шейп-файл с линиями. Линии следуют друг за другом, может быть так, что отдельные линии следующие друг за другом имеют одинаковые длины.
Задача:
Необходимо создать кнопку (с помощью VBA), при нажатии на которую появится окно с выбором линий одной длины, которые можно объединить в одну бОльшую. И следовательно, объединить выбранные линии в одну
(линии должны быть обязательно друг за другом).


p.s. я только студент, был бы очень благодарен за помощь.

18 Ответы

0 голосов
ответил 17 Май, 10 от pooperec (10,820 баллов)
Ещё раз и поподробнее.
1. Вы самостоятельно выбираете линию. Нажимаете на кнопку и соотвенно выбираются все линии такой же длинны ( длинной 21 см, к примеру), я Вас правильно понял?
2. На чём Вы пишите? Вам именно макрос на VBA нужно?
0 голосов
ответил 17 Май, 10 от Karapuzekee (480 баллов)
1. Сначала проверяется наличие линий одинаковой длинны (например, по 21см и по 12см, которые следуют др за другом 21,21,12,21,12,12,21 - пример). Из комбобокса выбирается нужная длина линий, а уже затем эти линии объединяются при нажатии кнопки на форме.
2. VS 2008 Visual Basic.
0 голосов
ответил 17 Май, 10 от pooperec (10,820 баллов)
1. А вариант когда внесли 4 линии по 2 пары, одинаковой длинны. Но внесли сначала 12, потом 21, потом 12, потом 21 не рассматривается?

В общем, Вам нужно определять пересечение (касание) линий, или нужно просто смотреть что запись номер 1, такая же как и запись номер 2 (3,4,5)?
0 голосов
ответил 17 Май, 10 от Karapuzekee (480 баллов)
нет, такой вариант не рассматривается.
определять не нужно. Линии в шейп-файле будут просто следовать друг за другом. Линии в шейпе задавались последовательно, так что думаю вариант "просто смотреть что запись номер 1, такая же как и запись номер 2 (3,4,5)" подходит.

в общем при последовательности линий: 12,21,33,12,12,12,21,21*,12,21,21*,33,33,44,45,46
в комбобоксе выпал список:
"Линии длиной"
12
21
33

* - это две последовательности в 2 отдельные линии :)
0 голосов
ответил 17 Май, 10 от pooperec (10,820 баллов)
Тогда - не интересно)))

Заходите https://forum.esri-cis.ru/index.php?qa=34852 смотрите видео.

А дальше, вопрос из разряда перебора значений...

Ну если совсем всё непонятно, то тут ещё посмотрите:
https://forum.esri-cis.ru/index.php?qa=34792

И в конце традиционное - юзайте поиск...
0 голосов
ответил 17 Май, 10 от Karapuzekee (480 баллов)
хотя я наверное не до конца описал. Дело в том, что Большая линия должна будет начинаться с координаты 1 линии из последовательности и, следовательно, заканчиваться в координате конца последней линии из последовательности, с изгибами (если они есть) в местах соединения линий.

зы. все никак не могу найти ссылки на видео :(
0 голосов
ответил 17 Май, 10 от pooperec (10,820 баллов)


хотя я наверное не до конца описал. Дело в том, что Большая линия должна будет начинаться с координаты 1 линии из последовательности и, следовательно, заканчиваться в координате конца последней линии из последовательности, с изгибами (если они есть) в местах соединения линий.зы.


Большая линия))) Ассоциация возникла с Большой Гудронный Каллупайдер )))

Это не будет проблема, полилинию(и) можно преобразовать в наборы точек (IPointCollection), и потом в первый набор добавить второй.

все никак не могу найти ссылки на видео :(

    
Прошу прощения, ошибся топиком, видео опубликовано тут
https://forum.esri-cis.ru/index.php?qa=35739
0 голосов
ответил 17 Май, 10 от Karapuzekee (480 баллов)
Spasibo Vam. Sorry 4et raskladka klaviaturi zaela....

Voznik eshe 1 vopros. Kakoi macros nyjen dlya togo 4tobi v tablice atributov shapa otobrajalas' dlina? V kalculatore polya.
0 голосов
ответил 17 Май, 10 от TDenis (42,620 баллов)
Это можно решить без "макроса в калькуляторе", посмотрите на пункт меню "Вычислить геометрию".
Или вам непременно нужен код?
0 голосов
ответил 18 Май, 10 от Karapuzekee (480 баллов)
Дело в том что в таблицу атрибутов нужно добавить столбец с длинами линий. Код конечно бы хотелось :)
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...