Код mapbasic для создания 10 точек в одном лонг / лат без наложения друг на друга

Добрый день! Я знаю, как создать точки в картографической основе, имеющие один длинный / лат, но я хотел создать 10 точек по одной координате, не накладываясь друг на друга, но отделенных радиусом около 5 м от заданных координат.

Любая идея, как я должен начать кодировать это.

бр, иван

1 ответ

В принципе это выглядит так

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
Другие вопросы по тегам