Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Хранение данных об объектах

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Сторонние разработки
Предыдущая тема :: Следующая тема  
Автор Сообщение
Воробьёв Владислав



Зарегистрирован: 10.03.2005
Сообщения: 10
Откуда: г. Курган, Горэлектросети

СообщениеДобавлено: Чт 10 Мар 2005 11:51    Заголовок сообщения: Хранение данных об объектах Ответить с цитатой

Хочу поделиться некоторым опытом интеграции Ингео с корпоративными базами данных. Ну параллельно спросить мнения коллег об этом вопросе, вдруг чего неправильно делаю Smile. База данных объектов электросетей(кабельные линии, РП и.т.д.) у нас была создана еще до покупки Ингео, поэтому когда появилась Ингео, естественно встал вопрос об связи обьекта Ингео с объектом из корпоративной базы. Да и конвертировать данные (или тем более дублировать) в Ингео не хотелось, все таки Paradox для этого не совсем подходит.
Решили задачу написание аддона к Ингео. Он состоит из двух частей:
1) Получает идентификатор выделенного объекта Ингео и записывает его в корпоративную базу, тем самым связывая обьекты двух систем
2) Получает идентификатор выделенного объекта Ингео, осуществляет поиск по идентификатору и показывает инфу из корпоративной базы.
Главный вопрос, который меня мучит - не случится ли чего с идентификатором объекта Ингео? Т.е. остается ли он постоянным на протяжении всей жизни объекта? Здравый смысл подсказывает, что да Smile, однако сомнения все же остаются. Кто что думает?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Чт 10 Мар 2005 19:43    Заголовок сообщения: Re: Хранение данных об объектах Ответить с цитатой

Воробьёв Владислав писал(а):
Хочу поделиться некоторым опытом интеграции Ингео с корпоративными базами данных...
Решили задачу написание аддона к Ингео. Он состоит из двух частей:
1) Получает идентификатор выделенного объекта Ингео и записывает его в корпоративную базу, тем самым связывая обьекты двух систем
2) Получает идентификатор выделенного объекта Ингео, осуществляет поиск по идентификатору и показывает инфу из корпоративной базы.
Главный вопрос, который меня мучит - не случится ли чего с идентификатором объекта Ингео? Т.е. остается ли он постоянным на протяжении всей жизни объекта? Здравый смысл подсказывает, что да Smile, однако сомнения все же остаются. Кто что думает?

Решение простое, а значит и правильное.
А сомения связаны с ограничениями, с которыми Вам придётся смириться. Стало быть надо озвучить эти ограничения.
С идентификатором ИнГЕО ничего не случится, если:
1. Вы хозяин своих графических объектов. По сути у Вас одна графическая база, вы не поддерживаете обмен с конкурентами или другими городскими службами, которые могли в ваши слои добавлять свои объекты, редактировать ваши.
2. Вы используете для ИМПОРТА/ЭКСПОРТА только файлы обменного формата. Другие форматы (DXF, MIF и т.д.) создают объекты с новым ID.
3. Если вы объединяете два объекта в один, то второй объект исчезает и ВЫ НА ЭТО СОЗНАТЕЛЬНО ИДЁТЕ. ID первого объекта не меняется. У меня подчинённые пристроились таким образом дублировать семантику - сначала объединяют, потом разделяют - у обоих одинаковая семантика, но ID у второго меняется.
4. Вы не будете данные объекты переносить из одного слоя в другой. Иначе Вам надо предусматривать такой модуль переноса, который одновременно в прежней базе заменяет ID. У нас земельные участки мигрируют по картам - ПРЕДВАРИТЕЛЬНЫЕ->СОГЛАСОВАННЫЕ->АРХИВНЫЕ. Конечно это можно реализовать стилями, тематическими слоями, но и так хорошо.
5. Можно предложить страховочные меры: с ID в корпоративную базу добавлять 4 поля вещественного типа - Xmin, Xmax, Ymin, Ymax чтобы в случае разрыва связи по ID иметь возможность перейти к прямоугольнику, описывающему потерянный объект. Страховка конечно далеко не абсолютная, но и требования к функциональности незначительные.

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
andreichernov



Зарегистрирован: 14.02.2005
Сообщения: 209
Откуда: Самара

СообщениеДобавлено: Пт 11 Мар 2005 10:26    Заголовок сообщения: Re: Хранение данных об объектах Ответить с цитатой

Воробьёв Владислав писал(а):

