Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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;
...
|
В последних версиях это исправлено. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
 |
|