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


Python ArcGIS Country.enrich用法及代碼示例


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

用法:

enrich(study_areas, enrich_variables=None, return_geometry=True, standard_geography_level=None, standard_geography_id_column=None, proximity_type=None, proximity_value=None, proximity_metric=None, output_spatial_reference=None, **kwargs)

返回:

具有豐富數據的 Pandas DataFrame。

Enrich 提供對海量數據集的訪問,該數據集準確說明了某個地理位置的人員身份。描繪 study_areas 進行豐富的最常見方法是使用多邊形描繪區域,但也可以使用點和線。

當提供點或線時,幾何形狀周圍的區域用於豐富。該區域可以使用其他參數來定義,但默認情況下是幾何體周圍一公裏。此外,線幾何形狀僅支持直線距離,但點可以使用可用的交通網絡方法[通常是行駛距離或行駛時間]。

雖然現場分析、商店或設施位置的預測建模已經很流行,但豐富函數提供了對大量數據的訪問,以便對人員及其與周圍社區、文化、經濟甚至自然環境的關係和互動進行分析。簡而言之,豐富就是如何獲取數據進行人文地理分析。

用於豐富的study_areas可以以多種形式提供:可以提供空間啟用的Pandas DataFrame 架或可迭代的。可迭代對象可以由 Geometry 對象實例或標準地理標識符組成。雖然可能會提供其他值,例如字符串地址或 points-of-interest 名稱,但建議在執行豐富之前在工作流程中檢索這些位置。

Parameter

Description

study_areas

包含要豐富的輸入區域的必需列表、字典、 FeatureSet 或 SpatiallyEnabledDataFrame。

enrich_variables

可以使用字符串列表或從 enrich_variables() 屬性返回的 Pandas DataFrame 來指定豐富變量。如果使用字符串列表,則這些值將針對 name、‘enrich_name’ 或 ‘enrich_field_name’ 的 enrich_variables() 數據幀列進行匹配。所有值必須與這些列之一匹配。

return_geometry

布爾值,指示是否需要在輸出中返回幾何圖形。默認為 True

standard_geography_level

如果使用標準地理標識符列表,則必須在此處指定地理級別。該值是在 levels() 屬性中檢索到的 level_name 列。

standard_geography_id_column

如果提供 Pandas DataFrame 作為輸入,並且 DataFrame 包含一列,其中包含您希望用於指定輸入 study_areas 的標準地理標識符,請在此參數中以字符串形式提供列名稱。

proximity_type

如果提供點幾何形狀作為輸入 study_areas,您可以選擇提供用於根據可用出行模式創建點周圍鄰近度的方法。可以使用 travel_modes 屬性發現這些出行模式。有效值來自此返回的 DataFrame 中的 name 列。此外,除了交通網絡出行模式之外,您還可以選擇使用 straight_line ,隻需在幾何體周圍使用直線距離、緩衝區。這是默認設置,也是幾何類型為線時的唯一選項。

proximity_value

這是十進製浮點數或整數形式的標量值,定義用於富集的源幾何體周圍的鄰近區域的大小。例如,如果需要五分鍾的行駛時間,則該值將為 5

proximity_metric

這是定義用於定義用於濃縮的幾何形狀周圍區域的區域的測量單位。如果有興趣獲得五分鍾的車程,該值將為minutes

output_spatial_reference

默認輸出為 WGS84 (WKID 4326)。如果需要不同的輸出空間參考,請在此處以 WKID 或 SpatialReference 對象實例的形式提供。

hierarchy

要使用的數據集的層次結構。該層次結構是“ID”,可以在hierarchies 屬性中找到。如果未提供,將使用默認層次結構。

以下是使用 ArcGIS Pro 與 Business Analyst 和本地安裝的美國數據包來豐富一些關鍵變量的示例。

from arcgis.gis import GIS
from arcgis.geoenrichment import Country

# create country object instance to use local ArcGIS Pro + Business Analyst + USA data pack
usa = Country('usa', gis=GIS('pro'))

# select current year key enrichment variables for analysis
ev_df = usa.enrich_variables
kv_df = ev_df[
    (ev_df.data_collection.str.lower().str.contains('key'))  # key data collection
    & (ev_df.alias.str.lower().str.endswith('cy'))           # current year
]

