NetLogo GIS扩展:如何根据shapefile中的位置信息创建海龟
NetLogo GIS extension: How to create turtles according to location information in shapefile
在制作扩展名为gis的NetLogo模型的过程中,一直卡在想根据shapefile位置信息制作海龟。如何在 shapefile 中包含的位置创建海龟并确保它们的属性也包含在 shapefile 中?
到目前为止,我设法在 R 中制作了一个数据集并将其转换为 shapefile 并将其导入到 NetLogo 中。使用提供的代码,我可以在地图上绘制点。
但我想在 shapefile 数据集中包含的每个位置创建代理。我在互联网上搜索过,但找不到。还有我看Netlogo的使用手册,也做不到。
并且在 shapefile 数据集中存在一个额外的特征,必须将其分配给每个代理,因为我想为每个位置创建一个家庭(代理)并根据该特征为其分配颜色。
shapefile包含一个ID号,一个布尔变量和坐标
1 16823 0 c(1.7474251, 4.9600897)
2 16873 0 c(1.3272039, 5.1185999)
3 16874 1 c(1.327054, 5.1162204)
4 16875 0 c(1.3270068, 5.115111)
5 16876 1 c(1.3268986, 5.1130956)
基于这段代码我可以实现如下代码:
set-patch-size 6.5
set dataset gis:load-dataset "PlotLocations_HARV.shp"
gis:set-world-envelope gis:envelope-of dataset
gis:set-drawing-color white
gis:draw dataset 1
在地图上画点,但是我想在点上萌代理,留着ID号。以及每个代理的布尔变量。
与此同时,在你们和其他资源的帮助下,我已经通过以下代码成功获得了我想要的东西:
to setup
ca
resize-world 0 120 0 120
set-patch-size 6.5
set dataset gis:load-dataset "PlotLocations_HARV3.shp"
gis:set-world-envelope gis:envelope-of dataset
gis:set-drawing-color white
gis:draw dataset 1
displayhh
end
to displayhh
foreach gis:feature-list-of dataset [
vector-feature ->
let coord-tuple gis:location-of (first (first (gis:vertex-lists-of vector-feature)))
let pv gis:property-value vector-feature "CC_PV_A"
let long-coord item 0 coord-tuple
let lat-coord item 1 coord-tuple
create-turtles 1 [ set pv1 pv setxy long-coord lat-coord ]
]
end
其中shapefile是要导入的数据库。而CC_PV_A是shapefile中声明的布尔变量,以pv1的形式赋值给海龟(pv作为中间变量)。
希望对大家有所帮助!
在制作扩展名为gis的NetLogo模型的过程中,一直卡在想根据shapefile位置信息制作海龟。如何在 shapefile 中包含的位置创建海龟并确保它们的属性也包含在 shapefile 中?
到目前为止,我设法在 R 中制作了一个数据集并将其转换为 shapefile 并将其导入到 NetLogo 中。使用提供的代码,我可以在地图上绘制点。
但我想在 shapefile 数据集中包含的每个位置创建代理。我在互联网上搜索过,但找不到。还有我看Netlogo的使用手册,也做不到。
并且在 shapefile 数据集中存在一个额外的特征,必须将其分配给每个代理,因为我想为每个位置创建一个家庭(代理)并根据该特征为其分配颜色。
shapefile包含一个ID号,一个布尔变量和坐标
1 16823 0 c(1.7474251, 4.9600897)
2 16873 0 c(1.3272039, 5.1185999)
3 16874 1 c(1.327054, 5.1162204)
4 16875 0 c(1.3270068, 5.115111)
5 16876 1 c(1.3268986, 5.1130956)
基于这段代码我可以实现如下代码:
set-patch-size 6.5
set dataset gis:load-dataset "PlotLocations_HARV.shp"
gis:set-world-envelope gis:envelope-of dataset
gis:set-drawing-color white
gis:draw dataset 1
在地图上画点,但是我想在点上萌代理,留着ID号。以及每个代理的布尔变量。
与此同时,在你们和其他资源的帮助下,我已经通过以下代码成功获得了我想要的东西:
to setup
ca
resize-world 0 120 0 120
set-patch-size 6.5
set dataset gis:load-dataset "PlotLocations_HARV3.shp"
gis:set-world-envelope gis:envelope-of dataset
gis:set-drawing-color white
gis:draw dataset 1
displayhh
end
to displayhh
foreach gis:feature-list-of dataset [
vector-feature ->
let coord-tuple gis:location-of (first (first (gis:vertex-lists-of vector-feature)))
let pv gis:property-value vector-feature "CC_PV_A"
let long-coord item 0 coord-tuple
let lat-coord item 1 coord-tuple
create-turtles 1 [ set pv1 pv setxy long-coord lat-coord ]
]
end
其中shapefile是要导入的数据库。而CC_PV_A是shapefile中声明的布尔变量,以pv1的形式赋值给海龟(pv作为中间变量)。
希望对大家有所帮助!