来自:https://pro.arcgis.com/zh-cn/pro-app/tool-reference/appendices/using-the-in-memory-output-workspace.htm

使用 in_memory 工作空间的注意事项

ArcGIS 应用程序、ArcGIS Pro、ArcMap 和 ArcGIS Server 均具有基于内存的工作空间,即 in_memory 工作空间,可向其中写入输出要素类、表以及栅格数据集。还可以使用 in_memory 工作空间向文件、文件地理数据库或企业级地理数据库中写入输出。写入 in_memory 工作空间通常会快很多,但并不总是如此。写入 in_memory 工作空间的数据是临时的,关闭应用程序后数据会丢失,因此 in_memory 工作空间是从模型和 Python 脚本工具中创建的中间数据的理想位置。

要写入 in-memory 工作空间,请指定以 in_memory 开头的输出数据集路径,例如 in_memory/outputParcels。

警告:

in_memory 工作空间不支持地理数据库元素,例如子类型、属性域、制图表达、拓扑、几何网络、网络数据集或要素数据集。

通过 ArcGIS Pro 使用 In_memory 工作空间

ArcGIS Pro 是 64 位多线程应用程序。任何 64 位软件程序都会比 32 位软件应用程序使用更多 RAM,32 位软件应用程序会将每个应用程序的 RAM 限制为 3 GB。每次在地理处理窗格或 Python 窗口中运行一个地理处理工具无法充分利用 in_memory 工作空间;事实上,这样做可能会导致性能损失。因为 ArcGIS Pro 是多线程应用程序,它可以利用多个 CPU 同时执行多个任务。写入 in_memory 工作空间的地理处理操作会将该操作的结果保存在其他线程不可用的特定内存块中。输出必须保存到磁盘(文件夹或地理数据库)中,以使所有线程可对输出进行操作。如果将单个地理处理操作的输出写入 in_memory,则在应用程序中显示输出前,将创建输出并将其复制到地理数据库中。如上所述,in_memory 工作空间仅适用于在模型和脚本内创建中间数据。模型或脚本工具将在单线程中执行,并且可以访问相同的 in_memory 工作空间;一系列链接工具通常比一系列从磁盘读写的工具的执行速度更快。

管理 in_memory 工作空间

如果使用 in_memory 工作空间,则可能需要尽快删除所有中间数据以释放系统内存。可以使用删除工具删除 in_memory 工作空间中的数据。既可删除单个数据集,也可删除整个工作空间以便清除所有工作空间内容。空的 in_memory 工作空间将继续供进一步使用。

通过模型使用 in_memory

创建模型时,可以通过输入和输出参数来连接工具。作为一个工具的输出,并在另一个工具中用作进一步处理的输入的数据通常被称为中间数据。将中间输出写入 in_memory 工作空间可能会减少在 ArcGIS Pro 中使用模型的总执行时间。构建使用 in_memory 工作空间的模型的另一个好处是:如果将其作为 web 工具共享到 ArcGIS Enterprise,则在服务器上执行时,该模型将继续使用 in_memory 工作空间。

作为工具执行模型时,默认情况下会将定义为参数的输出添加到地图。可将这些输出写入 in_memory 工作空间;但是,执行工具时,会将其转换为本地地理数据库中的要素类。您可能希望将模型参数写入 %scratchGDB% 或磁盘上的其他完整路径,而不是在 in_memory 工作空间中创建输出并最终将其转换为要素类,因此转换仅发生一次。

注:

写入 in_memory 时,无法使用添加至显示参数选项。地理处理输出必须写入磁盘或地理数据库,才能显示在地图中。

通过 Python 和 Arcpy 使用 in_memory

通过 Python 脚本工具使用 in_memory 工作空间可以提供与使用模型工具相同的优势。与将输出写入磁盘相比,将中间数据写入 in_memory 工作空间通常会更快。以下示例将针对缓冲区和擦除工具在 in_memory 工作空间中创建中间数据集。融合工具中的 FinalOutput 可在工作空间设置中定义的 Habitat 地理数据库中创建要素类。

在 in_memory 工作空间中创建输出

import arcpy
# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"
# Buffer a Roads layer, writing output to in_memory
arcpy.Buffer_analysis("Roads", "in_memory/Buffers", 1000)
# Erase the buffers from a Vegetation layer
arcpy.Erase_analysis("Vegetation", "in_memory/Buffers", "in_memory/Erased")
# Dissolve the in_memory output of Erase to make a final output
arcpy.Dissolve_management("in_memory/Erased", "FinalOutput")

