Страница 2 из 2

Re: Как получить информацию о полигоне?

Добавлено: 10 июн 2011, 14:49
agentbond007
Неужели все так замудрёно? и что такое Bounds и счем его едят? :D может вы меня не так поняли... :?:
Приведу последовательность своих действий:
1) Открываю таблицу с проекцией Гаусса Крюгера (Пулково 1942) / GK Зона 18(Пулково 1942) [EPSG: 28418]
2) Стандартными средствами MapInfo рисую полигон
3) Инструментом "Линейка" измеряю длины сторон
4) Выделяю полигон и своей программой получаю длины сторон по вышеперечисленным формулам
Длины сторон при измерении "Линейка" и моей программы не совпадают!
Если это связано с замудренной темой про внутреннюю структуру сетки координат, то каким образом MapInfo при помощи инструмента "Линейка" показывает те длины которые были заданы при построении полигона?

Re: Как получить информацию о полигоне?

Добавлено: 10 июн 2011, 14:57
SergS
да не заморачивайтесь :)
попробуйте следующее:
рисуете линию длиной 100 м (у меня СК-42, 11 зона)
щелкаете по ней 2 раза - 100 метров( измерения проводятся на сфере)
меняете режим (измерения проводятся нна плоскости) линия под углом примерно 30 град - и длина получается 100.36
вот такие дела
а в программе однозначно используется плоскость

Re: Как получить информацию о полигоне?

Добавлено: 10 июн 2011, 15:13
agentbond007
В работе программы первое что она делает это получает проекцию выделенного полигона и устанавливает её в MapBasic`е (Set CoordSys), далее в его родной проекции получает координаты и расчитывает длины сторон по формуле. Не пойму где тут-какой переход от сферы к плоскости :?:

Re: Как получить информацию о полигоне?

Добавлено: 10 июн 2011, 15:17
SergS
agentbond007 писал(а): Не пойму где тут-какой переход от сферы к плоскости
а формула, которую вы используете для рассчета длины выведена для плоского евклидова пространства.
и не может использоваться на кривых поверхностях (ну не в нашем случае, по крайней мере)
да просто заметьте, при вводе вертикальной линии длиной 100 м, у вас приращение по вертикальной координате ни фига не 100 м получается

Re: Как получить информацию о полигоне?

Добавлено: 13 июн 2011, 01:08
Boris
Можно нам объяснить для каких задач в MapBasic'е стоит использовать СВОЮ формулу расчета расстояний? Если в нем имеется не меньше 4-х функций измерения расстояний как на плоскости, так и на сфере.
С тем же успехом можно и свою программу для доступа к таблицам MapInfo написать.

Re: Как получить информацию о полигоне?

Добавлено: 13 июн 2011, 03:33
agentbond007
Собственный расчёт делаю из за того что стандартных функций в MapBasic`e нет, вот и изобретаю велосипед, я б с радостью юзал стандартные функции :cry: Может перечислите эти четыре функции?

Re: Как получить информацию о полигоне?

Добавлено: 13 июн 2011, 04:40
agentbond007
И вправду есть! :D Нарыл функцию CartesianDistance ( x1 , y1 , x2 , y2 , unit_name ), только она выдаёт точно такой же результат =((( :oops:
Функция Distance ( x1 , y1 , x2 , y2 , unit_name ) - по лучше

Re: Как получить информацию о полигоне?

Добавлено: 14 июн 2011, 00:13
Boris
лучше или хуже - зависит от задачи. для данных в фиксированной проекции имеет смысл использовать расчет на сфере только в очень специфических случаях, поскольку те, кто общается на спроецированных данных используют расстояния выдаваемые на чем-то, что является аналогом бумажной карты - т.е. на плоскости. В таких случаях правило, что искажения на границе 6-ти градусной зоны Гаусса-Крюгера составляют 1/1200, и являются пренебрежимо малыми, устраивают большинство пользователей большинства задач.