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

paintxml(изменение проекции)

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

В последних версиях это исправлено.

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

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


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