| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		sergey
 
 
  Зарегистрирован: 18.09.2012 Сообщения: 14
 
  | 
		
			
				 Добавлено: Вт 26 Фев 2013 02:16    Заголовок сообщения: paintxml(изменение проекции) | 
				     | 
			 
			
				
  | 
			 
			
				| делаю paintxml,дальше получаю картинку,но заметил вот какую особенность.как бы не были направлены оси координат,при использовании paintxml он изменяет направление где Y на восток а X на север.ПО чему так? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Михаил Власов
 
  
  Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Вт 26 Фев 2013 09:49    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Потому что параметры отображения задаются не в paintxml, а через IIngeoPaintSurface.Projection. _________________ С уважением, Михаил Власов. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		sergey
 
 
  Зарегистрирован: 18.09.2012 Сообщения: 14
 
  | 
		
			
				 Добавлено: Вт 26 Фев 2013 13:25    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Код: | 	 		   IInImage image = (IInImage)obj.ingeo.CreateObject(TIngeoObjectClass.inocImage, null);
 
           XmlDocument paintXmlDoc = new XmlDocument();
 
           paintXmlDoc.LoadXml("<paint/>");
 
           foreach (GIS_layer sloi in obj.layer.list_gis_layer)
 
           {
 
               XmlElement layerelem = paintXmlDoc.CreateElement("layer");
 
               layerelem.SetAttribute("oid", sloi.ID);
 
               paintXmlDoc.DocumentElement.AppendChild(layerelem);
 
           }
 
obj.ingeo.ActiveDb.PaintXml(image.Surface, paintXmlDoc.OuterXml);
 
    
 
 
 
                       image = (IInImage)obj.ingeo.CreateObject(TIngeoObjectClass.inocImage, null);
 
                    
 
                       image.Height = 256;
 
                       image.Width = 256;
 
                       bool yu = image.Surface.Projection.YMirror;
 
                       image.Surface.Navigator.Navigate(n + shag_taila / 2, m + shag_taila / 2, 1.0/obj.current);
 
                       image.Surface.Navigator.FitWorldBounds(n, m, n + shag_taila, m + shag_taila, TIngeoNavigatorFitMode.infitNoScale);
 
obj.ingeo.ActiveDb.PaintXml(image.Surface, paintXmlDoc.OuterXml);
 
 
                           image.SaveToFile(path + @"\" + current_folder + @"\" + po_x.ToString() + "_" + po_y + "." + obj.layer.format_picture);
 
 | 	  
 
Подскажите что нужно добавить чтобы система отображения была декартова(осьХ восток Y север) | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Михаил Власов
 
  
  Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Вт 26 Фев 2013 16:13    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Приведите image.Surface.Navigator к IIngeoMatrixProjectionNavigator
 
У него есть дополнительные полезные свойства:
 
aNavigator.CenterX = ... 
 
aNavigator.CenterY = ... 
 
aNavigator.XAngle = ... 
 
aNavigator.YMirror = ... 
 
aNavigator.ZoomScale = ... _________________ С уважением, Михаил Власов. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		sergey
 
 
  Зарегистрирован: 18.09.2012 Сообщения: 14
 
  | 
		
			
				 Добавлено: Вт 26 Фев 2013 18:11    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Код: | 	 		     image = (IInImage)obj.ingeo.CreateObject(TIngeoObjectClass.inocImage, null);
 
                      double tt = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).XAngle;
 
                     bool  hh = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).YMirror;
 
                       ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).XAngle = 0;
 
                       ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).YMirror = false;
 
                       tt = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).XAngle;
 
                       hh = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).YMirror; | 	  
 
В итоге значения tt=1.57 hh=true.Что нитак? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Михаил Власов
 
  
  Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Ср 27 Фев 2013 10:35    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | sergey писал(а): | 	 		   	  | Код: | 	 		     image = (IInImage)obj.ingeo.CreateObject(TIngeoObjectClass.inocImage, null);
 
                      double tt = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).XAngle;
 
                     bool  hh = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).YMirror;
 
                       ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).XAngle = 0;
 
                       ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).YMirror = false;
 
                       tt = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).XAngle;
 
                       hh = ((IIngeoMatrixProjectionNavigator)image.Surface.Navigator).YMirror; | 	  
 
В итоге значения tt=1.57 hh=true.Что нитак? | 	  
 
В старых версиях (до 4.4.8 ) была ошибка. Чтобы работало, надо было брать ссылку на навигатор один раз и потом с ней работать.
 
Как-то так:
 
 	  | Код: | 	 		     image = (IInImage)obj.ingeo.CreateObject(TIngeoObjectClass.inocImage, null);
 
var nav = (IIngeoMatrixProjectionNavigator)image.Surface.Navigator;
 
nav.XAngle = 0;
 
nav.YMirror = false;
 
...
 
 | 	  
 
В последних версиях это исправлено. _________________ С уважением, Михаил Власов. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |