| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		Николаускас
 
 
  Зарегистрирован: 27.11.2013 Сообщения: 52
 
  | 
		
			
				 Добавлено: Чт 12 Ноя 2015 13:36    Заголовок сообщения: Вопросы о IIngeoMapObjects.UpdateChanges() и IIngeoContourPart.InsertVertex(...) | 
				     | 
			 
			
				
  | 
			 
			
				| Добрый день. У меня простой вопрос к знающим людям. Упомянутые в названии темы методы не возвращают значений, поэтому скажите, как я могу определить, что точка не вставилась или изменения не применились? Просто выскочит исключение или что? Какие есть способы определить, что точка не вставилась или изменения не применились? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Азаматов Азамат Хадисович
 
 
  Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
  | 
		
			
				 Добавлено: Чт 12 Ноя 2015 14:08    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				после insertvertex можно просто проверить последнюю точку или количество точек.
 
 
по update сложнее.
 
по графике исключений никогда не наблюдал, зато "непоявление" 
 
объектов при массовом создании - запросто.
 
тут если только собирать id созданных/измененных объектов и 
 
проверять внесенные изменения. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Николаускас
 
 
  Зарегистрирован: 27.11.2013 Сообщения: 52
 
  | 
		
			
				 Добавлено: Чт 12 Ноя 2015 15:38    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Вот и я столкнулся с непоявлением объектов при выгрузке контуров и семантической информации большого количества участков в ИнГЕО. Интересно, что контуры некоторых участков отсутствуют, но семантическая информация о них при этом перенесена.
 
 
Как я понял из Ваших слов, такое "непоявление" - известный факт. Как же с ним бороться? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		APopov
 
 
  Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
  | 
		
			
				 Добавлено: Пт 13 Ноя 2015 15:45    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Я с "исчезающей" графикой в своих модулях не сталкивался.
 
редко сталкивался с последствиями - семантика есть, объекта нет или графика у объекта пустая - как правило это результаты импортов mif/mid или dxf.
 
 
в своих модулях мы используем такие правила:
 
*) делать MapObjects.UpdateChanges() через какое-то кол-во объектов, например через 10000
 
 	  | Код: | 	 		  
 
while (...) 
 
{
 
  createOrUpdateObject();
 
  if (++i % 10000 == 0) //% это mod
 
  {
 
     MapObjects.UpdateChanges();
 
     MapObjects = IngeoApp.ActiveDB.MapObjects;//таким образом сбрасываем кэш транзакции, чтоб память не жралась
 
  }
 
}
 
 | 	  
 
тут правда есть проблема - откатить такое создание целиком это отдельная серьёзная задача. так что нужно решать что важнее - сделать изменения или иметь возможность откатиться.
 
 
*) убедится, что территория базы покрывает создаваемые объекты. Если объекты вне территории создавать, то они кидаются в корневой сектор слоя, который со временем может переполнится и не сохранять новые объекты и ваще глюков можно нахвататься _________________ ОАО "Самара-Информспутник",
 
   инженер-программист Попов Артем | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		APopov
 
 
  Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
  | 
		
			
				 Добавлено: Пт 13 Ноя 2015 15:52    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				insertvertex никогда не подводил.
 
правда был глюк в C# в режиме Debug некоторые точки (как правило последние) оказывались равны 0.
 
Но в release сборке такого не было и вроде больше к этому мы не возвращались.
 
 
Были проблемы с другими методами
 
 	  | Код: | 	 		  
 
  // эти две процедуры живы только потому что существуед баг при использовании AddPartsFrom
 
  // к контуру в котором уже есть части
 
  procedure InsertContourPartsFrom(const destCont, srcCont:IIngeoContour);
 
  procedure AddContourPartsFrom(const destCont, srcCont:IIngeoContour);
 
 
  function ExtractContourPart(const inApp: IIngeoApplication;
 
    const iCont :IIngeoContour; cpNo :integer):IIngeoContour;
 
 | 	  
 
там реализованы очевидные вещи через 
 
 	  | Код: | 	 		  iCP.GetVertex(j, x, y, ac);
 
iResCP.InsertVertex(j, x, y, ac);
 
 | 	  
 
т.е. InsertVertex для нас надёжная процедура _________________ ОАО "Самара-Информспутник",
 
   инженер-программист Попов Артем | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Николаускас
 
 
  Зарегистрирован: 27.11.2013 Сообщения: 52
 
  | 
		
			
				 Добавлено: Чт 26 Ноя 2015 18:55    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| Спасибо за ответы. А есть ли другие способы обеспечить появление на карте всех участков, кроме как выполнением MapObjects.UpdateChanges() только через определенное количество участков? Поскольку этот способ порождает, как уже упоминалось, много лишних забот. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Николаускас
 
 
  Зарегистрирован: 27.11.2013 Сообщения: 52
 
  | 
		
			
				 Добавлено: Ср 16 Дек 2015 13:53    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| Вопрос снимается. Буду просто проверять входит ли выгружаемый участок в границы территории. Раз такая беда с этими секторами. Всем спасибо за ответы. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |