来自: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. Django中间件理解

    一.中间件 https://www.cnblogs.com/maple-shaw/articles/9333824.html 中间件:是一个类处理django的请求和响应,本质上就是一个类,在类里面定 ...

  2. BRD——>MRD——>PRD,产品经理三大文档概念详解及前后逻辑

    转自:https://blog.csdn.net/neikutaixiao/article/details/40819445 商业需求文档Business Requirement DocumentBR ...

  3. Centos 6.5 版本的下载教程

    1.CentOS下载CentOS是免费版,推荐在官网上直接下载,网址:https://www.centos.org/download/ 2.选择版本推荐6.5 3.选择isos 4.根据系统电脑的配置 ...

  4. 【异常】‘for’ loop initial declarations are only allowed in C99 mode

    1 Python版本导致的异常 /root/Python-3.5.7/Modules/_pickle.c: In function ‘PyMemoTable_Copy’: /root/Python-3 ...

  5. golang struct的使用

    Go struct tag深入理解 喜欢本站的朋友可以收藏本站,或者加入QQ群:172816590,我们大家一起来交流技术! 欢迎来到梁钟霖个人博客网站.本个人博客网站提供最新的站长新闻,各种互联网资 ...

  6. solr不是自启动,添加code失败

    原文:https://blog.csdn.net/qq_30242987/article/details/100044964 我主要的问题是  conf要复制  configests/sample_t ...

  7. Windows 7 [Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]

    如下所示,我最近也遇到这个类似的错误(Win7 + IIS7.0),最后如下图解决 系统用户权限问题, 通过管理员运行 即可正常使用.

  8. oracle split函数

    PL/SQL 中没有split函数,需要自己写. 代码: ); --创建一个 type ,如果为了使split函数具有通用性,请将其size 设大些. --创建function create or r ...

  9. HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2

    /* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意: ...

  10. kubernetes1.11.1 部署prometheus

    部署前提:已经安装好了kubernetes的集群,版本是1.11.1,是用kubeadm部署的. 2台虚拟机:master:172.17.1.36      node1:172.17.1.40 pro ...