 |
www.integro.ru ЦСИ ИНТЕГРО
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Воробьёв Владислав
Зарегистрирован: 10.03.2005 Сообщения: 10 Откуда: г. Курган, Горэлектросети
|
Добавлено: Чт 10 Мар 2005 11:51 Заголовок сообщения: Хранение данных об объектах |
|
|
Хочу поделиться некоторым опытом интеграции Ингео с корпоративными базами данных. Ну параллельно спросить мнения коллег об этом вопросе, вдруг чего неправильно делаю . База данных объектов электросетей(кабельные линии, РП и.т.д.) у нас была создана еще до покупки Ингео, поэтому когда появилась Ингео, естественно встал вопрос об связи обьекта Ингео с объектом из корпоративной базы. Да и конвертировать данные (или тем более дублировать) в Ингео не хотелось, все таки Paradox для этого не совсем подходит.
Решили задачу написание аддона к Ингео. Он состоит из двух частей:
1) Получает идентификатор выделенного объекта Ингео и записывает его в корпоративную базу, тем самым связывая обьекты двух систем
2) Получает идентификатор выделенного объекта Ингео, осуществляет поиск по идентификатору и показывает инфу из корпоративной базы.
Главный вопрос, который меня мучит - не случится ли чего с идентификатором объекта Ингео? Т.е. остается ли он постоянным на протяжении всей жизни объекта? Здравый смысл подсказывает, что да , однако сомнения все же остаются. Кто что думает? |
|
Вернуться к началу |
|
 |
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
Добавлено: Чт 10 Мар 2005 19:43 Заголовок сообщения: Re: Хранение данных об объектах |
|
|
Воробьёв Владислав писал(а): | Хочу поделиться некоторым опытом интеграции Ингео с корпоративными базами данных...
Решили задачу написание аддона к Ингео. Он состоит из двух частей:
1) Получает идентификатор выделенного объекта Ингео и записывает его в корпоративную базу, тем самым связывая обьекты двух систем
2) Получает идентификатор выделенного объекта Ингео, осуществляет поиск по идентификатору и показывает инфу из корпоративной базы.
Главный вопрос, который меня мучит - не случится ли чего с идентификатором объекта Ингео? Т.е. остается ли он постоянным на протяжении всей жизни объекта? Здравый смысл подсказывает, что да , однако сомнения все же остаются. Кто что думает? |
Решение простое, а значит и правильное.
А сомения связаны с ограничениями, с которыми Вам придётся смириться. Стало быть надо озвучить эти ограничения.
С идентификатором ИнГЕО ничего не случится, если:
1. Вы хозяин своих графических объектов. По сути у Вас одна графическая база, вы не поддерживаете обмен с конкурентами или другими городскими службами, которые могли в ваши слои добавлять свои объекты, редактировать ваши.
2. Вы используете для ИМПОРТА/ЭКСПОРТА только файлы обменного формата. Другие форматы (DXF, MIF и т.д.) создают объекты с новым ID.
3. Если вы объединяете два объекта в один, то второй объект исчезает и ВЫ НА ЭТО СОЗНАТЕЛЬНО ИДЁТЕ. ID первого объекта не меняется. У меня подчинённые пристроились таким образом дублировать семантику - сначала объединяют, потом разделяют - у обоих одинаковая семантика, но ID у второго меняется.
4. Вы не будете данные объекты переносить из одного слоя в другой. Иначе Вам надо предусматривать такой модуль переноса, который одновременно в прежней базе заменяет ID. У нас земельные участки мигрируют по картам - ПРЕДВАРИТЕЛЬНЫЕ->СОГЛАСОВАННЫЕ->АРХИВНЫЕ. Конечно это можно реализовать стилями, тематическими слоями, но и так хорошо.
5. Можно предложить страховочные меры: с ID в корпоративную базу добавлять 4 поля вещественного типа - Xmin, Xmax, Ymin, Ymax чтобы в случае разрыва связи по ID иметь возможность перейти к прямоугольнику, описывающему потерянный объект. Страховка конечно далеко не абсолютная, но и требования к функциональности незначительные. _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
 |
