Questions tagged «cellular-automata»


2
从1个像元/像素的种子在栅格中创建随机形状的像元细胞?
就像我的标题所说,我希望从栅格中的种子“生长”成簇的细胞。我的基本栅格充满1和0,1代表陆地,0代表海洋/北美地区。我希望从1开始选择60个随机像素/单元作为我的种子,然后随机生长一个预定义编号的连接簇。该种子的像素/单元数限制。我听说该技术可以称为“散布染料”,但运气不好。种子单元将被设置为2,然后从周围的1中选择的下一个单元也将被转换为2。这样2将无法在将来进行转换。 这个线程确实有所帮助,因为我也很愿意在R中做到这一点,因为我熟悉在R中读取和操作GIS数据。但是,我需要的是一组规则,以随机选择围绕现有簇的像素。 如果有人在GIS环境中完成了这种更基本的细胞自动机形式,那么我将不胜感激。 例: 我的目标是250个单元格。我随机选择一个值为1的单元。将其转换为值2。然后,将= 1的种子单元的邻居之一转换为2。然后,将任一单元的邻居之一转换为值2。选择具有2值的值并将其变为2。这将继续进行,直到达到编号250个单元的连续形状为止。 编辑:进一步的问题 基于whuber的出色回答,我对代码有一些疑问: 我如何才能将已成长的单元格的值分配给一个“ 2”,而不是代表它们创建顺序的变量值? 我需要在“ 1”区域内创建60个单元格块。我已经设计出一些方法来选择随机的起始位置,但是很难使用expand您编写的函数使其在一个循环中全部正常工作。您能建议一种创建60个彼此不冲突且包含在同一最终矩阵中的块的方法吗? 编辑:问题的进一步解释 每个群集单元代表一个定义大小的保护区域,例如250个单元。每个区域都必须开始并成长为值为1的像元,因为它代表陆地,而要避免值为0的像元,因为这代表海洋。我需要在每次迭代中对60个受保护区域进行迭代1000次以创建一个空模型,以显示这些区域的偶然分布。因此,在1000次迭代中,所有60个区域中的单元总数必须相同,因此具有可比性。因此,如果区域接触就可以了,但是如果发生碰撞,则理想情况下,团块会朝另一个可用方向增长,直到达到250个目标为止。 一旦创建了这1000个保护区网络中的每一个,它们都将被用作掩盖其他栅格数据(例如生物多样性措施)的遮罩,以查看(a)它们是否与特定物种范围相交以及(b)特定物种占这些随机网络的百分比保护区的覆盖范围。 到目前为止,感谢@whuber的帮助,我不希望您花费更多的时间来帮助我,但我想我会根据您的要求尝试澄清我的处境。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.