Scénáře geofencingu a geoprostorové agregace s využitím Azure Stream Analytics

Díky integrovaným geoprostorovým funkcím můžete pomocí Azure Stream Analytics vytvářet aplikace pro scénáře, jako je správa vozového parku, sdílení jízd, propojená auta a sledování majetku.

Geofencing (monitorování geografických zón)

Azure Stream Analytics podporuje výpočty geofencingu v reálném čase s nízkou latencí v cloudu a v IoT Edge modulu runtime.

Scénář monitorování geografických fencingu

Výrobní společnost potřebuje sledovat majetek na svých budovách. Všechna zařízení jsou vybavena GPS a chtějí dostávat oznámení, pokud zařízení opustí určitou oblast.

Referenční data použitá v tomto příkladu mají informace o geografické zóny pro budovy a zařízení, která jsou povolená v každé z budov. Mějte na paměti, že referenční data můžou být statická nebo pomalu se měnící. Pro tento scénář se používají statická referenční data. Stream dat nepřetržitě vysílá ID zařízení a jeho aktuální pozici.

Definování geografických zóny v referenčních datech

Geografickoufence lze definovat pomocí objektu GeoJSON. Pro úlohy s kompatibilitou verze 1.2 a vyšší je možné geografické zóny definovat také pomocí WKT (Well Known Text) jako NVARCHAR(MAX). WKT je standard OGC (Open Geospatial Consortium), který se používá k reprezentaci prostorových dat v textovém formátu.

Integrované geoprostorové funkce můžou pomocí definovaných geografických monitorů zjistit, jestli se prvek nachází v určitém mnohoúhelníku geografické zóny nebo z tohoto mnohoúhelníku.

Následující tabulka obsahuje příklad referenčních dat geografické zóny, která by mohla být uložena ve službě Azure Blob Storage nebo v Azure SQL tabulce. Každá lokalita je reprezentována geoprostorovým mnohoúhelníkem a každé zařízení je přidruženo k povolenému ID webu.

ID webu NázevLokality Geografická zóna AllowedDeviceID
1 "Redmond Building 41" "POLYGON((-122.1337357922017 47.63782998329432,-122.13373042778369 47.637634793257305,-122.13346757130023 47.637642022530954,-122.13348902897235 47.637508280806806,-122.13361777500506 47.637508280806806,-122.13361241058703 47.63732393354484,-122.13265754417773 47.63730947490855,-122.13266290859576 47.637519124743164,-122.13302232460376 47.637515510097955,-122.13301696018573 47.63764925180358,-122.13272728161212 47.63764925180358,-122.13274873928424 47.63784082716388,-122.13373579220172 47.63782998329432))" "B"
2 "Redmond Building 40" "POLYGON((-122.1336154507967 47.6366745947009,-122.13361008637867 47.636483015064535,-122.13349206918201 47.636479400347675,-122.13349743360004 47.63636372927573,-122.13372810357532 47.63636372927573,-122.13373346799335 47.63617576323771,-122.13263912671528 47.63616491902258,-122.13264985555134 47.63635649982525,-122.13304682248554 47.636367344000604,-122.13305218690357 47.63650831807564,-122.13276250832996 47.636497473929516,-122.13277323716602 47.63668543881025,-122.1336154507967 47.6366745947009))" "A"
3 "Redmond Building 22" "POLYGON((-122.13611660248233 47.63758544698554,-122.13635263687564 47.6374083293018,-122.13622389084293 47.63733603619712,-122.13622389084293 47.63717699101473,-122.13581619507266 122.1358161950726647.63692757827657,-122.13559625393344 47.637046862778135,-122.13569281345798 47.637144458985965,-122.13570890671207 47.637314348246214,-122.13611660248233 47.63758544698554)" "C"

Generování upozornění s využitím geografické zóny

Zařízení můžou každou minutu generovat své ID a polohu prostřednictvím streamu s názvem DeviceStreamInput. Následující tabulka obsahuje vstupní proud.

Deviceid Geografická umístění
"A" "POINT(-122,13292341559497 47,636318374032726)"
"B" "POINT(-122.13338475554553 47.63743531308874)"
"C" "POINT(-122,13354001095752 47,63627622505007)"

Můžete napsat dotaz, který spojí datový proud zařízení s referenčními daty geografické zóny a vygeneruje upozornění pokaždé, když se zařízení nachází mimo povolenou budovu.

SELECT DeviceStreamInput.DeviceID, SiteReferenceInput.SiteID, SiteReferenceInput.SiteName 
INTO Output
FROM DeviceStreamInput 
JOIN SiteReferenceInput
ON st_within(DeviceStreamInput.GeoPosition, SiteReferenceInput.Geofence) = 0
WHERE DeviceStreamInput.DeviceID = SiteReferenceInput.AllowedDeviceID

Následující obrázek znázorňuje geografické zóny. Uvidíte, kde jsou zařízení v souladu se vstupem datových proudů.

Vytváření geografických zóny

