Abychom pomohli odstartovat veřejnou ukázku ArcGIS GeoAnalytics for Microsoft Fabric, máme sérii blogových příspěvků, které zkoumají funkce GeoAnalytics for Fabric. V tomto příspěvku prozkoumáme analytické schopnosti pro zkoumání velkých bodových datových sad za účelem výpočtu trendů a hotspotů pomocí GeoAnalytics for Fabric.

Import GeoAnalytics for Fabric
Začneme připomenutím, jak importovat GeoAnalytics for Fabric a začít s ním pracovat. Pro import GeoAnalytics for Fabric stačí přidat import geoanalytics_fabric do buňky ve vašem notebooku. Pro více informací o povolení knihovny si přečtěte dokumentaci Začínáme. Také jsou k dispozici příklady v dřívějších blogových příspěvcích v naší úvodní sérii.
Data
Pro tento příspěvek budeme pracovat s veřejnými bezpečnostními daty z města Boston, MA z Azure open datasets. Tato datová sada obsahuje souřadnice zeměpisné šířky a délky pro požadavky na veřejné bezpečnostní služby z Bostonu.
# https://learn.microsoft.com/en-us/azure/open-datasets/dataset-boston-safety?tabs=pyspark
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "citydatacontainer"
blob_relative_path = "Safety/Release/city=Boston"
blob_sas_token = r""
# Allow SPARK to read from Blob remotely
wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set(
'fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name),
blob_sas_token)
print('Remote blob path: ' + wasbs_path)
# SPARK read parquet
# use the GeoAnalytics for Fabric ST_Point function to create a geometry
df = spark.read.parquet(wasbs_path)\
.withColumn("geometry", ST.point("longitude", "latitude", 4326))
df.persist().count()
Tato datová sada je poměrně velká - více než 24 milionů záznamů! U velkých datových sad je často obtížné vizuálně identifikovat vzory v datech jen pouhým pohledem na data.

GeoAnalytics for Fabric může usnadnit průzkum těchto vzorů prostřednictvím agregace a dalších analytických technik, které v tomto příspěvku prozkoumáme. Nejenže to usnadňuje vidět vzory ve vašem notebooku, ale agregace dat je často důležitým krokem při přípravě dat pro průzkum v běžných nástrojích business intelligence, jako je Power BI.
Pojďme začít s agregací.
Prostorové seskupování k odhalení vzorů a zjednodušení vizualizace
U bodových datových sad je běžné mít tolik dat, že body na mapě se překrývají a skrývají vzory v rozložení. K tomu dochází, protože body se překrývají natolik, že nelze vizuálně identifikovat hustotu - pokud je celá mapa plně pokryta značkami dat, neexistuje žádný vzor kromě plně pokryté mapy.
Prostorová agregace může být v těchto případech užitečná k usnadnění identifikace obecných prostorových vzorů v bodových datových sadách. Prostorová agregace vám umožňuje spočítat počet bodů, které spadají do diskrétních geografických oblastí (např. čtverce, hexagony, školní obvody, sčítací oblasti atd.) a poté zobrazit počty bodů nebo jiné agregáty atributů do každého z těchto polygonů.
Kromě identifikace prostorových vzorů agregací dat to také pomáhá při vytváření datových sad pro BI nástroje, jako je Power BI , aby bylo snazší vizualizovat data na dashboardech.
Jak jsme viděli na grafu naší datové sady výše, je opravdu příliš mnoho dat na to, abychom jasně viděli vzor. I když přiblížíme docela blízko, stále můžeme mít potíže s viděním vzorů v této husté datové sadě. Takže pojďme prozkoumat, jak může prostorové seskupování a agregace pomoci.

