本文介绍基于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. 依图在实时音视频中语音处理的挑战丨RTC Dev Meetup

    前言 「语音处理」是实时互动领域中非常重要的一个场景,在声网发起的「RTC Dev Meetup丨语音处理在实时互动领域的技术实践和应用」 活动中,来自百度.寰宇科技和依图的技术专家,围绕该话题进行了 ...

  2. RunnerGo可视化场景管理,还原真实场景

    在进行性能测试时,测试场景的正确配置非常关键.首先,需要根据业务场景和需求,设计出合理的测试场景,再利用相应的工具进行配置,实现自动化的性能测试. 在JMeter中,用户需要自己组织测试场景,或是在同 ...

  3. pip更新一直time out 的解决方法

    python -m pip install -U --force-reinstall pip 或者指定安装的镜像, 这里以安装numpy为例,运行pip install numpy -i http:/ ...

  4. Spring Data Solr 对 Solr 的增删改查实例

    Spring Data Solr 就是为了方便 solr 的开发研制的一个框架,其底层是对 SolrJ(官方 API)的封装 一.环境搭建 第一步:创建 Maven 项目(springdatasolr ...

  5. [Linux]常用命令之【top/uptime/w/vmstat/free】

    1 top 语法:top [-s time] [-d count] [-q] [-u] [-h] [-n number] [-f filename] -s time 设置屏幕刷新的延时,单位为秒,默认 ...

  6. Windows下搭建java环境最新版本jdk运行jar文件

    1:安装JDK(Java Development Kit),链接https://www.oracle.com/java/technologies/downloads/#jdk18-windows下载最 ...

  7. opencv基础

    Python 和 OpenCV 的结合是计算机视觉领域中应用最为广泛的一种方式,它们的结合使得开发者可以快速.高效地完成各种视觉任务.本文将介绍 Python 和 OpenCV 的基础使用,包括安装. ...

  8. 一个基于Java线程池管理的开源框架Hippo4j实践

    @ 目录 概述 定义 线程池痛点 功能 框架概览 架构 部署 Docker安装 二进制安装 运行模式 依赖配置中心 接入流程 个性化配置 线程池监控 无中间件依赖 接入流程 服务端配置 三方框架线程池 ...

  9. 基于Java实现数据脱敏

    用法 Jdk版本 大于等于1.8 maven依赖 <dependency> <groupId>red.zyc</groupId> <artifactId> ...

  10. 天梯赛L1-027 出租

    一.问题描述 下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破.其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index ...