Zařízení "C" se nachází uvnitř budovy s ID 2, což není podle referenčních dat povoleno. Toto zařízení by se mělo nacházet uvnitř budovy s ID 3. Spuštěním této úlohy se vygeneruje upozornění na toto konkrétní porušení.

Web s více povolenými zařízeními

Pokud lokalita umožňuje více zařízení, je možné v souboru definovat pole ID zařízení a pomocí AllowedDeviceID funkce WHERE User-Defined v klauzuli ověřit, jestli ID streamovaných zařízení odpovídá jakémukoli ID zařízení v tomto seznamu. Další informace najdete v kurzu funkce definované uživatelem JavaScriptu pro cloudové úlohy a kurzu funkce definované uživatelem v jazyce C# pro hraniční úlohy.

Geoprostorová agregace

Azure Stream Analytics podporuje geoprostorovou agregaci v reálném čase s nízkou latencí v cloudu a modulu runtime IoT Edge.

Scénář geoprostorové agregace

Společnost zabývající se kabinami chce vytvořit aplikaci v reálném čase, která řidiče taxíků při cestě do oblastí měst, po kterých v současné době dochází k vyšší poptávce.

Společnost ukládá logické oblasti města jako referenční data. Každá oblast je definovaná jako RegionID( ID oblasti), RegionName (Název oblasti) a Geofence (Geografická zóna).

Definování geografických zóny

Následující tabulka obsahuje příklad referenčních dat geografické zóny, která by mohla být uložena ve službě Azure Blob Storage nebo v Azure SQL tabulce. Každá oblast je reprezentována geoprostorovým mnohoúhelníkem, který slouží ke korelaci s požadavky pocházejícími ze streamovaných dat.

Tyto mnohoúhelníky jsou pouze referenční a nepředstavují skutečné logické nebo fyzické oddělení města.

ID oblasti Regionname Geografická zóna
1 "SoHo" "POLYGON((-74.00279525078275 40.72833625216264,-74.005477459797 65 40.721929158663244,-74.00125029839018 40.7189368021899 4,-73,995778591998 40,72521409075776,-73,9972377137039 4 0.72557184584898,-74.00279525078275 40.72833625216264))
2 "Čínská čtvrť" "POLYGON((-73.99712367114876 40.71281582267133,-73.9901070123658 40.71336881907936,-73.99023575839851 40.71452359088633,-73.98976368961189 40.71554823078944,-73.99551434573982 40.717337246783735,-73.99480624255989 40.718491949759304,-73.99652285632942 40.719109951574,-73.99776740131233 40.7168005470334,-73.99903340396736 40.71727219249899,-74.00193018970344 40.71938642421256,-74.00409741458748 40.71688186545551,-74.00051398334358 40.71517415773184,- 74.0004281526551 40.714377212470005,-73.99849696216438 40.713450141693166,-73.99748845157478 40.71405192594819,-73.99712367114876 40.71281582267133))"
3 "Tribeca" "POLYGON((-74.01091641815208 40.72583120006787,-74.013384050445 78 40.71436586362705,-74.01370591552757 40.713617702123415,-74.00862044723533 40.711308107057235,-74.00194711120628 40.7194238654018,-74.01091641815208 40.72583120006787))

Agregace dat v časovém intervalu

Následující tabulka obsahuje streamovaná data "jízd".

UserID Odsad Umístění TripRequestedTime
"A" "POINT(-74.00726861389182 40.71610611981975)" "POINT(-73,9861509591779 40,703107386025835)" "2019-03-12T07:00:00Z"
"B" "POINT(-74.00249841021645 40.723827238895666)" "POINT(-74.01160699942085 40.71378884930115)" "2019-03-12T07:01:00Z"
"C" "POINT(-73,99680120565864 40,716439898624024)" "POINT(-73,98289663412544 40,72582343969828)" "2019-03-12T07:02:00Z"
"D" "POINT(-74,00741090068288 40,71615626755086)" "POINT(-73,97999843120539 40,73477895807408)" "2019-03-12T07:03:00Z"

Následující dotaz spojí stream zařízení s referenčními daty geografické zóny a vypočítá počet požadavků na oblast v časovém intervalu 15 minut každou minutu.

SELECT count(*) as NumberOfRequests, RegionsRefDataInput.RegionName 
FROM UserRequestStreamDataInput
JOIN RegionsRefDataInput 
ON st_within(UserRequestStreamDataInput.FromLocation, RegionsRefDataInput.Geofence) = 1
GROUP BY RegionsRefDataInput.RegionName, hoppingwindow(minute, 15, 1)

Tento dotaz vypíše počet požadavků každou minutu za posledních 15 minut podle jednotlivých oblastí ve městě. Tyto informace se dají snadno zobrazit na řídicím panelu Power BI nebo se dají vysílat všem ovladačům jako textové zprávy SMS prostřednictvím integrace se službami, jako je Azure Functions.

Následující obrázek znázorňuje výstup dotazu na řídicí panel Power BI.

Výstup výsledku na řídicím panelu Power BI

Další kroky