本文介绍基于ArcMap软件,实现在指定区域自动生成随机点的方法。
在GIS应用中,我们时常需要在研究区域内进行地理数据的随机采样;而采样点的位置往往需要在结合实际情况的前提下,用计算机随机生成。这一操作在ArcMap软件中就可以非常方便地进行。
已知现有如下一景栅格图像,我们需要在这一图像对应的位置中,随机生成若干点作为采样点。
另一方面,我们还已知该栅格图像对应的空间范围的面要素矢量图层,如下图所示。其中,由于该栅格图像存在无效值NoData,因此可以看到栅格图像是没有完全遮盖矢量图层的。
接下来,就可以开始随机点的选取。在软件中依次选择“Data Management Tools.tbx”→“Sampling”→“Creat Random Points”。
弹出如下所示的界面。
这个工具的参数有很多,我们逐一介绍。“Output Location”为生成点要素的保存路径,“Output Point Feature Class”为生成点要素的名称;“Constraining Feature Class (optional)”为我们生成随机点的范围——这一项为可选项,如果我们选择了这一项,那么随机点就会在这一项所选的点、线或面矢量要素范围内生成;如果我们不选择这一项,就可以在下一项“Constraining Extent (optional)”中选择我们的栅格图像作为范围。“Number of Points [value or field] (optional)”为生成点的个数,如果我们选中“Long”,那么就直接输入整数即可;如果我们选中“Field”,那么就依据“Constraining Feature Class (optional)”这一项所选的点、线或面矢量要素的属性表中某一个字段作为点的个数;这里还需要注意,如果我们在“Constraining Feature Class (optional)”这一项选中了包含多个要素的要素集,那么“Long”所输入的点的个数其实是该要素集下属每1个要素中所生成的点的个数(这里大家看不明白也没关系,我们在后面会用一些例子来说明)。“Minimum Allowed Distance [value or field] (optional)”表示所生成点之间的最小距离,同样是可以用直接输入距离或者用矢量要素的属性表字段来赋值。最后一个勾选项表示是否将输出的随机点结果作为一个整体的要素——如果不勾选此项,那么输出的随机点要素集中,每1个点就相当于是1个要素;如果勾选此项,那么输出的随机点要素集中,所有点整体相当于是1个要素;如果勾选了这一项,就将激活最后一个输入框,表示如果将多个点整体当作1个要素的话,该要素最多可以含有多少个点。
接下来,我们就通过几个实例来探究一下上述参数的具体含义。
首先,第一个例子,我们就按照上图所示的参数设定运行该工具,得到结果如下所示。
可以看到,我们虽然在“Long”中设定了点的个数是100
,但是实际生成的随机点个数远远不止100
个;这是因为,前面我们也提到:如果在“Constraining Feature Class (optional)”这一项选中了包含多个要素的要素集,那么“Long”所输入的点的个数其实是该要素集下属每1个要素中所生成的点的个数。
在刚刚的例子中,我们“Constraining Feature Class (optional)”这一项选所用的面矢量要素图层如下所示,可以看到其是一个包含有9个省(9个要素)的要素集;那么结合我们前面介绍的,在“Long”中设定了点的个数是100
,实际上是在每1个省份(每1个要素)中生成100
个点,因此最终得到的整体结果是900
个点,从而导致我们的随机点结果看起来就这么密集。
我们将这个9个省的面矢量要素图层和刚刚生成的随机点矢量要素放在一起看,大家就看得更清楚了——每个省都是100
个点,但由于内蒙古地区面积大,因此这里100
个点就看起来比较疏松;而宁夏(下图中红色区域)由于面积小,所以100
个点在这里就显得尤为密集。
接下来,第二个例子,我们按照下图所示的参数设定运行该工具。
其中,我们选择用矢量图层的属性表字段来作为约束每1个行政区(每1个要素集)中生成随机点的个数。这里我们就选择用下图所示的这个字段作为输入字段。
得到的结果如下所示。可以看到,内蒙古的该字段数值为15
,其所生成的点就是15
个;而宁夏该字段的数值为64
,因此其所生成的点看起来依然是密密麻麻的。
清楚了以上规则,就可以更好地进行随机点自动生成的操作了。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
代码如下: .box-container { perspective: 800px; } .box { position: relative; margin: 0 auto; margin-top:80px; width: 150px; height: 150…