Андрей
Зарегистрирован: 18.04.2005 Сообщения: 47 Откуда: г. Калуга
|
Добавлено: Чт 14 Июл 2005 15:51 Заголовок сообщения: Координаты |
|
|
Включаем режим редактирования контура копируем точки в буфер обмена, создаем каталог координат… ну и сюрприз… точки идут против часовой стрелки… Да хитро… Видимо это новая система отображения координат. Плохо тока, что в нашей области нигде этого не понимают, требуют чтоб все было по часовой стрелке инструкция говорят... Вот и кручу их сейчас в «Экселе» пока безуспешно.  |
|
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Чт 14 Июл 2005 21:10 Заголовок сообщения: |
|
|
В ИнГео координаты контура хранятся в той последовательности, в которой они вводились, независимо от того, был ли создан объект интерактивно оператором или программно.
Соответственно, в буфер обмена точки помещаются в том порядке, в котором они следуют в контуре объекта.
Если Вам необходимо получить список координат в порядке обхода контура по часовой стрелке, Вы можете воспользоваться следующим нехитрым скриптом:
Код: |
' Coords - массив координат вида: Array(Array(x1,y1),Array(x2,y2),...)
sub EnsureClockwiseOrder(Coords)
dim i, j, prevI, square, x1, y1, x2, y2, temp
square = 0
for i = 0 to UBound(Coords)
if i = 0 then j = UBound(Coords) else j = i - 1
x1 = Coords(j)(0) : y1 = Coords(j)(1)
x2 = Coords(i)(0) : y2 = Coords(i)(1)
square = square + (x2 - x1)*(y2 + y1)/2
next
if square > 0 then
i = 0
j = UBound(Coords)
do while i < j
temp = Coords(i)
Coords(i) = Coords(j)
Coords(j) = temp
i = i + 1
j = j - 1
loop
end if
end sub
|
_________________ С уважением, Михаил Власов. |
|