Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 |
|
Вернуться к началу |
|
 |
|