當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python ArcGIS run_python_script用法及代碼示例

本文簡要介紹 python 語言中 arcgis.geoanalytics.manage_data.run_python_script 的用法。

用法:

arcgis.geoanalytics.manage_data.run_python_script(code, layers=None, gis=None, context=None, future=False, parameters=None, param_as_input=False)

返回:

來自提供的代碼的消息字典。

run_python_script 方法在您的 ArcGIS GeoAnalytics Server 站點上執行 Python 腳本。在腳本中,您可以通過將多個GeoAnalytics 工具鏈接在一起來創建分析管道,而無需將中間結果寫入數據存儲。您還可以在腳本中使用其他 Python 函數,這些函數可以分布在您的 GeoAnalytics 服務器上。

例如,假設您每周都會收到一個包含數十億點特征的新車輛位置數據集。每次收到新數據集時,您都必須執行涉及多個GeoAnalytics 工具的相同工作流,以創建您在組織內共享的信息產品。此工作流創建了幾個大型中間層,它們在您的數據存儲中占用了大量空間。通過在 Python 中編寫此工作流腳本並執行 Run Python Script 任務中的代碼,您可以避免創建這些不必要的中間層,同時簡化創建信息產品的步驟。

當您使用 run_python_script 時,Python 代碼將在您的 GeoAnalytics 服務器上執行。該腳本在隨GeoAnalytics Server 一起安裝的 Python 3.6 環境中運行,所有控製台輸出都作為作業消息返回。某些 Python 模塊可在您的腳本中使用 Spark 2.2.0(為 GeoAnalytics 工具分發分析的計算平台)在您的 GeoAnalytics 服務器中的一台或多台機器的多個內核上執行代碼。

地理分析模塊可用,並允許您在腳本中運行 GeoAnalytics 工具。使用 Run Python Script 時會自動導入此包。

要在 Run Python Script 任務中直接與 Spark 交互,請使用 pyspark 模塊,該模塊會在您運行任務時自動導入。 pyspark 模塊是 Spark 的 Python API,它提供了一組分布式分析工具,用於數據管理、集群、回歸等,可以在 Run Python Script 中調用並在 GeoAnalytics 服務器上運行。

使用 geoanalytics 和 pyspark 包時,大多數函數都會將分析結果作為 Spark DataFrame 返回到內存中。 Spark 數據幀可以寫入數據存儲或在腳本中使用。這允許將多個地理分析和 pyspark 工具鏈接在一起,同時僅將最終結果寫入數據存儲,從而無需創建任何中間結果層。

對於高級用戶,SparkContext 的實例會自動實例化為 sc,並可在腳本中用於與 Spark 交互。這允許跨您的GeoAnalytics 服務器執行自定義分布式分析。

建議您使用集成開發環境 (IDE) 編寫 Python 腳本,並將腳本文本複製到運行 Python 腳本工具中。這使得在運行腳本之前更容易識別語法錯誤和拚寫錯誤。還建議您首先使用一小部分輸入數據運行腳本,以驗證沒有邏輯錯誤或異常。為此,您可以使用說明數據集任務創建示例圖層。

code

必需的字符串。將在GeoAnalytics 服務器上運行的 Python 腳本。這必須是作為字符串的完整腳本。

inputLayers 中提供的圖層可以使用圖層對象在腳本中訪問。要了解更多信息,請參閱Reading and writing layers in pyspark

GeoAnalytics 可以使用 geoanalytics 對象訪問工具,該對象在腳本環境中自動實例化。要了解更多信息,請參閱Using GeoAnalytics Tools in Run Python Script

有關示例腳本的集合,請參閱示例:使用 Run Python Script 任務編寫自定義分析腳本.

layers

可選列表。要操作的 Feature Layers 列表。請參閱特征輸入。

gis

可選的 GIS 將在其上進行分析。

context

可選字典。 run_python_script 工具不使用此參數。

  • To control the output data store, use the “dataStore” option when writing DataFrames.

  • To set the processing or output spatial reference, use the project tool in the geoanalytics package.

  • To filter a layer when converting it to a DataFrame, use the “where” or “fields” option when loading the layer’s URL.

  • To limit the extent of a layer when converting it to a DataFrame, use the “extent” option when loading the layer’s URL.

future

可選布爾值。如果是 True ,將返回一個 future 對象,並且進程不會等待任務完成。默認為 False ,表示等待結果。

parameters

可選字典。將加載到給定代碼中的全局級別變量。變量名稱稱為user_variables。

>>> parameters = {"param1": "example",
                  "param2": 1,
                  "val1": 2.0,
                  "more_params": [False, True, None],
                  "status": 4.0}

僅支持內置類型。

param_as_input

可選布爾值。如果True,,如果方法過去,則將添加user_variable。如果是 False ,則該變量不會被賦予到方法中。

例子:

# Usage Example: Execute calculate_density tool using run_python_script.

def density():
    def code(ss=None):
        import time
        if ss is None:
            ss = user_variables['ss']
        res = geoanalytics.describe_dataset(input_layer=layers[0],
                    extent_output=True,
                    sample_size=ss)
    res.write.format('webgis').save('RunPythonScriptTest_{0}'.format(time.time()))
run_python_script(code=code, layers=[lyr0], parameters={'ss' : 10000})

相關用法


注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 arcgis.geoanalytics.manage_data.run_python_script。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。