使用 in_memory 工作空间的注意事项的更多相关文章

  1. 在 Python 中使用 in_memory 工作空间

    在 Python 中使用 in_memory 工作空间 在 Python 脚本中,in_memory 工作空间仅对地理处理工具有效:它不是可以写入任何数据的通用虚拟目录. 您可以按以下代码示例所示使用 ...

  2. 了解有关 in_memory 工作空间的详细信息

    ArcGIS 提供了一个可写入输出要素类和表的内存工作空间.作为将地理处理输出写入磁盘上的某个位置或网络位置的备选方案,可将输出写入内存工作空间中.通常,将数据写入内存工作空间要明显快于写入其他格式( ...

  3. shapefile 输出的地理处理注意事项

    多年来,ESRI 为存储地理信息开发了三种主要数据格式 - coverage 格式.shapefile 格式及地理数据库格式.其中,所开发的 Shapefile 为存储地理及属性信息提供了一种简单的非 ...

  4. shapefile 输出的地理处理注意事项(转载)

    来源:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#//005600000013000000 多年来,Esri 为存储地理信息 ...

  5. MATLAB/Excel-如何将Excel数据导入MATLAB中

    在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.本文在MATLAB 2013a和Office 2013环境下 ...

  6. IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目

    以往的Eclipse.NetBeans等开发工具不同,IDEA的Project相当与Eclipse的Workspace,而Module相当于Project. 下边就给出Eclipse与IDEA的概念的 ...

  7. Ubuntu16.04 部署配置GO语言开发环境 & 注意事项

    1. 安装GO 安装go语言包: $ curl -O https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz   下载完成后 ...

  8. ubuntu16.04 + Kdevelop + ROS开发和创建catkin_ws工作空间

    https://blog.csdn.net/p942005405/article/details/75715288 https://blog.csdn.net/LOVE1055259415/artic ...

  9. jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧

    这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...

随机推荐

  1. Mac命令行提示

    之前看到一个大神的终端主题好炫,所以自己也想弄一个.看了很多中文的教程都不是很靠谱,效果并没有实现.不能说人家的不对,只能说自己水平有限.后来直接去看 github 上的官方教程,因为是官方嘛~所以肯 ...

  2. python学习笔记:安装boost python库以及使用boost.python库封装

    学习是一个累积的过程.在这个过程中,我们不仅要学习新的知识,还需要将以前学到的知识进行回顾总结. 前面讲述了Python使用ctypes直接调用动态库和使用Python的C语言API封装C函数, C+ ...

  3. PAT Basic 1087 有多少不同的值 (20 分)

    当自然数 n 依次取 1.2.3.…….N 时,算式 ⌊ 有多少个不同的值?(注:⌊ 为取整函数,表示不超过 x 的最大自然数,即 x 的整数部分.) 输入格式: 输入给出一个正整数 N(2). 输出 ...

  4. Pycharm中查看内置函数的源码

    方法1.鼠标放在函数上,Ctrl+B,看源码 方法2.将光标移动至要查看的方法处,按住ctrl 键,点击鼠标左键,即可查看该方法的源码.

  5. SSH环境搭建之Hibernate环境搭建篇

    SSH环境搭建之Hibernate环境搭建篇 搭建有两种方式: 1.使用IntelliJ IDEA或者MyEclipse的逆向工程(关系模型 -> 对象模型),我使用的是IntelliJ IDE ...

  6. C++ 内存泄露和内存越界

    内存泄露:分配了内存而没有释放,逐渐耗尽内存资源,导致系统崩溃内存越界: 打个比方 就是你有一个500ml的水瓶,然后你倒在瓶里的水大于500ml 那个多余的就会流出来... 1. 原理分析经常有些新 ...

  7. 从程序员之死看 IT 人士如何摆脱低情商诅咒

    (1) IT公司的创业者苏享茂忽然跳楼自杀了,自杀前,他留下几万字的文字记录.遗书,并且在自己开发的软件界面上,设置了弹出页面,控诉是恶毒前妻逼死了自己. 生命戛然而止,留给亲人痛苦,留给世人震惊. ...

  8. 如何在网页标题栏title加入logo(icon)图标?

    打开某一个网页会在浏览器的标签栏处显示该网页的标题和图标,当网页被添加到收藏夹或者书签中时也会出现网页的图标,怎么在网页title左边显示网页的logo图标呢? 方法一(被动式): 制作一个ico格式 ...

  9. appium自动化 - android

    1. 获取driver appium通过生成driver来识别和操作app的UI元素.生成driver时,需要给出被测设备的相关信息.appium官方上的例子如下: https://github.co ...

  10. 关于topN问题的几种解决方案

    在系统中,我们经常会遇到这样的需求:将大量(比如几十万.甚至上百万)的对象进行排序,然后只需要取出最Top的前N名作为排行榜的数据,这即是一个TopN算法.常见的解决方案有三种: (1)直接使用Lis ...