当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。