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

MapInfo, MapBasic
Аватара пользователя
agentbond007
Активный участник
Сообщения: 100
Зарегистрирован: 14 дек 2010, 15:14
Репутация: 0

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

Сообщение agentbond007 » 10 июн 2011, 14:49

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

SergS
Активный участник
Сообщения: 120
Зарегистрирован: 14 апр 2011, 13:24
Репутация: 5
Откуда: Екатеринбург

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

Сообщение SergS » 10 июн 2011, 14:57

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

Аватара пользователя
agentbond007
Активный участник
Сообщения: 100
Зарегистрирован: 14 дек 2010, 15:14
Репутация: 0

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

Сообщение agentbond007 » 10 июн 2011, 15:13

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

SergS
Активный участник
Сообщения: 120
Зарегистрирован: 14 апр 2011, 13:24
Репутация: 5
Откуда: Екатеринбург

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

Сообщение SergS » 10 июн 2011, 15:17

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

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

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

Сообщение Boris » 13 июн 2011, 01:08

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

Аватара пользователя
agentbond007
Активный участник
Сообщения: 100
Зарегистрирован: 14 дек 2010, 15:14
Репутация: 0

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

Сообщение agentbond007 » 13 июн 2011, 03:33

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

Аватара пользователя
agentbond007
Активный участник
Сообщения: 100
Зарегистрирован: 14 дек 2010, 15:14
Репутация: 0

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

Сообщение agentbond007 » 13 июн 2011, 04:40

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

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

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

Сообщение Boris » 14 июн 2011, 00:13

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

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя