| Повече ▼

Различни в измерванията на разстоянието в MapBasic / MapInfo

Различни в измерванията на разстоянието в MapBasic / MapInfo


Опитвам се да направя персонализиран ToolButton, но имам проблеми с получаването на правилни измервания.

Начертах линия (използвайки инструмента за нормална линия) и зададох дължината й на 1000м. (Щракнете двукратно върху него и го измервайте с инструмента за линийка, показвайки, че е точно 1000,00 m)

Когато обаче използвам инструмента си и плъзгам от единия край на линията до другия, той дава разстояние от 999.8892м. Предполагам, че това е някакъв проблем с проекцията, но използвам едни и същи настройки в цялата система ... Къде греша?

Включи "mapbasic.def" Включване "icons.def" Декларирам Sub Main установено, Sub LineTool установено, Sub ExitProg Sub Main Alter ButtonPad "Рисуване" Add Separator ToolButton Икона MI_ICON_ARROW_19 HelpMsg "Натиснете върху картата, за да начертаете линия" Курсор MI_CURSOR_CROSSHAIR DrawMode DM_CUSTOM_LINE Calling LineTool Покажи Меню Alter "Инструменти" Добавяне "Инструмент за затваряне на линия" Извикване на ExitProg End Sub Sub ExitProg End Program End Sub Sub LineTool Задаване на единици за разстояние "m" Задаване на Coordsys Earth Dim x, y, x2, y2 като float x = CommandInfo (CMD_INFO_X) y = CommandInfo (CMD_INFO_Y) x2 = CommandInfo (CMD_INFO_X2) y2 = CommandInfo (CMD_INFO_Y2) отпечатайте x & "," & y & "," & x2 & "," & y2 Ако x <> x2 и y <> y2 След това отпечатайте разстояние ( x, y, x2, y2, "cm") Друг печат "Това не беше линия." End if End Sub

MapInfo има две функции за разстояние. CartesianDistance и SpericalDistance (и Разстояние, което би било същото като SpericalDistance) Опитайте се да използвате CartesianDistance () вместо Разстояние ()


Както казва Петър, MapInfo има два различни подхода за измерване на разстоянието - декартов или сферичен, като последният взема предвид кривината на земята. Използваният подход може да бъде зададен за отделни прозорци на картата чрез промяна на настройките, намерени в Карта> Опции, настройката по подразбиране за новите прозорци на картата може да бъде зададена под Опции> Настройки> Прозорец на картата

Проверете коя настройка се използва при изчертаване и измерване на линията в прозореца Карта - трябва да видите думите Сферична или Декартово появяващи се след измерването. Проверете дали това съответства на метода, използван от вашата програма MapBasic, като изберете подходящата функция от описаните от Питър.


Възможно ли е поради проблем със закръгляването, тъй като резултатът, който давате от MapBasic, е до 4 знака след десетичната запетая? Също така забелязвам, че отчитате разстоянието в сантиметри.

В MapBasic можете да закръглите номерата си, като използвате функцията Round:

Синтаксис Round (num_expr, round_to)

num_expr е числов израз.

round_to е числото, до което трябва да се закръгли num_expr.


Гледай видеото: MapBasic in MapInfo. Урок 1. Основы языка