Как перемещать черепах, созданных в NetLogo, по дорогам (векторам полилинии), загруженным из ГИС shp? - PullRequest
1 голос
/ 29 апреля 2019

У меня есть жилые полигоны и инфраструктура (школы, больницы и т. Д.), Полигоны и дорожные полилинии из ГИС, загруженные в NetLogo.Согласно соответствующим группам жилых полигонов, я создал черепах в них.Теперь я хочу, чтобы эти черепахи переехали из жилой в инфраструктуру (скажем, в школу).Черепаха должна преодолевать расстояние менее 800 метров и выбирать пути с наименьшим сопротивлением (общий импеданс = ImpFacRoad1 * DistanceTravelledRoad1 + ImpFacRoad2 * DistanceTravelledRoad2 ...) и до пропускной способности школы (скажем, 10000 человек).

Мне удалось выполнить предыдущие шаги, такие как загрузка shps и добавление популяционных черепах в жилые участки. введите описание изображения здесь введите описание изображения здесь

Кодотносится к предыдущим шагам и не связано с моим точным вопросом.Должен поделиться в любом случае.

extensions [gis]

globals [infra-dataset
    rd-dataset
    node-dataset
    res-dataset]



 to setup
    ca
    set infra-dataset gis:load-dataset "C://Users//Riya//Desktop//NT//infra.shp"
    set rd-dataset gis:load-dataset "C://Users//Riya//Desktop//NT//rd.shp"
    set res-dataset gis:load-dataset "C://Users//Riya//Desktop//NT//res.shp"
   gis:set-world-envelope-ds gis:envelope-of lu-dataset
 ;infra
    foreach  gis:feature-list-of infra-dataset
     [[t]->
     if gis:property-value t "fac_head" = "Education" [gis:set-drawing-color red gis:fill t 2.0]
     if gis:property-value t "fac_head" = "Health" [gis:set-drawing-color green gis:fill t 2.0]
     if gis:property-value t "fac_head" = "Safety" [gis:set-drawing-color violet gis:fill t 2.0]
     if gis:property-value t "fac_type" = "Vacant" [gis:set-drawing-color cyan gis:draw t 2.0]
  ]
  ;rd
    foreach  gis:feature-list-of rd-dataset
     [[t]->
     if gis:property-value t "Width" = 18 [gis:set-drawing-color white gis:draw t 1.8]
     if gis:property-value t "Width" = 30 [gis:set-drawing-color white gis:draw t 3.0]
     if gis:property-value t "Width" = 45 [gis:set-drawing-color white gis:draw t 4.5]
  ]
; res
    foreach  gis:feature-list-of res-dataset
     [[t]->
      if gis:property-value t "Density" < 1.04 [gis:set-drawing-color yellow - 2 gis:fill t 2.0]
      if gis:property-value t "Density" > 1.04 and gis:property-value t "Density" < 1.8 [gis:set-drawing-color yellow gis:fill t 2.0]
      if gis:property-value t "Density" > 1.8 [gis:set-drawing-color yellow + 2 gis:fill t 2.0]
  ]
end

to night ; turtles stay in residential patches at night
    foreach gis:feature-list-of res-dataset
     [[t]->
      let pop ( gis:property-value t "Population" ) / 100
      let target-patches ( patches gis:intersecting t ) with [ gis:contained-by? self t ]
      if any? target-patches [
      let avg-turtles round ( pop / count target-patches )
      ask target-patches [
        sprout avg-turtles
  ]
  ]
  ]
    ask turtles [set shape "person"]
    reset-ticks
end

Как перемещать черепах, созданных в NetLogo, на дороги (векторы ломаных линий), загруженные из ГИС shp, на слишком большое расстояние, и расставлять приоритеты дорог на основе наименьшего сопротивления (при условиикак атрибут шейп-файла дороги)?Я ожидаю, что черепаха переместится из дома в школу.Если он может попасть в школу, он становится зеленым, но если нет, ему придется вернуться домой и покраснеть.

...