Gis netlogo:如何对自己的属性进行分组

Gis netlogo:如何对自己的属性进行分组,gis,netlogo,Gis,Netlogo,我想知道你可以用什么方式把补丁拥有的变量分组,然后在它们上面循环?我使用的是NetLogo 5.3.1 具体而言,我正在这样做: patches-own[some-variable other-variables] to setup gis:apply-coverage dataset-1 "some-variable" some-variable ;this line above for 1000 other-variables end 我想这样做: gl

我想知道你可以用什么方式把补丁拥有的变量分组,然后在它们上面循环?我使用的是NetLogo 5.3.1

具体而言,我正在这样做:

patches-own[some-variable other-variables]
to setup
    gis:apply-coverage dataset-1 "some-variable" some-variable 
             ;this line above for 1000 other-variables
end
我想这样做:

globals [group-variables]
patches-own [some-variable other-variables]
to setup
    set group-variables (list some-variable other-variables)
    foreach group-variables[
        gis:apply-coverage dataset-1 "?" ?
        ]
end
但这似乎是不可能的:安装程序现在只是海龟/补丁。我还得到了这样一个信息:gis:apply coverage期望得到一些东西,但却得到了任何东西

我还可以用什么方法来组合这些变量,而不会减慢程序的速度


我看过列表、数组和表格,但问题是gis:应用覆盖率需要一个补丁变量。这不包括数组和表。列表需要在补丁上下文中定义,但需要在观察者上下文中调用gis:apply-coverage。readfromstring变量不支持读取变量并生成所有内容的字符串,然后对其调用run不会提高执行速度

我想主要的问题是你用的是什么?变量作为字符串(“?”)。这无法工作,因为它没有引用当前的foreach循环变量。 也许有更好的解决方案,但我通过使用run原语实现了它,它允许从字符串和变量的组合中创建命令。 下面是一个简短的示例,使用GIS代码示例中的国家数据集:

extensions[gis]
globals [group-vars shp]
patches-own [CNTRY_NAME POP_CNTRY]

to load-multiple-vars-from-shp

ca
; Load Data
set shp gis:load-dataset "C:/Program Files/NetLogo 5.3.1/app/models/Code Examples/GIS/data/countries.shp"
; Print properties
print gis:property-names shp
; Select two properties to write to patch-variable
set group-vars (list "CNTRY_NAME" "POP_CNTRY")
; Loop over group-vars
foreach group-vars
[
  ; Apply coverage of current variable
  run (word "gis:apply-coverage shp \"" ? "\"" ?)
]
; Visualize patch variables to check if everything is working
ask patches
[
  set plabel substring (word CNTRY_NAME) 0 1
  set pcolor POP_CNTRY
]

end

我想主要的问题是你用的是什么?变量作为字符串(“?”)。这无法工作,因为它没有引用当前的foreach循环变量。 也许有更好的解决方案,但我通过使用run原语实现了它,它允许从字符串和变量的组合中创建命令。 下面是一个简短的示例,使用GIS代码示例中的国家数据集:

extensions[gis]
globals [group-vars shp]
patches-own [CNTRY_NAME POP_CNTRY]

to load-multiple-vars-from-shp

ca
; Load Data
set shp gis:load-dataset "C:/Program Files/NetLogo 5.3.1/app/models/Code Examples/GIS/data/countries.shp"
; Print properties
print gis:property-names shp
; Select two properties to write to patch-variable
set group-vars (list "CNTRY_NAME" "POP_CNTRY")
; Loop over group-vars
foreach group-vars
[
  ; Apply coverage of current variable
  run (word "gis:apply-coverage shp \"" ? "\"" ?)
]
; Visualize patch variables to check if everything is working
ask patches
[
  set plabel substring (word CNTRY_NAME) 0 1
  set pcolor POP_CNTRY
]

end

这似乎是超流,有没有更快的解决方案?这似乎是超流,有没有更快的解决方案?