python in memory_使用 in_memory 工作空间的注意事项
來自: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 工作空間,則可能需要盡快刪除所有中間數據以釋放系統內存??梢允褂脛h除工具刪除 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")
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python in memory_使用 in_memory 工作空间的注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聚合项目访问后台接口失败_【2020】S
- 下一篇: 搜狗手机浏览器_搜狗推广开户费多少钱?【