andreichernov
Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
|
Добавлено: Пт 11 Мар 2005 10:26 Заголовок сообщения: Re: Хранение данных об объектах |
|
|
Воробьёв Владислав писал(а): |
Решили задачу написание аддона к Ингео. Он состоит из двух частей:
1) Получает идентификатор выделенного объекта Ингео и записывает его в корпоративную базу, тем самым связывая обьекты двух систем
2) Получает идентификатор выделенного объекта Ингео, осуществляет поиск по идентификатору и показывает инфу из корпоративной базы.
Главный вопрос, который меня мучит - не случится ли чего с идентификатором объекта Ингео? Т.е. остается ли он постоянным на протяжении всей жизни объекта? Здравый смысл подсказывает, что да , однако сомнения все же остаются. Кто что думает? |
Маленько неправильно вы делаете, хотя так делают все , и мы тоже иногда .
Дело в том, что локальный 12-символьный идентификатор МЕНЯЕТСЯ при экспорте-импорте через IDF (Сергей Попов Вас смутил немного).
Не меняется глобальный ID .
(Разумеется, если БД у Вас одна и навсегда, то такой проблемы нет).
Поэтому лучше или в корпоративной БД записывать ссылку на globalID (в IngeoAPI есть функции перевода LocalidToGlobalID),
либо в семантическое поле объекта Ингео прописывать уникальный ID - (реестровый номер), который не будет меняться и при переносе между слоями, и при экспорте-импорте через MIF и в корпоративной БД писать ссылку на него.
"Фоновое" заполнение реестрового номера легко сделать с помощью триггеров БД или функций отклика на сообщение об удалении объекта в скриптах Ингео. Единственное, не советую в MS SQL использовать автоматическую генерацию с помощью спец.типа GUID, Ингео некорректно его обрабатывает.
Мы, кстати, так делаем практически LIVE-связь с Мапинфо,
обновляя графику и семантику объектов Ингео на основе изменений, сделанных в Мапинфо, с сохранением ID и доп. оформления.
Я бы посоветовал еще в вашей корпоративной БД сделать уникальную идентификацию и наоборот хранить в семантике Ингео ссылку на ИД корпоративной БД.
Кстати, так организована связь Ингео и Инмета.
------
Вообще в этом году мы хотим написать что-то типа
"универсального программного интерфейса" для совместной
LIVE-связи между приложениями
(обертки, которые реализовывается для каждого приложения с минимальным набором функций по установлению, разрыву связи
и взаимного позиционирования). |
|
Вернуться к началу |
|
 |
andreichernov
Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
|
Добавлено: Пт 11 Мар 2005 10:39 Заголовок сообщения: Re: Хранение данных об объектах |
|
|
Сергей Попов писал(а): |
3. Если вы объединяете два объекта в один, то второй объект исчезает и ВЫ НА ЭТО СОЗНАТЕЛЬНО ИДЁТЕ. ID первого объекта не меняется. У меня подчинённые пристроились таким образом дублировать семантику - сначала объединяют, потом разделяют - у обоих одинаковая семантика, но ID у второго меняется.
4. Вы не будете данные объекты переносить из одного слоя в другой. Иначе Вам надо предусматривать такой модуль переноса, который одновременно в прежней базе заменяет ID. У нас земельные участки мигрируют по картам - ПРЕДВАРИТЕЛЬНЫЕ->СОГЛАСОВАННЫЕ->АРХИВНЫЕ. Конечно это можно реализовать стилями, тематическими слоями, но и так хорошо.
|
Мы тут скрипт простенький написали, который позволяет
1) Быстрое копирование между слоями . Выделяете объект, делаете активным слой назначения и объект копируется на этот слой (без утомительного пропихивания по массовым операциям).
Графика копируется по совпадению имен стилей или в первый попавшийся, семантика - по совпадению имен.
2) замена графики одного объекта графикой другого ( в том числе в лежащих в разных слоях).
3) перенос семантики с одного объекта на другой ( в том числе в лежащих в разных слоях).
Могу выслать...
Более того, можно реализовать скрипт переноса объектов
между слоями с сохранением ID ( но это конечно надругательство над Ингео). |
|
Вернуться к началу |
|
 |
