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


Python ArcGIS find_existing_locations用法及代碼示例


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

用法:

arcgis.find_existing_locations(input_layers=None, expressions=None, output_name=None, context=None, gis=None, estimate=False, future=False)

返回:

FeatureLayer 如果指定了 output_name,否則為 FeatureCollection

find_existing_locations.png

find_existing_locations 方法選擇輸入圖層中滿足您指定的查詢的要素。查詢由一個或多個表達式組成。有兩種類型的表達式:屬性表達式和空間表達式。屬性表達式的一個示例是地塊必須是空的,這是地塊圖層的一個屬性(其中 STATUS = ‘VACANT’)。空間表達式的一個示例是,地塊還必須位於距河流一定距離內(距河流 0.75 英裏距離內的地塊)。

Parameter

Description

input_layers

所需的要素圖層列表。將在表達式參數中使用的圖層列表。列表中的每一層可以是:

  • 具有可選過濾器以選擇特定要素的要素服務圖層,或

  • 一個特征集合

請參閱特征輸入。

expressions

必需的字典。有兩種類型的表達式,屬性和空間。

示例屬性表達式:

{
“operator”: “and”,
“layer”: 0,
“where”: “STATUS = ‘VACANT’”
}
注意:
  • 運算符可以是 andor

  • 層是input_layers參數中層的索引。

  • where 子句必須用雙引號引起來。

  • 處理文本字段時,值必須用單引號引起來(‘VACANT’)。

  • 日期字段支持除 LIKE 之外的所有查詢。日期是 YYYY:MM:DD hh:mm:ss 格式的字符串。

以下是使用日期字段 ObsDate 的示例:

“where”: “ObsDate >= ‘1998-04-30 13:30:00’ “

=

Equal

>

比...更棒

<

少於

>=

大於或等於

<=

小於或等於

<>

不相等

喜歡'% <字符串>'

百分號 (%) 表示通配符,表示其 place-one 字符、一百個字符或無字符均可接受。此表達式將在美國州名中選擇密西西比州和密蘇裏州:STATE_NAME LIKE ‘Miss%’

<value1> 和 <value2> 之間

如果記錄的值大於或等於 <value1> 且小於或等於 <value2>,則選擇該記錄。例如,此表達式選擇 HHSIZE 值大於或等於 3 且小於或等於 10 的所有記錄:

HHSIZE 介於 3 和 10 之間

以上等價於:

HHSIZE >= 3 AND HHSIZE <= 10 此運算符適用於數字或日期字段。以下是字段 ObsDate 上的日期查詢示例:

ObsDate 在‘1998-04-30 00:00:00’和‘1998-04-30 23:59:59’之間

時間是可選的。

不在 <value1> 和 <value2> 之間

如果記錄的值超出 <value1> 和小於或等於 <value2> 的範圍,則選擇該記錄。例如,此表達式選擇 HHSIZE 值小於 5 且大於 7 的所有記錄。

HHSIZE 不在 5 和 7 之間

以上等價於:

HHSIZE < 5 或 HHSIZE > 7 此運算符適用於數字或日期字段。

注意

您可以使用包含點和線的關係。例如,您有一層街道中心線(線)和一層井蓋(點),並且您想要查找包含井蓋的街道。您可以使用 contains 來查找包含井蓋的街道,但要使一條線包含一個點,該點必須正好在線上(即,在 GIS 術語中,它們相互捕捉)。如果對此有任何疑問,請使用具有合適距離值的 withinDistance 關係。

空間表達示例:

{
“operator”: “and”,
“layer”: 0,
“spatialRel”: “withinDistance”,
“selectingLayer”: 1,
“distance”: 10,
“units”: “miles”
}
注意:
  • 運算符可以是 andor

  • layer 是the input_layers 參數中圖層的索引。表達式的結果就是這一層的特征。

  • spatialRel 是空間關係。有九種空間關係。

  • distance 是用於 withinDistance 和 notWithinDistance 空間關係的距離。

  • 單位是距離的單位。

spatialRel

Description

相交

不相交

intersect

如果圖層中的要素與選擇圖層中要素的任何部分重疊,則圖層中的要素通過相交測試,包括觸摸(要素共享公共點)。

  • intersects-If 層中的特征與選擇層中的特征相交,層中的特征與選擇層中的特征相交的部分包含在輸出中。

  • notintersects-If 層中的特征與選擇層中的特征相交,層中與選擇層中的特征相交的部分從輸出中排除。

距離內

不在距離內

distance

距離內關係使用圖層中要素與選擇圖層中要素之間的直線距離。 withinDistance-The 圖層中位於選擇圖層中要素指定距離內的要素部分包含在輸出中。 notwithinDistance-The 圖層中位於選擇圖層中要素指定距離內的要素部分將從輸出中排除。你可以把這種關係想象成“比”更遠。

包含

不包含

intersect

如果層中的特征完全包圍選擇層中的特征,則層中的特征通過此測試。沒有包含特征的部分;但是,包含的要素可以接觸包含要素(即,沿其邊界共享一個公共點)。

contains-If 層中的特征包含選擇層中的特征,層中的特征包含在輸出中。 notcontains-If layer in a feature contains a feature in selectionLayer,第一層的特征被排除

之內

不在範圍內

within

如果層中的特征完全被選擇層中的特征包圍,則層中的特征通過此測試。整個要素圖層必須在包含要素內;但是,允許這兩個特征接觸(即,沿其邊界共享一個公共點)。

  • within-If 層中的特征完全在選擇層中的特征內,層中的特征包含在輸出中。

  • notwithin-If 層中的特征完全在選擇層中的特征內,層中的特征被排除在輸出之外。

注意:

可以對點和線使用 within 關係,就像使用 contains 關係一樣。例如,您的第一層包含代表沙井蓋的點,並且您想要查找位於街道中心線上的沙井(與停車場或其他非街道特征相反)。您可以使用 within 來查找街道中心線內的檢修孔點,但為了使點包含一條線,該點必須正好在線上(即,在 GIS 術語中,它們相互捕捉)。如果對此有任何疑問,請使用具有合適距離值的 withinDistance 關係。

nearest

nearest

如果第一層中的特征最接近第二層中的特征,則它通過此測試。

  • nearest-If 第一層的特征與第二層的特征最接近,第一層的特征包含在輸出中。

  • distance 是用於 insideDistance 和 notWithinDistance 空間關係的距離。

  • units 是距離單位。

選項列表:[‘米’、‘公裏’、‘英尺’、‘碼’、‘英裏’]

表達式可以是表示組的列表。組中的第一個運算符指示如何將組表達式添加到前一個表達式。僅當您需要從同一圖層創建兩個或多個不同的要素集時,才需要對表達式進行分組。考慮分組的一種方法是,如果不進行分組,則必須多次執行 find_existing_locations 並合並結果。

output_name

可選字符串或 FeatureLayer 。現有要素圖層將導致新圖層附加到要素服務。如果上下文中的 overwrite 為 True,則新層將覆蓋現有層。如果未指示output_name,則創建新的 FeatureCollection

context

可選字典。處理範圍和輸出空間參考等附加設置。對於find_existing_locations,有三個設置。

  • extent - 定義分析區域的邊界框。僅分析input_layer 中與邊界框相交的那些特征。

  • outSR - 輸出要素將投影到 wkid 引用的輸出空間參考中。

  • overwrite - 如果為 True,則 output_name 中的要素層將被新要素層覆蓋。適用於 ArcGIS Online 或 Enterprise 10.9.1+

# Example Usage
context = {"extent": {"xmin": 3164569.408035,
                    "ymin": -9187921.892449,
                    "xmax": 3174104.927313,
                    "ymax": -9175500.875353,
                    "spatialReference":{"wkid":102100,"latestWkid":3857}},
            "outSR": {"wkid": 3857},
            "overwrite": True}

gis

可選,運行此工具的 GIS 。如果未指定,則使用活動 GIS。

estimate

可選,如果為 True,將返回未來對象,並且進程不會等待任務完成。默認為False,表示等待結果。

例子:

#USAGE EXAMPLE: To find busy (where SEGMENT_TY is 1 and where ARTERIAL_C is 1) streets from the existing seattle streets layer.

arterial_streets = find_existing_locations(input_layers=[bike_route_streets],
                                           expressions=[{"operator":"","layer":0,"where":"SEGMENT_TY = 1"},
                                           {"operator":"and","layer":0,"where":"ARTERIAL_C = 1"}],
                                           output_name='ArterialStreets')

相關用法


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