Več

Različne meritve razdalje v MapBasic / MapInfo


Poskušam narediti gumb orodja po meri, vendar imam nekaj težav s pravilnimi meritvami.

Narisal sem črto (z orodjem običajne črte) in jo določil na 1000m. (Z dvojnim klikom in merjenjem z orodjem ravnilo pokažeta, da je točno 1000,00 m)

Ko pa uporabim svoje orodje in povlečem z enega konca črte na drugega, dobimo razdaljo 999,8892m. Mislim, da gre za nekakšno težavo s projekcijo, vendar uporabljam enake nastavitve v celotnem sistemu ... Kje grem narobe?

Vključujejo "mapbasic.def" vključujejo "icons.def" Ugotovi Sub Main ugotovi Sub LineTool ugotovi Sub ExitProg Sub Main Spremeni ButtonPad "Risba" Dodaj Separator ToolButton Ikona MI_ICON_ARROW_19 HelpMsg "Kliknite na zemljevid, da potegnemo črto" Cursor MI_CURSOR_CROSSHAIR DrawMode DM_CUSTOM_LINE klicne LineTool Prikaži Spremeni meni "Orodja" Dodaj "Orodje za zapiranje vrstic" Klicanje konca ExitProg Sub Sub Sub ExitProg End End Sub Sub Line Tool Nastavi enote razdalje "m" Nastavi Coordsys Earth Dim x, y, x2, y2 kot float x = CommandInfo (CMD_INFO_X) y = CommandInfo (CMD_INFO_Y) x2 = CommandInfo (CMD_INFO_X2) y2 = CommandInfo (CMD_INFO_Y2) natisni x & "," & y & "," & x2 & "," & y2 Če x <> x2 in y <> y2 Nato natisni razdaljo ( x, y, x2, y2, "cm") Drugi tisk "To ni bila črta." End if End Sub

MapInfo ima dve funkciji Razdalja. CartesianDistance in SpericalDistance (in Distance, ki bi bila enaka kot SpericalDistance) Poskusite uporabiti CartesianDistance () namesto Distance ()


Kot pravi Peter, ima MapInfo dva različna pristopa k merjenju razdalje - kartezijski ali sferični, pri čemer slednji upošteva ukrivljenost zemlje. Uporabljeni pristop lahko nastavite za posamezna okna zemljevidov s spreminjanjem nastavitev, najdenih pod Zemljevid> Možnosti, lahko privzeto nastavitev za nova okna zemljevida nastavite pod Možnosti> Nastavitve> Okno zemljevida

Preverite, katera nastavitev se uporablja pri risanju in merjenju črte v oknu Zemljevid - videli bi besede Sferična ali Kartezijanski po meritvi. Preverite, ali to ustreza metodi, ki jo uporablja vaš program MapBasic, tako da izberete ustrezno funkcijo med tistimi, ki jih je opisal Peter.


Je to morda zaradi težave z zaokroževanjem, ker je rezultat, ki ga dobite iz MapBasic, na 4 decimalna mesta? Opazim tudi, da razdaljo izračunavate v centimetrih.

V MapBasic lahko zaokrožite številke s funkcijo Round:

Sintaksa Round (num_expr, round_to)

num_expr je številski izraz.

round_to je številka, na katero je treba zaokrožiti num_expr.


Poglej si posnetek: MapBasic in MapInfo. Урок 1. Основы языка (September 2021).