-1

我正在处理 MapBasic 代码,但遇到了问题。我写了一个代码来计算用户点击的行的长度。我的程序计算线的长度。我写的程序分别写了行的起点和终点。

我想问你的第一个问题是如何将程序显示的行的起始和结束坐标的小数位数显示为3位?返回的值要么显示两位数,要么不以十进制数字显示。

我想问你的第二个问题是:我写的程序计算出来的线长和计算器计算出来的线长不一样。这是什么原因?

我使用通用转换器工具将我在 Mapinfo 软件中绘制的线对象的图层转换为形状格式。

我在 ArcMap 中打开了表格。表中同一行的长度非常接近我用计算器计算的长度。我在 Mapinfo 中找到的结果值与我在 ArcMap 中找到的结果不一样。

我使用 MapBasic 编写了另一个程序。我在程序中创建了一个对话框。在我的程序中,用户在图层中创建点,其中 X - Y 坐标值写入编辑文本。我用自己编写的 mapbasic 程序创建了两个点。创建点后,程序还会在屏幕上写入点的 X - Y 坐标。使用该程序时,我输入了点坐标的十进制数字的三位数字。但屏幕上的 X - Y 坐标显示为两位数。我使用 Mapinfo 程序中的标尺测量两点之间的距离。我还使用计算器屏幕上出现的 X-Y 坐标计算了长度。Mapinfo中标尺找到的长度值和我计算的长度值不一样。

当我尝试使用 Mapinfo 软件编写的程序时,我将创建的图层的投影设置为 Türkish Coordinate Systems (3 degree k = 1 ITRF) Cenral Meridian 33。

我在哪里做错了?你能帮我解决这个问题吗?感谢大家

我写的 mapbasic 程序的图片添加了这个问题。

在此处输入图像描述

4

1 回答 1

0

为了计算一条线的长度,您不需要毕达哥拉斯公式,只需使用ObjectLen(obje, "m")

为了获得所需的位数,请查看 function Format$。文档中的示例:

Format$( 12345, ",#") ' returns "12,345"
Format$(-12345, ",#") ' returns "-12,345"
Format$( 12345, "$#") ' returns "$12345"
Format$(-12345, "$#") ' returns "-$12345"

Format$( 12345.678, "$,#.##") ' returns "$12,345.68"
Format$(-12345.678, "$,#.##") ' returns "-$12,345.68"

Format$( 12345.678, "$,#.##;($,#.##)") 'returns "$12,345.68"
Format$(-12345.678, "$,#.##;($,#.##)") 'returns "($12,345.68)"
Format$(12345.6789, ",#.###") ' returns "12,345.679"
Format$(12345.6789, ",#.#") ' returns "12,345.7"
Format$(-12345.6789, "#.###E+00") ' returns "-1.235e+04"
Format$( 0.054321, "#.###E+00") ' returns "5.432e-02"

Format$(-12345.6789, "#.###E-00") ' returns "-1.235e04"
Format$( 0.054321, "#.###E-00") ' returns "5.432e-02"

Format$(0.054321, "#.##%") ' returns "5.43%"
Format$(0.054321, "#.##\%") ' returns ".05%"
Format$(0.054321, "0.##\%") ' returns "0.05%"

在创建任何对象或执行计算之前,您应该设置坐标系,例如

Set CoordSys Earth Projection 25, 1003, "m", 7.4395833333, 46.9524055555, 600000, 200000 Bounds (-99400000, -99800000) (100600000, 100200000)

注意,你有CoordSys几个地方,不要混合它们

  • Set Map ... CoordSys ...这仅适用于地图,但不适用于代码中的对象。
  • Commit Table ... CoordSys...仅适用于已保存的表。
  • SessionInfo( SESSION_INFO_COORDSYS_CLAUSE )指示会话的 CoordSys 子句的字符串结果。
于 2018-03-02T11:04:03.563 回答