Aracılığıyla paylaş


Azure Stream Analytics ile coğrafi sınırlama ve jeo-uzamsal toplama senaryoları

Yerleşik jeo-uzamsal işlevlerle Azure Stream Analytics'i kullanarak filo yönetimi, sürüş paylaşımı, bağlı arabalar ve varlık izleme gibi senaryolara yönelik uygulamalar oluşturabilirsiniz.

Bölge sınırlama

Azure Stream Analytics, bulutta ve IoT Edge çalışma zamanında düşük gecikme süreli gerçek zamanlı coğrafi sınırlama hesaplamalarını destekler.

Coğrafi sınırlama senaryosu

Bir üretim şirketinin binalarındaki varlıkları izlemesi gerekiyor. Her cihazı GPS ile donatmışlar ve bir cihaz belirli bir alandan ayrıldığında bildirim almak istiyorlar.

Bu örnekte kullanılan başvuru verileri, binaların ve binaların her birinde izin verilen cihazların coğrafi bölge bilgilerine sahiptir. Başvuru verilerinin statik veya yavaş değişen veriler olabileceğini unutmayın. Bu senaryo için statik başvuru verileri kullanılır. Bir veri akışı, cihaz kimliğini ve geçerli konumunu sürekli olarak yayar.

Başvuru verilerinde coğrafi konumları tanımlama

Coğrafi bölge, GeoJSON nesnesi kullanılarak tanımlanabilir. Uyumluluk sürümü 1.2 ve üzeri olan işler için coğrafi başvurular olarak Bilinen Metin (WKT) NVARCHAR(MAX)kullanılarak da tanımlanabilir. WKT, uzamsal verileri metin biçiminde temsil etmek için kullanılan bir Açık Jeo-uzamsal Konsorsiyum (OGC) standardıdır.

Yerleşik jeo-uzamsal işlevler, bir öğenin belirli bir bölge çokgeninde mi yoksa dışında mı olduğunu öğrenmek için tanımlı coğrafi konumları kullanabilir.

Aşağıdaki tablo, Azure blob depolamada veya Azure SQL tablosunda depolanabilecek coğrafi başvuru verilerine bir örnektir. Her site bir jeo-uzamsal çokgenle temsil edilir ve her cihaz izin verilen bir site kimliğiyle ilişkilendirilir.

Siteıd SiteAdı Bölge Sınırı AllowedDeviceID
1 "Redmond Binası 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 Binası 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 Binası 22" "POLYGON((-122.13611660248233 47.63758544698554,-122.13635263687564 47.6374083293018,-122.13622389084293 47.63733603619712,-122.13622389084293 47.63717699101473,-122.13581619507266 147.63692757827657,-122.13559625393344 47.637046862778135,-122.13569281345798 47.637144458985965,-122.13570890671207 47.637314348246214,-122.13611660248233 47.63758544698554))" "C"

Bölge sınırı ile uyarılar oluşturma

Cihazlar kimliklerini ve konumlarını adlı DeviceStreamInputbir akış aracılığıyla dakikada bir yayar. Aşağıdaki tablo bir giriş akışıdır.

Deviceıd Geoposition
"A" "POINT(-122.13292341559497 47.636318374032726)"
"B" "POINT(-122.13338475554553 47.63743531308874)"
"C" "POINT(-122.13354001095752 47.63627622505007)"

Bölge başvurusu verileriyle cihaz akışını birleştiren ve bir cihaz izin verilen bir binanın dışında olduğunda her uyarı oluşturan bir sorgu yazabilirsiniz.

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

Aşağıdaki görüntü, coğrafi alanları temsil eder. Cihazların akış veri girişine uygun olarak nerede olduğunu görebilirsiniz.

Bölge alanları oluşturma

"C" cihazı, başvuru verilerine göre izin verilmeyen bina kimliği 2'nin içinde bulunur. Bu cihaz, bina kimliği 3 içinde bulunmalıdır. Bu işin çalıştırılması, bu özel ihlal için bir uyarı oluşturur.

Birden çok izin verilen cihazı olan site

Bir site birden çok cihaza izin veriyorsa, içinde bir cihaz kimlikleri dizisi tanımlanabilir AllowedDeviceID ve akış cihaz kimliğinin bu listedeki herhangi bir cihaz kimliğiyle eşleşip eşleşmediğini doğrulamak için yan tümcesinde bir User-Defined İşlevi kullanılabilir WHERE . Daha fazla bilgi için bulut işleri için JavaScript UDF öğreticisini ve uç işler için C# UDF öğreticisini görüntüleyin.

Jeo-uzamsal toplama

Azure Stream Analytics, bulutta ve IoT Edge çalışma zamanında düşük gecikme süreli gerçek zamanlı jeo-uzamsal toplamayı destekler.

Jeo-uzamsal toplama senaryosu

Bir taksi şirketi, şu anda daha yüksek talep yaşayan şehirlerin alanlarına doğru yolculuk yapmak isteyen taksi sürücülerine yol gösterecek gerçek zamanlı bir uygulama oluşturmak istiyor.

Şirket, şehrin mantıksal bölgelerini başvuru verileri olarak depolar. Her bölge regionID, RegionName ve Geofence ile tanımlanır.

Coğrafi alanları tanımlama

Aşağıdaki tablo, Azure blob depolamada veya Azure SQL tablosunda depolanabilecek coğrafi başvuru verilerine bir örnektir. Her bölge, akış verilerinden gelen isteklerle bağıntı oluşturmak için kullanılan bir jeo-uzamsal çokgenle temsil edilir.

Bu çokgenler yalnızca başvuru amaçlıdır ve gerçek şehir mantıksal veya fiziksel ayrımlarını temsil etmemektedir.

Bölge Kimliği Regionname Bölge Sınırı
1 "SoHo" "ÇOKGEN(-74.00279525078275 40,72833625216264,-74,00547745979765 40.721929158663244,-74.00125029839018 40.71893680218994,-73.9957785919998 40.72521409075776,-73.9972377137039 40.72557184584898,-74.00279525078275 40.72833625216264))"
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" "ÇOKGEN((-74.01091641815208 40.72583120006787,-74.01338405044578 40.71436586362705,-74.01370591552757 40.713617702123415,-74.00862044723533 40.711308107057235,-74.00194711120628 40.7194238654018,-74.01091641815208 40.72583120006787))

Zaman penceresi içinde verileri toplama

Aşağıdaki tabloda "rides" akış verileri yer alır.

UserID FromLocation ToLocation TripRequestedTime
"A" "POINT(-74.00726861389182 40.71610611981975)" "POINT(-73.98615095917779 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"

Aşağıdaki sorgu, bölge başvurusu verileriyle cihaz akışını birleştirir ve her dakika 15 dakikalık bir zaman penceresinde bölge başına istek sayısını hesaplar.

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)

Bu sorgu, şehir içindeki her bölge tarafından son 15 dakika boyunca her dakikada bir istek sayısını döndürür. Bu bilgiler Power BI panosu tarafından kolayca görüntülenebilir veya Azure işlevleri gibi hizmetlerle tümleştirme yoluyla tüm sürücülere SMS kısa mesajları olarak yayınlanabilir.

Aşağıdaki resimde sorgunun Power BI panosuna çıkışı gösterilmektedir.

Power BI panosunda sonuç çıktısı

Sonraki adımlar