Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dzięki wbudowanym funkcjom geoprzestrzennym możesz użyć usługi Azure Stream Analytics do tworzenia aplikacji dla scenariuszy, takich jak zarządzanie flotą, udostępnianie przejazdów, połączone samochody i śledzenie zasobów.
Geofencing
Usługa Azure Stream Analytics obsługuje obliczenia geofencingu w czasie rzeczywistym w czasie rzeczywistym w chmurze i w środowisku uruchomieniowym IoT Edge.
Scenariusz geofencingu
Firma produkcyjna musi śledzić aktywa w swoich budynkach. Wyposażyli każde urządzenie z GPS i chcą otrzymywać powiadomienia, jeśli urządzenie opuści określony obszar.
Dane referencyjne używane w tym przykładzie zawierają informacje o geofencingu dla budynków i urządzeń, które są dozwolone w każdym z budynków. Należy pamiętać, że dane referencyjne mogą być statyczne lub powolne. Statyczne dane referencyjne są używane w tym scenariuszu. Strumień danych stale emituje identyfikator urządzenia i jego bieżące położenie.
Definiowanie geofencingów w danych referencyjnych
Geofencing można zdefiniować przy użyciu obiektu GeoJSON. W przypadku zadań ze zgodnością w wersji 1.2 lub nowszej można również zdefiniować geofencingi przy użyciu dobrze znanego tekstu (WKT) jako NVARCHAR(MAX)
. WKT to standard Open Geospatial Consortium (OGC), który służy do reprezentowania danych przestrzennych w formacie tekstowym.
Wbudowane funkcje geoprzestrzenne mogą używać zdefiniowanych geofencingów, aby dowiedzieć się, czy element znajduje się w określonym wielokącie geofencingu.
W poniższej tabeli przedstawiono przykład danych referencyjnych geofencingu, które mogą być przechowywane w usłudze Azure Blob Storage lub w tabeli Azure SQL. Każda witryna jest reprezentowana przez wielokąt geoprzestrzenny, a każde urządzenie jest skojarzone z dozwolonym identyfikatorem witryny.
Identyfikator witryny | Nazwa witryny | Geofence | AllowedDeviceID |
---|---|---|---|
1 | "Budynek Redmond 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 | "Budynek Redmond 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 | "Budynek Redmond 22" | "POLYGON(-122.1361660248233 47.63758544698554,-122.13635263687564 47.6374083293018,-122.13622389084293 47.6373603619712,-122.13622389084293 47.63717699101473,-122.13581619507266 147.63692757827657,-122.13559625393344 47.637046862778135,-122.13569281345798 47.63714458985965,-122.13570890671207 47.637314348246214,-122.1361660248233 47.6375854468554)" | "C" |
Generowanie alertów za pomocą geofencingu
Urządzenia mogą emitować swój identyfikator i lokalizację co minutę za pośrednictwem strumienia o nazwie DeviceStreamInput
. Poniższa tabela jest strumieniem danych wejściowych.
Deviceid | Położenie geograficzne |
---|---|
"A" | "POINT(-122.13292341559497 47.636318374032726)" |
"B" | "POINT(-122.13338475554553 47.63743531308874)" |
"C" | "POINT(-122.13354001095752 47.63627622505007)" |
Możesz napisać zapytanie, które łączy strumień urządzenia z danymi referencyjnymi geofencingu i generuje alert za każdym razem, gdy urządzenie znajduje się poza dozwolonym budynkiem.
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
Na poniższej ilustracji przedstawiono geofencingi. Możesz zobaczyć, gdzie urządzenia są zgodne z danymi wejściowymi strumienia.
Urządzenie "C" znajduje się wewnątrz budynku o identyfikatorze 2, który nie jest dozwolony zgodnie z danymi referencyjnymi. To urządzenie powinno znajdować się wewnątrz budynku o identyfikatorze 3. Uruchomienie tego zadania spowoduje wygenerowanie alertu dotyczącego tego konkretnego naruszenia.
Witryna z wieloma dozwolonymi urządzeniami
Jeśli witryna zezwala na wiele urządzeń, w klauzuli można zdefiniować AllowedDeviceID
tablicę identyfikatorów urządzeń, a w klauzuli można użyć WHERE
funkcji User-Defined w celu sprawdzenia, czy identyfikator urządzenia strumienia jest zgodny z dowolnym identyfikatorem urządzenia na tej liście. Aby uzyskać więcej informacji, zobacz samouczek funkcji zdefiniowanej przez użytkownika języka JavaScript dla zadań w chmurze i samouczek funkcji zdefiniowanej przez użytkownika języka C# dla zadań brzegowych.
Agregacja geoprzestrzenna
Usługa Azure Stream Analytics obsługuje agregację geoprzestrzenną w czasie rzeczywistym z małym opóźnieniem w chmurze i w środowisku uruchomieniowym IoT Edge.
Scenariusz agregacji geoprzestrzennych
Firma taksówkowa chce utworzyć aplikację w czasie rzeczywistym, aby poprowadzić kierowców taksówkarzy poszukujących jazdy w kierunku obszarów miast, w których obecnie występuje wyższe zapotrzebowanie.
Firma przechowuje logiczne regiony miasta jako dane referencyjne. Każdy region jest definiowany przez regionID, RegionName i Geofence.
Definiowanie geofencingów
W poniższej tabeli przedstawiono przykład danych referencyjnych geofencingu, które mogą być przechowywane w usłudze Azure Blob Storage lub w tabeli Azure SQL. Każdy region jest reprezentowany przez wielokąt geoprzestrzenny, który służy do korelowania żądań pochodzących z danych przesyłanych strumieniowo.
Te wielokąty są przeznaczone tylko do celów referencyjnych i nie reprezentują rzeczywistych separacji logicznych lub fizycznych miast.
Identyfikator regionu | Regionname | Geofence |
---|---|---|
1 | "SoHo" | "POLYGON(-74.00279525078275 40.72833625216264,-74.005477459797 40.72192915863244,-74.00125029839018 40.71893680218994,-73.9957785919998 40.72521409075776,-73.9972377137039 40.72557184584898,-74.00279525078275 40.7283362521626264))" |
2 | "Chinatown" | "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.013384050445578 40.71436586362705,-74.01370591552757 40.713617702123415,-74.00862044723533 40.711308107057235,-74.0019471120628 40.7194238654018,-74.01091641815208 40.72583120006787))" |
Agregowanie danych w przedziale czasu
Poniższa tabela zawiera dane przesyłane strumieniowo "rides".
UserID | Zlokalizacja | Lokalizacja do lokalizacji | TripRequestedTime |
---|---|---|---|
"A" | "POINT(-74.00726861389182 40.71610611981975)" | "POINT(-73.9861509591779 40.703107386025835)" | "2019-03-12T07:00:00Z" |
"B" | "POINT(-74.00249841021645 40.72382723895666)" | "POINT(-74.01160699942085 40.7137884930115)" | "2019-03-12T07:01:00Z" |
"C" | "POINT(-73.99680120565864 40.7164398986244024)" | "POINT(-73.98289663412544 40.72582343969828)" | "2019-03-12T07:02:00Z" |
„D” | "POINT(-74.00741090068288 40.71615626755086)" | "POINT(-73.97999843120539 40.7347895807408)" | "2019-03-12T07:03:00Z" |
Poniższe zapytanie łączy strumień urządzenia z danymi referencyjnymi geofencingu i oblicza liczbę żądań na region w przedziale czasu 15 minut co minutę.
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)
To zapytanie generuje liczbę żądań co minutę przez ostatnie 15 minut według każdego regionu w mieście. Te informacje można łatwo wyświetlać za pomocą pulpitu nawigacyjnego usługi Power BI lub mogą być emitowane do wszystkich sterowników jako wiadomości SMS za pośrednictwem integracji z usługami, takimi jak funkcje platformy Azure.
Na poniższej ilustracji przedstawiono dane wyjściowe zapytania do pulpitu nawigacyjnego usługi Power BI.