Abychom lépe porozuměli rozložení, použijeme agregaci pomocí Aggregate Points nástroje v GeoAnalytics for Fabric. Aggregate Points shrnuje body do polygonů z jiných datasetů nebo binů (čtvercové, hexagonální nebo H3). Hraniční linie polygonů nebo binů se používají k sesbírání bodů uvnitř každé oblasti a k výpočtu statistik. Výsledek vždy obsahuje počet bodů uvnitř každé oblasti.
Poznámka: analýza s hexagonálními nebo čtvercovými biny vyžaduje, aby vaše vstupní geometrie měla projekční souřadnicový systém. Pro analýzu s H3 biny se očekává, že vaše vstupní geometrie je ve světovém geodetickém systému 1984 (SRID 4326). Více informací o projekcích a souřadnicových systémech naleznete v základním konceptu o Souřadnicové systémy a transformace.
Pokud vaše data nejsou ve vhodném souřadnicovém systému, nástroj Aggregate Points převede váš vstup do požadovaného souřadnicového systému nebo můžete data převést sami pomocí ST_Transform.
Vytváření binů
S tímto základem pojďme vytvořit několik čtvercových binů. Níže uvedený příklad používá Aggregate Points nástroj k rozdělení našich dat do čtvercových prostorových binů o délce strany 0,1 míle.
# bin the data
from geoanalytics_fabric.tools import AggregatePoints
# aggregate points into square bins
result_agg = AggregatePoints() \
.setBins(bin_size=0.1, bin_size_unit="Miles", bin_type="Square") \
.run(df)
Toto vede k novému DataFrame s geometriemi binů a počty prvků uvnitř binu. Můžete také přidat další agregované souhrnné pole při vytváření binů (např. minimální hodnota, maximální hodnota, součet atd.).
Zobrazení výsledků naší agregace ukazuje nový vzor, kde můžeme snadněji vidět a pochopit rozložení našich dat.
Mapy porovnávající původní dataset a data seskupená do čtvercových binů o velikosti 0,1 míle
Při agregaci dat pomocí nástroje Aggregate Points můžete také řezat data podle času místo seskupování všech dat dohromady. To umožňuje snadnější porovnání v čase pro sledování vzorů změn.
Seskupování podle časového kroku vyžaduje povolený čas ve vstupním DataFrame (např. máte sloupec s časovou značkou).
Ve výchozím nastavení je časové řezání automaticky zarovnáno na 1. ledna 1970 a kroky jsou vypočítány od tohoto bodu. Toto lze upravit, pokud chcete specifikovat čas začátku časových kroků (místo výchozího ledna 1, 1970). To se provádí pomocí <\/SPAN>referenčního času<\/EM>. Referenční čas může být datum (např. 1. ledna 2016) nebo čas a datum (např. 1. ledna 2016 v 9:30 ráno). Více podrobností o časovém kroku naleznete v dokumentaci základního konceptu pro <\/SPAN>time stepping<\/A>.<\/P>Zde je příklad vytvoření samostatné sady binů pro každý rok<\/EM> ve vstupních datech. To nám umožní sledovat jednotlivé roky nebo změny v čase (např. absolutní nebo procentuální nárůst \/ pokles za poslední rok). <\/P> <\/P># agregace bodů do čtvercových binů - pro každý 1 rok v datech. Výchozí roční interval začíná 1. ledna
# toto lze upravit parametrem reference_time
result_agg_yearly = AggregatePoints() \
.setBins(bin_size=0.1, bin_size_unit="Miles", bin_type="Square") \
.setTimeStep(interval_duration=1, interval_unit="years") \
.run(df)<\/code><\/pre> <\/P> Výsledkem je, že můžeme sledovat jednotlivé roky a provádět srovnání. Pro určení roku při analýze nebo vykreslování filtrujeme pomocí sloupců step_start<\/FONT> nebo step_end<\/FONT>.<\/P> <\/P># vykreslení výsledků agregace bodů do čtvercových binů pro _jeden_ rok (2013)
result_plot = result_agg_yearly\
.filter(F.year("step_start") == 2013)\
.st.plot(cmap_values="COUNT",
basemap="dark",
cmap="YlGnBu",
vmax=1000,
figsize=(10,10))<\/code><\/pre> <\/P> Zde je příklad dvou let ve výsledku:<\/P>
Porovnání binovaných dat za dva různé roky<\/span><\/span><\/P>Můžeme také použít tyto výsledky k výpočtu změny v čase pro výsledky jako tento:<\/P>
<\/span> <\/P>
Závěr<\/H3>Doufáme, že tento rychlý úvod do zkoumání trendů a horkých míst byl užitečný. Budeme zveřejňovat další obsah, který vám pomůže začít, takže sledujte komunitu pro více! A dejte nám prosím vědět, o jaké typy věcí byste se chtěli dozvědět více!<\/P>