本文介绍基于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,因此其所生成的点看起来依然是密密麻麻的。

  清楚了以上规则,就可以更好地进行随机点自动生成的操作了。

ArcGIS如何自动获得随机采样点?的更多相关文章

  1. Python中的随机采样和概率分布(二)

    在上一篇博文<Python中的随机采样和概率分布(一)>(链接:https://www.cnblogs.com/orion-orion/p/15647408.html)中,我们介绍了Pyt ...

  2. 关于乱序(shuffle)与随机采样(sample)的一点探究

    最近一个月的时间,基本上都在加班加点的写业务,在写代码的时候,也遇到了一个有趣的问题,值得记录一下. 简单来说,需求是从一个字典(python dict)中随机选出K个满足条件的key.代码如下(py ...

  3. 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断

    http://blog.csdn.net/pipisorry/article/details/51539739 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样来采样截断多维高斯分布的参数(已知一 ...

  4. 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现文档分类

    http://blog.csdn.net/pipisorry/article/details/51525308 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样进行文档分类(聚类),当然更复杂的实 ...

  5. Pandas排列和随机采样

    随机重排序 import pandas as pd import numpy as np from pandas import Series df = pd.DataFrame(np.arange(5 ...

  6. hive随机采样

    hive> select * from account limit 10;OKaccount.accountname     account.accid   account.platid  ac ...

  7. 使用 numpy.random.choice随机采样

    使用 numpy.random.choice随机采样: 说明: numpy.random.choice(a, size=None, replace=True, p=None) 示例: >> ...

  8. 利用shuf对数据记录进行随机采样

    最近在用SVM为分类器做实验,但是发现数据量太大(2000k条记录)但是训练时间过长...让我足足等了1天的啊!有人指导说可以先进行一下随机采样,再训练,这样对训练结果不会有太大影响(这个待考证).所 ...

  9. Pandas随机采样

    实现对DataFrame对象随机采样 pandas是基于numpy建立起来的,所以numpy大部分函数可作用于DataFrame和Series数据结构. numpy.random.permutatio ...

  10. 《动手学深度学习》系列笔记 —— 语言模型(n元语法、随机采样、连续采样)

    目录 1. 语言模型 2. n元语法 3. 语言模型数据集 4. 时序数据的采样 4.1 随机采样 4.2 相邻采样 一段自然语言文本可以看作是一个离散时间序列,给定一个长度为\(T\)的词的序列\( ...

随机推荐

  1. vTaskList() 介绍

    vTaskList() 使用注意:使用 vTaskList() 前需使能: make menuconfig -> Component config -> FreeRTOS -> En ...

  2. 初识Node和内置模块

    初识Node与内置模块 概述:了解Node.js,熟悉内置模块:fs模块.path模块.http模块 初识Node.js 浏览器中的JavaScript运行环境 运行环境是指代码正常运行所需的必要环境 ...

  3. 从开源模型、框架到自研,声网 Web 端虚拟背景算法正式发布

    根据研究发现,在平均 38 分钟的视频会议里面,大概会有 13 分钟左右的时间用于处理和干扰相关的事情.同时研究也表明在参加在线会议的时候,人们更加倾向于语音会议,其中一个关键原因就是大家不希望个人隐 ...

  4. 疯一样的向自己发问 - 剖析lsm 索引原理

    疯一样的向自己发问 - 剖析lsm 索引原理 lsm简析 lsm 更像是一种设计索引的思想.它把数据分为两个部分,一部分放在内存里,一部分是存放在磁盘上,内存里面的数据检索方式可以利用红黑树,跳表这种 ...

  5. Centos 7安装ansible自动化运维工具

    1.介绍:     ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.SaltStack.chef.func)的优点,实现了批量系统配置.批量程序部署.批 ...

  6. springboot邮箱验证功能部署到服务器后报25 timeout的解决方式

    可以写在application.yml中或者 写在配置类中, 如下; 原理就是更改端口,并且配置ssl的相关配置 package com.wfszmg.config; import org.sprin ...

  7. Solr 入门配置

    大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗,并且它们由于沉重的数据库加载而拖垮你的应用的性能.这就是为什么转移负载到一个外部的搜索服务器是一个不错的注意,Apache ...

  8. VS Code多语言笔记本扩展插件 Polyglot Notebooks

    早在2022年12月12日,微软就发布了VS Code的多语言笔记本扩展插件 Polyglot Notebooks,所使用的引擎为. NET Interactive,目前支持包括C#.F#.Power ...

  9. 推荐三款 Mac 上的理财神器 iCompta、Rublik、UctoX

    今天推荐三款理财神器,像个人的话可以使用 iCompta(个人财务管理)一款软件就好了,但有些朋友可能有关注汇率的需求,可以使用 Rublik(汇率动态),还有一些小伙伴可能有自己的公司等原因财务量较 ...

  10. [JavaScript]JS屏蔽浏览器右键菜单/粘贴/复制/剪切/选中 [转载]

    前两天在解决一个项目缺陷时,突发感兴趣,了解一下~ 1 JS事件 document.oncontextmenu // 右键菜单 document.onpaste //粘贴 document.oncop ...