При сохранении координат черепахи в виде координат ГИС, а затем их загрузки в NetLogo путем преобразования их обратно в координаты NetLogo, происходит небольшое смещение позиции.
Этот код я использую для хранения NetLogo в ГИСкоординаты:
let env gis:envelope-of agentToStore
file-open "agentLocations.csv"
file-print (word first env "," last env)
file-close
И этот код я использую для преобразования координат ГИС обратно в координаты NetLogo (здесь x и y - координаты, считанные из файла):
let envelope gis:world-envelope
let xscale (max-pxcor - min-pxcor) / (item 1 envelope - item 0 envelope)
let yscale (max-pycor - min-pycor) / (item 3 envelope - item 2 envelope)
if x >= item 0 envelope and x <= item 1 envelope
and y >= item 2 envelope and y <= item 3 envelope[
let netlogo-x (x - item 0 envelope) * xscale + min-pxcor
let netlogo-y (y - item 2 envelope) * yscale + min-pycor
ask patch (ceiling netlogo-x) (floor netlogo-y) [sprout 1]
]
Без 'потолок 'и' пол ', загруженный агент всегда перемещается на ячейку в NetLogo.Однако даже в случае потолка и пола в ГИС-пространстве все еще есть небольшой сдвиг для некоторых агентов, что влияет на мой результат.Есть ли лучший способ сделать это?