| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		sirwalrus
 
 
  Зарегистрирован: 02.12.2008 Сообщения: 81
 
  | 
		
			
				 Добавлено: Вт 02 Дек 2008 16:20    Заголовок сообщения: Повернуть часть карты | 
				     | 
			 
			
				
  | 
			 
			
				С ингео работею недавно и досталось она мне по наследству. в нем до меня работали пару лет разные люди.
 
Конечно всплывают разного рода косяки.
 
В частности один из населенных пунктов орентирован не правельно - повернут на градусов 10, по сравнению с тем как на самом деле (кстати этот косяк ка я понял родной и был изначально)
 
 
Естественно там много слоев, дорого, строени, разные коммуникации.
 
 
как можно повернуть часть карты в которых входит множество слоев? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		nikser
 
 
  Зарегистрирован: 09.03.2005 Сообщения: 535 Откуда: г. Братск
  | 
		
			
				 Добавлено: Вт 02 Дек 2008 18:25    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Задача не простая
 
Я так понимаю слои распространяются не только на этот населенный пункт.
 
У меня есть 2 варианта, но оба трудоемкие
 
 
первый - поворачивать послойно, но нужно убрать всю топологию и определиться с центром поворота и направляющими поскольку штатными средствами Ингео угол поворота не задать.
 
 
второй - выгрузить данный населенный пункт в IDF
 
создать новую базу и загрузить его туда
 
провести ряд трансформаций карт
 
поскольку Ингео трансформирует относительно точки (0,0) нужно выбрав базовую точку переместить ее вместе со всеми картами к нулю, повернуть на нужный угол а потом вернуть в нужную коодинату.
 
а потом загрузить опять в рабочую базу.
 
 
Преимущества второго способа 
 
1. Рабочая база пока не тронута
 
2. Возможность отката, исправления трансформации
 
3. работа сразу со всеми объектами 
 
Только сначала потренируйтесь на копии рабочей базы _________________ Сергей Николаев | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		sirwalrus
 
 
  Зарегистрирован: 02.12.2008 Сообщения: 81
 
  | 
		
			
				 Добавлено: Ср 03 Дек 2008 12:00    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Да слои и на другие населенные пункты распространены...
 
А нельзя перенести не в другой проект а на другие слои?
 
повернуть,а потом объединить нвые слои с материнскими? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		nikser
 
 
  Зарегистрирован: 09.03.2005 Сообщения: 535 Откуда: г. Братск
  | 
		
			
				 Добавлено: Ср 03 Дек 2008 13:06    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				можно и такой вариант
 
Делаете копии слоев (пустых) аналогично всем требуемым
 
копируете туда все объекты
 
А потом трансформируете вновь созданные карты как я описал
 
Трансформация позволяет выбрать отдельные слои _________________ Сергей Николаев | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		sirwalrus
 
 
  Зарегистрирован: 02.12.2008 Сообщения: 81
 
  | 
		
			
				 Добавлено: Ср 03 Дек 2008 13:39    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| ДА наверное это оптимальный вариант. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		nikser
 
 
  Зарегистрирован: 09.03.2005 Сообщения: 535 Откуда: г. Братск
  | 
		
			
				 Добавлено: Ср 03 Дек 2008 13:44    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Просто делая idf вы пожете за 1 раз "скопировать" все вписанные в окно объекты.
 
А в случае со слоями придется это делать послойно вручную
 
больше разницы нет _________________ Сергей Николаев | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		andreichernov
 
 
  Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
  | 
		
			
				 Добавлено: Пн 15 Дек 2008 10:02    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Для поворота части карты стандартными средствами ГИС попробуйте вызвать Сервис..Трансформация карты, затем выбрать в качестве типа преобразования "Функция" и там написать скрипт поворота типа 
 
следующего. 
 
' процедура трансформации части карты от 0 до 1000 по обеим осям 
 
' на 30 Градусов в математической системе координат 
 
 
sub convert
 
  MinX = 0
 
  MaxX = 1000
 
  MinY = 0 
 
  MaxY = 1000
 
  fi = 30.0/180*3.1416
 
  if MinX <inX and InX < MaxX and InY < MinY and MinY < MaxY then 
 
                OutX = Cos( fi ) * InX + Sin(fi) * InY
 
	OutY = - Sin( fi ) * InX + Cos ( fi ) * InY
 
	OutConvexity = InConvexity
 
  end if 
 
end sub
 
 
Дешево и сердито.
 
НО БУДЬТЕ КРАЙНЕ ВНИМАТЕЛЬНЫ!
 
нужно, чтобы все объекты целиком попадали в указанный интервал. Если только часть точек лежит внутри прямоугольника для трансформации, то объект серьезно исковеркается. Причем если у Вас  еще и сдвиг на большую величину, то будет огромный объект, который потом зависает при отрисовке и который надо удалять спецскриптами. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		sirwalrus
 
 
  Зарегистрирован: 02.12.2008 Сообщения: 81
 
  | 
		
			
				 Добавлено: Ср 17 Дек 2008 15:55    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				ШИКАРНО!
 
Спасибо огромное! | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		andreichernov
 
 
  Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
  | 
		
			
				 Добавлено: Ср 17 Дек 2008 17:08    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | andreichernov писал(а): | 	 		  Для поворота части карты стандартными средствами ГИС попробуйте вызвать Сервис..Трансформация карты, затем выбрать в качестве типа преобразования "Функция" и там написать скрипт поворота типа 
 
следующего. 
 
 | 	  
 
 
Сорри, в скрипте ошибка 
 
 
Верно так 
 
------------
 
' процедура трансформации части карты от 0 до 1000 по обеим осям 
 
' на 30 Градусов в математической системе координат 
 
sub convert
 
  MinX = 0
 
  MaxX = 1000
 
  MinY = 0 
 
  MaxY = 1000
 
  fi = 30.0/180*3.1416
 
  if MinX < InX and InX < MaxX and MInY < InY and InY < MaxY then 
 
                OutX = Cos( fi ) * InX + Sin(fi) * InY
 
	OutY = - Sin( fi ) * InX + Cos ( fi ) * InY
 
	OutConvexity = InConvexity
 
  end if 
 
end sub | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |