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


Python ArcGIS FeatureLayer.query_date_bins用法及代碼示例


本文簡要介紹 python 語言中 arcgis.features.FeatureLayer.query_date_bins 的用法。

用法:

query_date_bins(bin_field, bin_specs, out_statistics, time_filter=None, geometry_filter=None, bin_order=None, where=None, return_centroid=False, in_sr=None, out_sr=None, spatial_rel=None, quantization_params=None, result_offset=None, result_record_count=None, return_exceeded_limit_features=False)

返回:

包含結果特征和字段的字典。

query_date_bins 操作在 FeatureLayer 上執行。此操作返回基於日期字段劃分為 bin 的特征直方圖。響應可以包括每個箱的統計聚合,例如計數或總和,還可以包括點層的聚合幾何形狀(換句話說,質心)。

這些參數定義了容器、返回的聚合信息以及包含的函數。 bin 是使用 bin 參數定義的。 out_statisticsreturn_centroid 參數定義每個 bin 將提供的信息。可以通過提供 time 範圍、where 條件和空間過濾器來指定包含的函數,類似於查詢操作。

bin_specs 參數的內容為定義 bin 邊界提供了靈活性。 bin_specs 參數的 unit 屬性定義每個 bin 的時間寬度,例如一年、季度、月份、天或小時。固定 bin 可以對這些時間寬度使用多個單位。 result_offset 屬性定義該時間單位內的偏移量。例如,如果您的 bin 單位為 day ,並且您希望 bin 邊界從中午到第二天的中午,則偏移量將為 12 小時。

可以使用 time_filterwheregeometry_filter 參數來操作函數。默認情況下,結果將擴展以適合該函數的最早和最晚時間點。 time_filter 參數根據 binField 中使用的字段定義特征的固定起點和終點。 wheregeometry_filter 參數允許對數據添加額外的過濾器。

僅使用時空數據存儲的要素服務支持此操作。此外,服務屬性 supportsQueryDateBins 必須設置為 true。

要在 ArcGIS Enterprise 中的托管要素服務上使用分頁和聚合查詢,圖層上的 supportsPaginationOnAggregatedQueries 屬性必須為 true。使用時空數據存儲的托管要素服務當前不支持聚合查詢的分頁。

Parameter

Description

bin_field

必需的字符串。用於確定每個要素屬於哪個 bin 的日期字段。

bin_specs

必需的字典。說明 bin 特征的字典,例如 bin 的大小及其起始位置。每個 bin 的大小由 numberunit 屬性表示的時間單位數確定。

bin 的起始位置是指定單位中的最早時刻。例如,每年從 1 月 1 日午夜開始。 bin 參數內的偏移量可以提供 bin 起始位置的偏移量。它可以包含正整數或負整數值。

箱子可以采用兩種形式:日曆箱子或固定箱子。日曆箱可以識別 calendar-specific 調整,例如夏令時和閏秒。相比之下,固定 bin 始終是特定的測量單位(例如,一分鍾 60 秒,一天 24 小時),無論 bin 的日期和時間從何處開始。因此,某些 calendar-specific 單位僅支持作為日曆箱。

# Calendar bin

>>> bin_specs= {"calendarBin":
                  {"unit": "year",
                    "timezone": "US/Arizona",
                    "offset": {
                        "number": 5,
                        "unit": "hour"}
                  }
               }

# Fixed bin

>>> bin_specs= {"fixedBin":
                 {
                  "number": 12,
                  "unit": "hour",
                  "offset": {
                    "number": 5,
                    "unit": "hour"}
                 }
               }

out_statistics

所需的字典列表。要計算的一個或多個基於字段的統計數據的定義:

{
 "statisticType": "<count | sum | min | max | avg | stddev | var>",
 "onStatisticField": "Field1",
 "outStatisticFieldName": "Out_Field_Name1"
}

time_filter

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

geometry_filter

filters 中可選。允許根據與另一個幾何體的空間關係來過濾信息。

bin_order

可選字符串。 “ASC” 或“DESC”。確定結果是按升序還是降序返回。默認為升序。

where

可選字符串。用於查詢過濾器的 WHERE 子句。大多數數據源都支持層中字段的 SQL '92 WHERE 子句語法。

return_centroid

可選布爾值。返回與箱中所有要素關聯的幾何質心。如果為 true,則結果包括幾何質心。默認為 false。該參數僅支持點數據。

in_sr

可選整數。輸入幾何體的空間參考的 WKID。

out_sr

可選整數。返回幾何的空間參考的 WKID。

spatial_rel

可選字符串。執行查詢時應用於輸入幾何的空間關係。支持的空間關係包括相交、包含、包絡相交、內部等。默認空間關係是相交 (esriSpatialRelIntersects)。其他選項包括 esriSpatialRelContainsesriSpatialRelCrossesesriSpatialRelEnvelopeIntersectsesriSpatialRelIndexIntersectsesriSpatialRelOverlapsesriSpatialRelTouchesesriSpatialRelWithin

quantization_params

可選字典。用於將幾何體投影到虛擬網格上,可能代表屏幕上的像素。

# upperLeft origin position

{"mode": "view",
 "originPosition": "upperLeft",
 "tolerance": 1.0583354500042335,
 "extent": {
     "type": "extent",
     "xmin": -18341377.47954369,
     "ymin": 2979920.6113554947,
     "xmax": -7546517.393554582,
     "ymax": 11203512.89298139,
     "spatialReference": {
         "wkid": 102100,
         "latestWkid": 3857}
     }
 }

# lowerLeft origin position

{"mode": "view",
 "originPosition": "lowerLeft",
 "tolerance": 1.0583354500042335,
 "extent": {
    "type": "extent",
    "xmin": -18341377.47954369,
    "ymin": 2979920.6113554947,
    "xmax": -7546517.393554582,
    "ymax": 11203512.89298139,
    "spatialReference": {
        "wkid": 102100,
        "latestWkid": 3857}
    }
}

有關此參數格式的詳細信息,請參閱Quantization parameters JSON properties

注意:

僅當圖層的 supportsCoordinateQuantization 屬性為 true 時,此參數才適用。

result_offset

可選的國際。該參數通過跳過指定數量的記錄並從下一條記錄開始獲取查詢結果。默認值為 0。

注意:

僅當圖層的 supportsPagination 屬性為 true 時,此參數才適用。

result_record_count

可選的國際。此參數獲取最多指定值的查詢結果。當指定了 result_offset 但未指定此參數時,Map服務默認使用圖層的 maxRecordCount 屬性。此參數的最大值是 maxRecordCount 屬性的值。為此參數輸入的最小值不能低於 1。

注意:

僅當圖層的 supportsPagination 屬性為 true 時,此參數才適用。

return_exceeded_limit_features

可選布爾值。當設置為 True 時,即使結果包含 "exceededTransferLimit": true 也會返回特征。這允許客戶端找到不再超出傳輸限製的解決方案,而無需進行多次調用。默認值為False

例子:

# Usage Example

>>> flyr_item = gis.content.search("*", "Feature Layer")[0]
>>> flyr = flyr_item.layers[0]

>>> qy_result = flyr.query_date_bins(bin_field="boundary",
                                     bin_specs={"calendarBin":
                                                  {"unit":"day",
                                                   "timezone": "America/Los_Angeles",
                                                   "offset": {"number": 8,
                                                              "unit": "hour"}
                                                  }
                                                },
                                     out_statistics=[{"statisticType": "count",
                                                      "onStatisticField": "objectid",
                                                      "outStatisticFieldName": "item_sold_count"},
                                                     {"statisticType": "avg",
                                                     "onStatisticField": "price",
                                                     "outStatisticFieldName": "avg_daily_revenue "}],
                                     time=[1609516800000, 1612195199999])
>>> qy_result
   {
    "features": [
      {
        "attributes": {
          "boundary": 1609516800000,
          "avg_daily_revenue": 300.40,
          "item_sold_count": 79
        }
      },
      {
        "attributes": {
          "boundary": 1612108800000,
          "avg_daily_revenue": null,
          "item_sold_count": 0
        }
      }
    ],
    "fields": [
      {
        "name": "boundary",
        "type": "esriFieldTypeDate"
      },
      {
        "name": "item_sold_count",
        "alias": "item_sold_count",
        "type": "esriFieldTypeInteger"
      },
      {
        "name": "avg_daily_revenue",
        "alias": "avg_daily_revenue",
        "type": "esriFieldTypeDouble"
      }
    ],
    "exceededTransferLimit": false
  }

相關用法


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