Здравствуйте! У меня возникла такая необходимость: при добавлении объекта на карту создать в семантике объекта поле под названием ID и записать туда номер этого ID. Далее при выделении этого объекта на карте я должен получить его ID (а лучше в виде подсказки типа HINT объекта, где покажет его ID). Подскажите пожалуйста какие операторы мне необходимо использовать?? Заранее спасибо!!
Александр Махин написал: Здравствуйте! У меня возникла такая необходимость: при добавлении объекта на карту создать в семантике объекта поле под названием ID и записать туда номер этого ID. Далее при выделении этого объекта на карте я должен получить его ID (а лучше в виде подсказки типа HINT объекта, где покажет его ID). Подскажите пожалуйста какие операторы мне необходимо использовать?? Заранее спасибо!!
Здравствуйте! В панели задач "Редактор карты" есть режим "Семантика - Расчеты по семантике", где в блоке "Операции" есть функция ID. Она записывает уникальные номера объектов в указанную семантику. В меню "Параметры" есть режим "Отображение подсказки", который без "клика" по карте выводит информацию на экран. Среди выводимой информации есть семантика "Собственное название". Следовательно, Вы можете записать ID (уникальные номера объектов) в эту семантику и программа будет отображать их на карте.
А есть более "простой" вариант - есть возможность подключить к карте библиотеку условных знаков agro.iml, в ней заложена возможность создать семантику типа "Формула". Одна из реализованных формул - ID (номер) объекта, который будет автоматически добавляться во все объекты. Ну а далее (для вывода на экран) - как описал Роман.
Добрый день! Это все понятно, но я пишу свою ПО на C# с использованием GIS ToolKit 11 и там в тот момент когда я программно добавляю объект мне нужно добавить в него еще поле и записать в это поле значение. Все это делается для того, чтобы после того когда объект выделяют, то получают его описание из БД. А в БД у меня есть поле с описанием. Т.е. я выделил объект на карте получил его ID далее сравнил с ID записи со своей БД и отобразил его описание. Все это необходимо сделать программно.
Я еще попробывал перед тем как добавить программно объект на карту записать в MapObj.Tag значение, но при повторном открытии карты значение становится пустам. Есть ли возможность сохранять это значение постоянно???
Просьба задавать вопросы строго в тематических форумах. Если у Вас вопросы по разработке - для этого предусмотрена данная ветка форума. Ваши вопросы были выделены в отдельную тему и перенесены сюда.
Александр Махин написал: Добрый день! Это все понятно, но я пишу свою ПО на C# с использованием GIS ToolKit 11 и там в тот момент когда я программно добавляю объект мне нужно добавить в него еще поле и записать в это поле значение. Все это делается для того, чтобы после того когда объект выделяют, то получают его описание из БД. А в БД у меня есть поле с описанием. Т.е. я выделил объект на карте получил его ID далее сравнил с ID записи со своей БД и отобразил его описание. Все это необходимо сделать программно.
Ваша задача решается записью нужного Вам значения в семантику объекта. Для идентификатора записи в БД в классификаторе карты предусмотрена специальная семантика ObjectDBID (код 32798). Вы также можете использовать свой собственный классификатор в котором создать для своих целей свои семантические характеристики.
Для работы с семантиками объекта карты используются свойства и методы класса axMapObj.Semantic
Александр Махин написал: Добрый день! Это все понятно, но я пишу свою ПО на C# с использованием GIS ToolKit 11 и там в тот момент когда я программно добавляю объект мне нужно добавить в него еще поле и записать в это поле значение. Все это делается для того, чтобы после того когда объект выделяют, то получают его описание из БД. А в БД у меня есть поле с описанием. Т.е. я выделил объект на карте получил его ID далее сравнил с ID записи со своей БД и отобразил его описание. Все это необходимо сделать программно.
Ваша задача решается записью нужного Вам значения в семантику объекта. Для идентификатора записи в БД в классификаторе карты предусмотрена специальная семантика ObjectDBID (код 32798). Вы также можете использовать свой собственный классификатор в котором создать для своих целей свои семантические характеристики.
Для работы с семантиками объекта карты используются свойства и методы класса axMapObj.Semantic
Получается так (код на С#) При программном добавлении объекта мне необходимо добавить ему семантику, а именно ID = 17; (скрин прилагаю)
if (AddObj.Checked) //Добавление объекта на карту { if (!MapSelectObjectRsc.ExecuteForMapObj(MapObj.C_CONTAINER, true)) return; MapSelectObjectRsc.RestoreEnabled = true; MapEditMetric.MetEditMode = TxEditMode.emCreate; MapSelectObjectRsc.Show(); MapPoint.PlaceInp = TxPPLACE.PP_PICTURE; MapPoint.SetPoint(x1, y1); MapObj.Metric.Append(0, MapPoint.C_CONTAINER); MapObj.Semantic.AddWithValue(1122, ID); MapObj.Semantic.Add(112233); MapObj.Commit(); MapView.Refresh(); } AddObj.Checked = false;
А еще я хотел пойти простым путем т.е. создаваему объекту в его Tag присваивать значение = 17, но при повторном открытии карты данный Tag обнуляется ((( Может можно его как то его сохранять при закрытии приложения?? Желательно подскажите кодом мне он легче дается))) Заранее спасибо!!