Воробьёв Владислав
Зарегистрирован: 10.03.2005 Сообщения: 10 Откуда: г. Курган, Горэлектросети
|
Добавлено: Пт 11 Мар 2005 13:43 Заголовок сообщения: |
|
|
Спасибо всем за ценные замечания. Учтем в дальнейшей работе. Есть вопрос по глобальным идентификаторам. Получается, у объекта всегда есть два идентификатора - глобальный и локальный? Локальный может меняться, а глобальный никогда? И как этот глобальный идентификатор получать(ну кроме функции)? |
|
Вернуться к началу |
|
 |
Воробьёв Владислав
Зарегистрирован: 10.03.2005 Сообщения: 10 Откуда: г. Курган, Горэлектросети
|
Добавлено: Пт 11 Мар 2005 14:44 Заголовок сообщения: |
|
|
Вдогонку к предыдущему посту: я не нашел в спецификации интерфейсов для аддонов к Ингео такой функции перевода из локального в глобальный идентификатор. Такая функция есть в интерфейсе IIngeoDb в Ingeo_tlb, но это совсем не то. Мне то нужна такая функция из аддона. Может я что то недопонял? |
|
Вернуться к началу |
|
 |
andreichernov
Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
|
Добавлено: Пт 11 Мар 2005 16:04 Заголовок сообщения: |
|
|
Воробьёв Владислав писал(а): | Вдогонку к предыдущему посту: я не нашел в спецификации интерфейсов для аддонов к Ингео такой функции перевода из локального в глобальный идентификатор. Такая функция есть в интерфейсе IIngeoDb в Ingeo_tlb, но это совсем не то. Мне то нужна такая функция из аддона. Может я что то недопонял? |
В Addone можно использовать функции нового интерфейса
var
AManager: IM2AddonManager;
IngeoApp :IIngeoApplication;
begin
...
AManager.QueryInterface(IID_IIngeoApplication, IngeoApp);
IngeoApp.ActiveDb.LocalIDToGlobalID(...);
...
IngeoApp := nil;
end |
|
Вернуться к началу |
|
 |
andreichernov
Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
|
Добавлено: Пт 11 Мар 2005 16:07 Заголовок сообщения: |
|
|
Воробьёв Владислав писал(а): | Вдогонку к предыдущему посту: я не нашел в спецификации интерфейсов для аддонов к Ингео такой функции перевода из локального в глобальный идентификатор. Такая функция есть в интерфейсе IIngeoDb в Ingeo_tlb, но это совсем не то. Мне то нужна такая функция из аддона. Может я что то недопонял? |
В Addone можно использовать функции нового интерфейса
-------
uses Ingeo_TLB;
procedure TAddon.Initialize(const AManager: IM2AddonManager);
var
IngeoApp :IIngeoApplication;
begin
...
AManager.QueryInterface(IID_IIngeoApplication, IngeoApp);
IngeoApp.ActiveDb.LocalIDToGlobalID(...);
...
IngeoApp := nil;
end;
------
По поводу функий API лучше обращаться прямо в Интегро к Рустаму. |
|
Вернуться к началу |
|
 |
