我正在使用MapBasic代码,我遇到了问题。我编写了一个代码来计算用户点击的行的长度。我的程序计算线的长度。我写的程序分别写了行的起点和终点。
我想问你的第一个问题是如何将程序显示的行的起始坐标和结束坐标的小数位数显示为3位?返回的值显示两位数或不以十进制数字显示。
我想问你的第二个问题是: 使用我编写的程序计算的行长度与使用计算器计算的行长度不同。这是什么原因?
我使用Universal Translator工具将我在Mapinfo软件中绘制的线对象层转换为形状格式。
我在ArcMap中打开了表格。表中同一行的长度非常接近我用计算器计算的长度。我在Mapinfo中找到的结果值与我在ArcMap中找到的结果不同。
我使用MapBasic编写了另一个程序。我在程序中创建了一个对话框。在我的程序中,用户使用edittext中写入的X-Y坐标值在图层中创建点。我用我写的mapbasic程序创建了两个点。程序还会在创建点后在屏幕上写入点的X-Y坐标。在使用程序时,我输入了点坐标的十进制数字的三位数。但屏幕上的X-Y坐标显示为两位数。我使用Mapinfo程序中的标尺测量两点之间的距离。我还使用计算器在屏幕上显示的X-Y坐标计算了长度。 Mapinfo中的标尺找到的长度值与我计算的长度值不同。
当我尝试使用Mapinfo软件编写的程序时,我将我创建的图层投影设置为Türkish坐标系(3度k = 1 ITRF)Cenral Meridian 33.
我在哪里做错了?你能帮帮我吗? 谢谢大家
我写的mapbasic程序的图片补充了这个问题。
答案 0 :(得分:0)
为了计算一条你不需要毕达哥拉斯公式的线的长度,只需使用ObjectLen(obje, "m")
为了获得所需的位数,请查看函数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子句。