GIS 矢量在 Netlogo 和补丁兼容性中的使用

GIS Vector use in Netlogo and patches compatibility

使用 Netlogo 中的 gis extension 我打算将一个大矢量上传到 NETLOGO 中。

apply-coverage 命令和以下代码行之间,我选择了以下代码,因为它们速度更快并且导致相同的结果(我使用 export-world 命令进行了检查。 以下几行代码的灵感来自此来源 http://geospatialcss.blogspot.com/2015/10/tutorial-on-using-and-exporting-gis.html 和 Brooks (2019) 的“基于代理的建模和 GIS”一书。

想法是将每个多边形的属性应用到每个补丁的质心,以便使用。

  let n 1
  foreach gis:feature-list-of Parcels_2015 [
    polygone ->
    let center-point gis:location-of gis:centroid-of polygone
    let x-coordinate item 0 center-point
    let y-coordinate item 1 center-point

    ask patch x-coordinate y-coordinate [
     
      ;; set an ID to the patch
      set ID_temp n
      set ID_Parcel gis:property-value polygone "ID_PRCL"
      ;; and others....    
      ;; we set the variables of each patch
      set LU gis:property-value polygone "LUCTGRY"
      ;; and other variable....
      
      ;;and color the map depending on the LUCTGRY
      if gis:property-value polygone "LUCTGRY" = "Extensive grassland"  [
      set pcolor green
      ]
      set n n + 1
    ]
  ]

然而我意识到补丁仍然是“方形”的,并不代表“真实世界”。

后来我增加了Netlogo地图,这样两个补丁就不会在同一个包裹上了,见下图:

但是,在我的代码的下一行(尚未编写)中,目标是与邻近的补丁一起工作。如果你看图片,识别一个包裹(彩色)的补丁是一个没有代表任何东西的补丁的邻居。

那么最后,是否真的有可能用“连续”矢量 GIS 数据填充一个 netlogo 世界?

是的,但不是,但也许吧。这取决于您实际需要做什么。 GIS 中的栅格数据集是这种 'problem' 的一个很好的例子 - 它们是 real-world 数据的离散表示,但通常分解为单元格/网格。例如,海拔有时以 20-30 米的单元格表示 - 这并不意味着整个单元格的海拔高度相同,但我们如何在数字世界中表示现实世界 'analog' 数据存在限制。 NetLogo 'world' 类似 - 您可以通过更改补丁大小来修改您的世界的分辨率,以最好地让您探索手头的问题。如果您使用非常小的补丁大小(相对于您的空间数据集)并使用类似 gis:apply-coverage 的东西,您可能会得到一个像样的 近似值 的连续世界。您可以查看名为“GIS 梯度示例”的模型库示例,以获取在网格系统中表示的 'continuous' real-world 数据示例。

或者,您可能会发现 gis:have-relationship? or the gis:relationship-of 函数可以让您探索不同地块之间的关联方式,并可能以这种方式处理事物。但是,如果这些选项中的任何一个可行,这实际上取决于您的需求/目标。