# get data from ArcGIS Online to enrich as Spatially Enabled DataFrame
itm_id = '15d227c6da8d4b7baf713709ba3693ce'  # USA federal district court polygons
gis = GIS()  # anonymous connection to ArcGIS Online
aoi_df = gis.content.get(itm_id).layers[0].query().sdf

# enrich with variables selected above
enrich_df = usa.enrich(aoi_df, enrich_variables=kv_df)

接下來,我們可以使用 ArcGIS Online 而不是 ArcGIS Pro 來執行類似的工作流程,方法是創建幾個點幾何形狀並在位置周圍使用 five-minute 行駛時間。

import os

from arcgis.gis import GIS
from arcgis.geoenrichment import Country
from arcgis.geometry import Geometry
from dotenv import find_dotenv, load_dotenv

# load environment settings from .env file
load_dotenv(find_dotenv())

# create connection to ArcGIS Online organization using values saved in .env file
gis_agol = GIS(
    url=os.getenv('ESRI_GIS_URL'),
    username=os.getenv('ESRI_GIS_USERNAME'),
    password=os.getenv('ESRI_GIS_PASSWORD')
)

# create a country object instance
usa = Country('usa', gis=gis_agol)

# get just key variables for the current year
ev_df = usa.enrich_variables
kv_df = ev_df[
    (ev_df.data_collection.str.lower().str.contains('key'))  # key data collection
    & (ev_df.alias.str.lower().str.endswith('cy'))           # current year
]

# create a couple of point geometries on the fly for the example
coord_lst = [
    (-122.9074835, 47.0450249),  # Bayview Grocery Store
    (-122.8749600, 47.0464031)   # Ralph's Thriftway Grocery Store
]
geom_lst = [Geometry({'x': pt[0], 'y': pt[1], 'spatialReference': {'wkid': 4326}}) for pt in coord_lst]

# enrich the geometries and get a spatially enabled dataframe
enrich_df = usa.enrich(
    study_areas=geom_lst,
    enrich_variables=kv_df,
    proximity_type='driving_time',
    proximity_value=5,
    proxmity_metric='minutes'
)

最後,我們還可以使用標準地理標識符來指定study_areas。

import os

from arcgis.gis import GIS
from arcgis.geoenrichment import Country
from arcgis.geometry import Geometry
from dotenv import find_dotenv, load_dotenv

# load environment settings from .env file
load_dotenv(find_dotenv())

# create connection to ArcGIS Online organization using values saved in .env file
gis_agol = GIS(
    url=os.getenv('ESRI_GIS_URL'),
    username=os.getenv('ESRI_GIS_USERNAME'),
    password=os.getenv('ESRI_GIS_PASSWORD')
)

# create a country object instance
usa = Country('usa', gis=gis_agol)

# get just key variables for the current year
ev_df = usa.enrich_variables
kv_df = ev_df[
    (ev_df.data_collection.str.lower().str.contains('key'))  # key data collection
    & (ev_df.alias.str.lower().str.endswith('cy'))           # current year
]

# the block group ids for Olympia, WA
id_lst = ['530670101001', '530670101002', '530670101003', '530670101004', '530670102001', '530670102002',
          '530670102003', '530670103001', '530670103002', '530670103003', '530670103004', '530670104001',
          '530670104002', '530670104003', '530670105101', '530670105201', '530670105202', '530670105203',
          '530670105204', '530670106001', '530670106002', '530670106003', '530670106004', '530670106005',
          '530670107001', '530670107002', '530670107003', '530670108001', '530670108002', '530670109101',
          '530670109102', '530670109103', '530670110001', '530670111002', '530670112001', '530670113001',
          '530670116211', '530670117101', '530670117102', '530670117103', '530670120002', '530670122121',
          '530670122122', '530670122124', '530670111001', '530670121004']

# enrich the geometries and get a spatially enabled dataframe
enrich_df = usa.enrich(
    study_areas=geom_lst,
    enrich_variables=kv_df,
    standard_geography_level='block_groups'
)

相關用法


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