Воробьёв Владислав
Зарегистрирован: 10.03.2005 Сообщения: 10 Откуда: г. Курган, Горэлектросети
|
Добавлено: Пт 11 Мар 2005 16:27 Заголовок сообщения: |
|
|
Спасибо. Кроме этого я нашел в юните AddOnDbUtils такую функцию:
function GetIngeo(anAddon: TM2CustomAddon): IIngeoApplication;
begin
Result := anAddOn.AddonManager.OleObject as IIngeoApplication;
end; |
|
Вернуться к началу |
|
 |
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
Добавлено: Пт 11 Мар 2005 21:13 Заголовок сообщения: Re: Хранение данных об объектах |
|
|
andreichernov писал(а): |
Чуть ранее: Сергей Попов Вас смутил немного
Мы тут скрипт простенький написали, который позволяет
1) Быстрое копирование между слоями . Выделяете объект, делаете активным слой назначения и объект копируется на этот слой (без утомительного пропихивания по массовым операциям).
Графика копируется по совпадению имен стилей или в первый попавшийся, семантика - по совпадению имен.
2) замена графики одного объекта графикой другого ( в том числе в лежащих в разных слоях).
3) перенос семантики с одного объекта на другой ( в том числе в лежащих в разных слоях).
Могу выслать...
Более того, можно реализовать скрипт переноса объектов
между слоями с сохранением ID ( но это конечно надругательство над Ингео). |
Да, смутил, признаюсь. Ведь знаю, что ID составной и первые 4 символа связывают с GLOBALID через LOCALID в таблице INGEO_IDMAPER. LOCALID меняются, ведь может номер пять быть уже занят, но GLOBALID нерушим.
[Упс.] Я дешефрированием не занимаюсь, ищю простые объяснения на пальцах.
На счёт послать я быстро отозвался... За ранее буду премного благодарен по адресу: architec@infopac.ru.
Не вижу причин не надругаться над любимым ИнГЕО: перенос между слоями с сохранением ID. _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
 |
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
Добавлено: Пт 01 Апр 2005 12:35 Заголовок сообщения: Интеграция корпораций через ИнГЕО |
|
|
Данная тема началась с интеграции уже накопленных данных с графическими объектами в ИнГЕО в рамках одной организации.
У нас встала проблема интеграции нескольких организаций со свими базами на основе общих графических данных.
Пока самый простой случай.
Архитектура ведёт слой "Адресный план". Дублируем его в БТИ, в будущем в ПВС, ЖКХ и т.д. БТИ по адресам производит первоначальную свзять этих объектов со своими данными и пользуется. Менять графику они не в праве.
Для обеспечения живучести сделаной связи, вносим в семантику объекта идентивикатор БТИ и дублируем эту информацию в Архитектуру.
Наступает момент Xа - обновление.
Делаю обменный файл.
Есть 2 варианта закачать этот обмнный файл в БТИ:
1. Поверх существующей информации
2. Удаление существующей и импорт в пустую карту.
В первом случае наша графика (по теории) должна отличаться только на удалённые Архитектурой объекты. У нас они удалены, а в БТИ остались.
Это не удобно БТИ - вероятно была причина для удаления объекта, а они этого не выявят и мусор у них будет продолжать жить.
Во втором случае графика будет синхронизирована, но опять вилы: БТИ к нами удалённому объекту уже могло иметь информацию, и не согласиться с нами на предмет удаления.
Есть предложение для обсуждения.
Реализовать обменный файл для сохранения в нем ТОЛЬКО ИЗМЕНЕНИЙ за период с момента, указанного при выборе предыдущего обменного файла.
1. Сделали обменный файл целиком всей карты. Это моментальный снимок. Зафиксировали момент (1) идентичности информации в обменном файле и в базе.
2. По прошествии времени делаем ещё один обменный файл, но уже не целиком всё а содержащий только изменения произошедшие после момента (1). По сути, можно без участия ИнГЕО вторым шагом из двух обменных файлов (предыдущего и текущего) сформировать опять обменный файл НОВЫЙ, полный на ЭТОТ момент идентичный базе. Момент (2).
3. Следующий момент обновления. Повторяем пункт 2 используя снимок (2) как предыдущий.
4. При импорте обменного файла, производятся изменения и помечаются объекты на удаление (как?). После можно удаляемые объекты отработать и принять решение: удалить или оставить.
Мудрёно всё, может кто предложит схему по проще? _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
 |
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
|
|