[英]how to create moving turtles out of a shapefile in Netlogo
I'm just starting with using Netlogo to create an Agent Based Model. 我刚开始使用Netlogo创建基于代理的模型。 I have two shapefiles I want to use: a network map of a city (line-shapefile) and a point-shapefile of scooters in the city.
我有两个我想要使用的shapefile:一个城市的网络地图(line-shapefile)和一个城市滑板车的点状文件。 The idea is to have them drive through the city on the lines of the network shapefile.
我们的想法是让他们在网络shapefile的线路上穿越城市。 Since I am new to Netlogo, I only managed to load these shapefiles in my model.
由于我是Netlogo的新手,我只是设法在我的模型中加载这些shapefile。 Could someone give me a headstart by helping me to create turtles from the scooter registrations (points) and let them move over the network lines.
有人可以通过帮助我从踏板车注册(点)创建海龟并让他们在网络线上移动来给我一个启动。 I have found little help so far on the internet and it won't work with trial and error.
到目前为止,我在互联网上找不到任何帮助,它无法通过反复试验。 So far, my code is just this:
到目前为止,我的代码就是这样:
extensions [ gis ]
to load
ca
let network gis:load-dataset "Roads_Asmterdam.shp"
foreach gis:feature-list-of network
[ gis:set-drawing-color white
gis:draw ? 0.3
]
let people gis:load-dataset "scooters_Amsterdam.shp"
foreach gis:feature-list-of people
[ gis:set-drawing-color blue
gis:draw people 3
]
end
So, as far as I know, I need a to go function where I want to move the turtles. 所以,据我所知,我需要一个能够移动海龟的功能。 And I need a function to create possible moving turtles out of the point-shapefile, but also I need to let them know to only use the lines instead of the whole area.
我需要一个函数来创建可能的点状文件中的移动海龟,但我还需要让他们知道只使用线而不是整个区域。
Many thanks in advance! 提前谢谢了!
After loading the lines shape file you need to convert these into a network of agents/turtles and link them. 加载线形文件后,您需要将它们转换为代理/龟的网络并链接它们。 NetLogo doesn't do that for you, you need to iterate over all the features, line segments and coordinates yourself.
NetLogo不会为您做到这一点,您需要自己迭代所有功能,线段和坐标。 Then you need to place the scooters onto the coordinates from the line network, and then you can "ask" them to move around.
然后你需要将滑板车放在线网络的坐标上,然后你可以“要求”他们四处移动。
Here's what I came up with: 这是我想出的:
extensions [ gis ]
globals [ roads-dataset scooter-dataset ]
breed [ nodes node ]
breed [ scooters scooter ]
breed [ walkers walker ]
walkers-own [ wlocation ]
scooters-own [slocation]
to setup
; reset
clear-all
reset-ticks
; load data set
gis:load-coordinate-system (word "C:/Program Files/NetLogo 5.3.1/app/models/Code Examples/GIS/data/WGS_84_Geographic.prj")
set roads-dataset gis:load-dataset "C:/shape/roads.shp"
set scooter-dataset gis:load-dataset "C:/shape/scooter.shp"
gis:set-world-envelope (gis:envelope-of roads-dataset)
; draw data set
gis:set-drawing-color blue
gis:draw roads-dataset 1
make-road-network
end
to make-road-network
clear-links
let first-node nobody
let previous-node nobody
foreach gis:feature-list-of roads-dataset [ ; each polyline
foreach gis:vertex-lists-of ? [ ; each polyline segment / coordinate pair
foreach ? [ ; each coordinate
let location gis:location-of ?
if not empty? location [ ; some coordinates are empty []
create-nodes 1 [
set color green
set size 1
set xcor item 0 location
set ycor item 1 location
set hidden? true
if first-node = nobody [
set first-node self
]
if previous-node != nobody [
create-link-with previous-node
]
set previous-node self
]
]
]
set previous-node nobody
]
]
; connect adjacent polylines/roads
ask nodes [ create-links-with other nodes in-radius 0.001 ]
end
to add-agents
create-walkers 5 [
set color red
set wlocation one-of nodes
move-to wlocation
]
end
to add-scooters
foreach gis:feature-list-of scooter-dataset [
foreach gis:vertex-lists-of ? [
let location gis:location-of (first ?)
create-scooters 1 [
set color yellow
set size 1
set xcor item 0 location
set ycor item 1 location
let nearest-node min-one-of (nodes in-radius 10)[distance myself]
set slocation nearest-node
move-to slocation
]
]
]
end
to go
ask walkers [
let new-location one-of [link-neighbors] of wlocation
move-to new-location
set wlocation new-location
]
ask scooters [
let new-location one-of [link-neighbors] of slocation
move-to new-location
set slocation new-location
]
end
Some resources and example code I found particularly helpful: 我发现的一些资源和示例代码特别有用:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.