  | 
				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 Откуда: ИНТЕГРО
  | 
		 | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
  | 
   
 
		 |