На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты
АРХИВ ФОРУМА...
здесь вы можете ознакомиться с материалами форума до 08.06.2008

перемещение объектов

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти  
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1 2 След.
RSS
перемещение объектов
доброго дня

возможно ли установить связь между объектами, так чтобы при перемещении одного объекта перемещались определенные точки связанных с ним объектов? если проще, то надо перемещать узлы графа - соответственно за ними должны тянуться и связи
Самый лучший способ организации связи - семантики.
В самой ГИС Карте, такие связи называются наборами или группами объектов.
В качестве понимания принципа работы, можно использовать мой пост в этом форуме адресованный Екатерине http://www.gisweb.ru/forum/messages/f...ssage15791 .
В качестве примера, я представил ей простой набор из двух объектов. Количество объектов в наборе может быть любым.
П.С. Девушка тоже является разработчиком приложений в Linux.
Mapview 11. ГИС Карта 10.7.7. GisToolKit 10 (и 11) Free.
ЧИСЛО СОБЩЕНИЙ = "Отмена крепостного права на РУСИ"
что-то из меня юзер плохой: под виндой в редакторе классификатора добавляю к объекту семантику 32802, а при редактировании уже непосредственно самого объекта карты эта семантика остается недоступной

а можно, чтобы одна точка объекта была связана с одним объектом, а другая - с другим? мне-то нужно, чтобы была связь между двумя узлами, т.е. одна точка в одном наборе, а другая точка этого же объекта в другом
Изменено: Bushlya Max - 18.04.2011 14:09:41
уже, похоже, под виндой разобрался - есть отдельно в редакторе карты возможности по редактированию "набора", но невозможно сделать, чтобы при перемещении узла за ним тянулась связь

тогда остается только вручную контроллировать положение узлов и связей?
Изменено: Bushlya Max - 18.04.2011 15:06:01
Есть режим в редакторе (в Windows): группа Точка - Редактирование общих точек. Тянутся точки всех, которые находятся в допуске.
Допуск (согласования) устанавливается в диалоге "Параметры редактора карты".
Программно решить задачу для графа можно следующим образом:
Если работаете с графом дорог, то дуги имеют семантики 32813, 32814 - номера начального, конечного узлов; узлы имеют семантику 32812 - номер дуги. По ним можно программно определить все дуги для данного узла. Далее определяете точку дуги, совпадающую с узлом, и корректируете ее.
похоже, единственный подходящий вариант - это реализация через редактирование ближайшей точки: Точка -> Редактирование точки. Не подскажете, какая функция mapapi делает соответствующую операцию?
Например, эти:

Код

// Изменить координаты общей точки метрики у данного объекта и
// у всех объектов карты, имеющих такую точку
// Изменение выполняется после вызова mapCommitObject()
// или mapCommitWithPlace()
// Значение координат задано в метрах на местности
// info    - идентификатор объекта карты в памяти
// x,y,h   - координаты точки в метрах
// number  - номер точки (c 1)
// subject - номер подобъекта (если = 0, обрабатывается объект)
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapUpdatePointPlaneInMap(HOBJ info,double x,double y,
long int number,
long int subject = 0);

_MAPIMP long int _MAPAPI mapUpdatePointPlane3DInMap(HOBJ info,double x,double y,
double h,
long int number,
long int subject = 0);

// Изменить координаты общей точки метрики у данного объекта и
// у всех объектов общего слоя,  имеющих такую точку
// Изменение выполняется после вызова mapCommitObject()
// или mapCommitWithPlace()
// Значение координат задано в метрах на местности
// info    - идентификатор объекта карты в памяти
// x,y,h   - координаты точки в метрах
// number  - номер точки
// subject - номер подобъекта (если = 0, обрабатывается объект)
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapUpdatePointPlaneInLayer(HOBJ info,double x,double y,
long int number,
long int subject = 0);

_MAPIMP long int _MAPAPI mapUpdatePointPlane3DInLayer(HOBJ info,double x,double y,
double h,
long int number,
long int subject = 0);

спасибо
// Изменить координаты общей точки метрики у данного объекта и
// у всех объектов общего слоя, имеющих такую точку
- не очень подходит: выходит, если объект наедет на другой, то они начнут двигаться вместе?)
есть другие варианты?
Страницы: 1 2 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)


© КБ Панорама, 1991-2012