再会!我知道如何在具有单个 long/lat 的 mapbasic 中创建一个点,但我想在单个坐标上创建 10 个点而不相互重叠,但与给定坐标相隔约 5m 半径。
知道我应该如何开始编码。
兄弟,伊万
原则上它看起来像这样
Dim x,y as Float
Dim offset as Integer
offset = 5 'distance 5 meters
'single coordinate
x = 1000
y= 2000
For i = 1 To 10
Create Point (x + Cos(i * (360/10) * DEG_2_RAD) * offset, y + Sin(i * (360/10) * DEG_2_RAD) * offset)
Next
请注意,这仅适用于笛卡尔坐标系,例如 UTM。如果你在纬度/经度上工作,你必须为偏移量做一些额外的三角函数。
更新
也看看功能CartesianOffset( object, angle, distance, units )
和CartesianOffsetXY( object, xoffset, yoffset, units )
,也许它们更容易使用。
Dim obj as Object
obj = CreatePoint(1000, 2000) 'Start point
For i = 1 To 10
Create Point(CentroidX(obj), CentroidY(obj))
obj = CartesianOffset(obj, -10, 5, "m") ' move by 5 meters for -10°
Next