Решили задачу написание аддона к Ингео. Он состоит из двух частей:
1) Получает идентификатор выделенного объекта Ингео и записывает его в корпоративную базу, тем самым связывая обьекты двух систем
2) Получает идентификатор выделенного объекта Ингео, осуществляет поиск по идентификатору и показывает инфу из корпоративной базы.
Главный вопрос, который меня мучит - не случится ли чего с идентификатором объекта Ингео? Т.е. остается ли он постоянным на протяжении всей жизни объекта? Здравый смысл подсказывает, что да Smile, однако сомнения все же остаются. Кто что думает?

Маленько неправильно вы делаете, хотя так делают все , и мы тоже иногда Smile.
Дело в том, что локальный 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    Заголовок сообщения: Ответить с цитатой

Спасибо всем за ценные замечания. Учтем в дальнейшей работе. Есть вопрос по глобальным идентификаторам. Получается, у объекта всегда есть два идентификатора - глобальный и локальный? Локальный может меняться, а глобальный никогда? И как этот глобальный идентификатор получать(ну кроме функции)?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Воробьёв Владислав



Зарегистрирован: 10.03.2005
Сообщения: 10
Откуда: г. Курган, Горэлектросети

СообщениеДобавлено: Пт 11 Мар 2005 14:44    Заголовок сообщения: Ответить с цитатой

Вдогонку к предыдущему посту: я не нашел в спецификации интерфейсов для аддонов к Ингео такой функции перевода из локального в глобальный идентификатор. Такая функция есть в интерфейсе IIngeoDb в Ingeo_tlb, но это совсем не то. Мне то нужна такая функция из аддона. Может я что то недопонял?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
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;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Сергей Попов



Зарегистрирован: 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.

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Пт 01 Апр 2005 12:35    Заголовок сообщения: Интеграция корпораций через ИнГЕО Ответить с цитатой

Данная тема началась с интеграции уже накопленных данных с графическими объектами в ИнГЕО в рамках одной организации.
У нас встала проблема интеграции нескольких организаций со свими базами на основе общих графических данных.
Пока самый простой случай.
Архитектура ведёт слой "Адресный план". Дублируем его в БТИ, в будущем в ПВС, ЖКХ и т.д. БТИ по адресам производит первоначальную свзять этих объектов со своими данными и пользуется. Менять графику они не в праве.
Для обеспечения живучести сделаной связи, вносим в семантику объекта идентивикатор БТИ и дублируем эту информацию в Архитектуру.
Наступает момент Xа - обновление.
Делаю обменный файл.
Есть 2 варианта закачать этот обмнный файл в БТИ:
1. Поверх существующей информации
2. Удаление существующей и импорт в пустую карту.
В первом случае наша графика (по теории) должна отличаться только на удалённые Архитектурой объекты. У нас они удалены, а в БТИ остались.
Это не удобно БТИ - вероятно была причина для удаления объекта, а они этого не выявят и мусор у них будет продолжать жить.
Во втором случае графика будет синхронизирована, но опять вилы: БТИ к нами удалённому объекту уже могло иметь информацию, и не согласиться с нами на предмет удаления.
Есть предложение для обсуждения.
Реализовать обменный файл для сохранения в нем ТОЛЬКО ИЗМЕНЕНИЙ за период с момента, указанного при выборе предыдущего обменного файла.
1. Сделали обменный файл целиком всей карты. Это моментальный снимок. Зафиксировали момент (1) идентичности информации в обменном файле и в базе.
2. По прошествии времени делаем ещё один обменный файл, но уже не целиком всё а содержащий только изменения произошедшие после момента (1). По сути, можно без участия ИнГЕО вторым шагом из двух обменных файлов (предыдущего и текущего) сформировать опять обменный файл НОВЫЙ, полный на ЭТОТ момент идентичный базе. Момент (2).
3. Следующий момент обновления. Повторяем пункт 2 используя снимок (2) как предыдущий.
4. При импорте обменного файла, производятся изменения и помечаются объекты на удаление (как?). После можно удаляемые объекты отработать и принять решение: удалить или оставить.
Мудрёно всё, может кто предложит схему по проще?

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Сб 30 Апр 2005 17:32    Заголовок сообщения: Ответить с цитатой

Рекомендую обратить внимание на наши системы:
"Имущество" - http://integro.ru/projects/imush/index_imush.htm
и
"Мониторинг" - http://integro.ru/projects/monitoring/index_monitoring.htm
Они тесно интегрированы с ИнГео, и, возможно, уже решают Ваши задачи.

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Сторонние разработки Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB