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


Python ArcGIS MapTable.query用法及代碼示例

本文簡要介紹 python 語言中 arcgis.mapping.MapTable.query 的用法。

用法:

query(where='1=1', out_fields='*', time_filter=None, return_count_only=False, return_ids_only=False, return_distinct_values=False, group_by_fields_for_statistics=None, statistic_filter=None, result_offset=None, result_record_count=None, object_ids=None, gdb_version=None, order_by_fields=None, out_statistics=None, return_all_records=True, historic_moment=None, sql_format=None, return_exceeded_limit_features=None, as_df=False, range_values=None, parameter_values=None, **kwargs)

返回:

包含與查詢匹配的 Feature 對象的 FeatureSet 或 Panda 的 DataFrame,除非指定了另一種返回類型,例如 count

query 方法根據 sql 語句中的一組條件查詢表層。

Parameter

Description

where

可選字符串。默認值為 1=1。選擇sql語句。

out_fields

可選的要返回的字段名稱列表。字段名稱可以指定為字段名稱列表或逗號分隔的字符串。默認值為“*”,它返回所有字段。

object_ids

可選字符串。要查詢的該圖層或表的對象ID。對象 ID 值應該是逗號分隔的字符串。

time_filter

可選列表。格式為 [<startTime>, <endTime>],使用 datetime.date、datetime.datetime 或時間戳(以毫秒為單位)。

>>> time_filter=[<startTime>, <endTime>]

指定為 datetime.datedatetime.datetimetimestamp 以毫秒為單位。

>>> import datetime as dt

>>> time_filter = [dt.datetime(2022, 1, 1), dt.dateime(2022, 1, 12)]

gdb_version

可選字符串。要查詢的地理數據庫版本。僅當圖層的 isDataVersioned 屬性為 true 時,此參數才適用。如果未指定,則查詢將應用於已發布Map的版本。

return_geometry

可選的布爾值。如果 True ,幾何圖形將與查詢一起返回。默認為 True

return_distinct_values

可選的布爾值。如果是 True ,它會根據 out_fields 中指定的字段返回不同的值。僅當圖層的 supportsAdvancedQueries 屬性為 true 時,此參數才適用。

return_ids_only

可選的布爾值。默認為假。如果 True ,則響應僅包含對象 ID 數組。否則,響應為 FeatureSet

return_count_only

可選的布爾值。如果 True ,則響應僅包括查詢將返回的計數(特征/記錄數)。否則,響應為 FeatureSet 。默認值為 False 。此選項取代 return_ids_only 參數。如果 return_count_only = True ,響應將返回計數和範圍。

order_by_fields

可選字符串。一個或多個用於對結果進行排序的字段名稱。在要排序的每個字段之後,分別使用 ASCDESC 進行升序或降序:

>>> order_by_fields = "STATE_NAME ASC, RACE DESC, GENDER ASC"

group_by_fields_for_statistics

可選字符串。一個或多個字段名稱,用於對結果進行分組以計算統計信息。

>>> group_by_fields_for_statiscits = "STATE_NAME, GENDER"

out_statistics

可選字符串。要計算的一個或多個基於字段的統計數據的定義。

用法
>>> out_statistics = [
                        {
                          "statisticType": "<count | sum | min | max | avg | stddev | var>",
                          "onStatisticField": "Field1",
                          "outStatisticFieldName": "Out_Field_Name1"
                        },{
                           "statisticType": "<count | sum | min | max | avg | stddev | var>",
                           "onStatisticField": "Field2",
                           "outStatisticFieldName": "Out_Field_Name2"
                          }
                    ]

result_offset

可選整數。此選項可用於通過跳過指定數量的記錄並從下一條記錄(即 result_offset + ith )開始來獲取查詢結果。如果 return_all_recordsTrue(即默認情況下),則忽略此選項。

result_record_count

可選整數。此選項可用於獲取最多指定 result_record_count 的查詢結果。當指定 result_offset 但未指定此參數時,Map服務會將其默認為 max_record_count 。此參數的最大值是圖層的maxRecordCount 屬性的值。如果 return_all_recordsTrue(即默認情況下),則忽略此選項。

return_all_records

可選的布爾值。當 True 時,查詢操作將調用該服務,直到返回所有滿足 where_clause 的記錄。注意:如果return_all_records 為真,result_offsetresult_record_count 將被忽略。此外,如果 return_count_onlyreturn_ids_onlyreturn_extent_onlyTrue ,則此參數將被忽略。

historic_moment

可選整數。曆史性時刻查詢。此參數僅在圖層啟用歸檔且 supportsQueryWithHistoricMoment 屬性設置為 true 時適用。此屬性在圖層資源中提供。

注意:

有關圖層屬性的完整說明,請參閱Query (Feature Service/Layer)。使用 properties 檢查圖層屬性。

如果未指定historic_moment,則查詢將應用於當前要素。

sql_format

可選字符串。 sql_format 參數可以是標準 SQL92,也可以使用底層數據存儲的本機 SQL。默認值為 none,這意味著 sql_format 取決於 useStandardizedQuery 參數。值:none | standard | native

return_exceeded_limit_features

可選的布爾值。可選參數,默認為true。當設置為 true 時,即使結果包含 exceededTransferLimit: true 屬性,也會返回特征。

當設置為 false 並使用 resultType = ‘tile’ 進行查詢時,如果結果包括 exceededTransferLimit: True ,則不會返回特征。這允許客戶端在不進行多次調用的情況下找到不再超過傳輸限製的分辨率。

as_df

可選的布爾值。如果 True ,結果將返回為 DataFrame 而不是 FeatureSet

range_values

可選列表。允許您從圖層中過濾指定範圍瞬間或範圍內的要素。

用法
>>> range_values =     [
                        {
                          "name": "range name",
                          "value": <value> or [ <value1>, <value2> ]
                          },
                          {
                            "name": "range name 2",
                            "value": <value> or  [ <value3>, <value4>]
                          }
                        }
                       ]
注意:

在 value-range 情況下不允許使用 - 這意味著無窮大

# all features with values <= 1500

>>> range_values = {"name" : "range name",
                     "value :[None, 1500]}

# all features with values >= 1000

>>> range_values = {"name" : "range name",
                    "value" : [1000, None]}

parameter_values

可選字典。允許您通過將值指定給這些圖層的預先編寫的參數化過濾器數組來過濾要素圖層。如果沒有為請求中的任何參數指定值,則會使用在創作期間分配的默認值。

parameterInfo 允許多個值時,您必須在數組中傳遞它們。

注意:檢查層 properties parameterInfos 以獲取可用的參數化過濾器、它們的默認值和預期的數據類型。

kwargs

可選字典。可以傳遞給查詢函數的可選參數。這將允許用戶傳遞未在函數上明確實現的附加參數。 Query (Map Service/Layer) 中記錄了可能參數的完整列表

例子:

# USAGE EXAMPLE

>>> from arcgis.mapping import MapImageLayer, MapFeatureLayer
>>> from arcgis.gis import GIS

# connect to your GIS and get the web map item
>>> gis = GIS(url, username, password)

>>> map_image_item = gis.content.get("2aaddab96684405880d27f5261125061")
>>> map_feature_layer = MapFeatureLayer.fromitem(item = map_image_item,
                                                 layer_id = 2)
>>> query_count = map_feature_layer.query(where "1=1",
                            text = "Hurricane Data",
                            units = "esriSRUnit_Meter",
                            return_count_only = True,
                            out_statistics = [
                                                {
                                                "statisticType": "count",
                                                "onStatisticField": "Field1",
                                                "outStatisticFieldName": "Out_Field_Name1"
                                                },
                                                {
                                                "statisticType": "avg",
                                                "onStatisticField": "Field2",
                                                "outStatisticFieldName": "Out_Field_Name2"
                                                }
                                            ],
                            range_values= [
                                    {
                                      "name": "range name",
                                      "value": [None, 1500]
                                      },
                                      {
                                        "name": "range name 2",
                                        "value":[1000, None]
                                      }
                                    }
                                ]
                            )
>>> query_count
<149>

相關用法


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