سيناريوهات التجميع الجغرافي والتجميع الجغرافي المكاني باستخدام Azure Stream Analytics

باستخدام الوظائف الجغرافية المكانية المضمنة، يمكنك استخدام Azure Stream Analytics لإنشاء تطبيقات لسيناريوهات مثل إدارة الأسطول ومشاركة الرحلات والسيارات المتصلة وتعقب الأصول.

المحيط الجغرافي الظاهري

يدعم Azure Stream Analytics عمليات حوسبة السياج الجغرافي في الوقت الحقيقي بزمن انتقال منخفض في السحابة وفي وقت تشغيل IoT Edge.

سيناريو السياج الجغرافي

تحتاج شركة التصنيع إلى تتبع الأصول في مبانيها. لقد قاموا بتجهيز كل جهاز بنظام تحديد المواقع العالمي (GPS) ويريدون تلقي إشعارات إذا غادر الجهاز منطقة معينة.

تحتوي البيانات المرجعية المستخدمة في هذا المثال على معلومات السياج الجغرافي للمباني والأجهزة المسموح بها في كل مبنى. تذكر أن البيانات المرجعية يمكن أن تكون إما ثابتة أو بطيئة التغيير. يتم استخدام البيانات المرجعية الثابتة لهذا السيناريو. يرسل دفق البيانات باستمرار معرف الجهاز وموقعه الحالي.

تحديد السياج الجغرافي في البيانات المرجعية

يمكن تحديد السياج الجغرافي باستخدام عنصر GeoJSON. بالنسبة للمهام ذات الإصدار 1.2 المتوافق والإصدارات الأحدث، يمكن أيضاً تحديد السياج الجغرافي باستخدام النص المعروف جيداً (WKT) على أنه NVARCHAR(MAX). WKT هو معيار اتحاد جغرافي مكاني مفتوح (OGC) يُستخدم لتمثيل البيانات المكانية بتنسيق نصي.

يمكن أن تستخدم الوظائف الجغرافية المكانية المضمنة سياجاً جغرافياً محدداً لمعرفة ما إذا كان العنصر داخل أو خارج مضلع سياج جغرافي معين.

الجدول التالي هو مثال لبيانات مرجع السياج الجغرافي التي يمكن تخزينها في موقع تخزين Azure Blob أو جدول Azure SQL. يتم تمثيل كل موقع بواسطة مضلع جغرافي مكاني، ويرتبط كل جهاز بمعرف موقع مسموح به.

SiteID SiteName المحيط الجغرافي الظاهري 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 47.63692757827657,-122.13559625393344 47.637046862778135,-122.13569281345798 47.637144458985965,-122.13570890671207 47.637314348246214,-122.13611660248233 47.63758544698554))" "C"

إنشاء التنبيهات مع السياج الجغرافي

يمكن للأجهزة إرسال معرفها وموقعها كل دقيقة من خلال دفق يسمى DeviceStreamInput. الجدول التالي عبارة عن دفق من المدخلات.

DeviceID GeoPosition
"A" "POINT(-122.13292341559497 47.636318374032726)"
"B" "POINT(-122.13338475554553 47.63743531308874)"
"C" "POINT(-122.13354001095752 47.63627622505007)"

يمكنك كتابة استعلام ينضم إلى دفق الجهاز مع بيانات مرجع السياج الجغرافي وينشئ تنبيهاً في كل مرة يكون فيها الجهاز خارج المبنى المسموح به.

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

الصورة التالية تمثل السياج الجغرافي. يمكنك معرفة مكان الأجهزة وفقاً لإدخال بيانات الدفق.

بناء سياج جغرافي

يقع الجهاز "C" داخل المبنى ID 2 وهو غير مسموح به حسب البيانات المرجعية. يجب أن يكون هذا الجهاز موجوداً داخل معرف المبنى 3. سيؤدي تشغيل هذه الوظيفة إلى إنشاء تنبيه لهذا الانتهاك المحدد.

موقع به أجهزة متعددة مسموح بها

إذا كان الموقع يسمح بأجهزة متعددة، يمكن تحديد مجموعة من معرفات الجهاز في AllowedDeviceID and a User-Defined Function can be used on the WHERE للتحقق مما إذا كان معرف جهاز البث يطابق أي معرف جهاز في تلك القائمة. لمزيد من المعلومات، قم بعرض البرنامج التعليمي JavaScript UDF للوظائف السحابية وC# UDF للمهام المتطورة.

التجميع الجغرافي المكاني

يدعم Azure Stream Analytics التجميع الجغرافي المكاني في الوقت الحقيقي بزمن انتقال منخفض في السحابة وفي وقت تشغيل IoT Edge.

سيناريو التجميع الجغرافي المكاني

تريد شركة سيارات الأجرة إنشاء تطبيق في الوقت الحقيقي لتوجيه سائقي سيارات الأجرة الذين يبحثون عن الركوب نحو مناطق المدن التي تشهد حالياً طلباً أعلى.

تقوم الشركة بتخزين المناطق المنطقية للمدينة كبيانات مرجعية. يتم تحديد كل منطقة بواسطة معرف المنطقة واسم المنطقة والسياج الجغرافي.

تحديد السياج الجغرافي

الجدول التالي هو مثال لبيانات مرجع السياج الجغرافي التي يمكن تخزينها في موقع تخزين Azure Blob أو جدول Azure SQL. يتم تمثيل كل منطقة بواسطة مضلع جغرافي مكاني، والذي يستخدم لربط الطلبات الواردة من تدفق البيانات.

هذه المضلعات هي للإشارة فقط ولا تمثل الفصل المنطقي أو المادي الفعلي للمدينة.

RegionID RegionName المحيط الجغرافي الظاهري
1 "SoHo" "POLYGON((-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" "POLYGON((-74.01091641815208 40.72583120006787,-74.01338405044578 40.71436586362705,-74.01370591552757 40.713617702123415,-74.00862044723533 40.711308107057235,-74.00194711120628 40.7194238654018,-74.01091641815208 40.72583120006787))"

تجميع البيانات خلال فترة زمنية

يحتوي الجدول التالي على تدفق بيانات "rides".

معرّف المستخدم 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"

ينضم الاستعلام التالي إلى دفق الجهاز مع البيانات المرجعية للسياج الجغرافي ويحسب عدد الطلبات لكل منطقة في فترة زمنية مدتها 15 دقيقة كل دقيقة.

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)

ينتج عن هذا الاستعلام عدد الطلبات كل دقيقة لآخر 15 دقيقة حسب كل منطقة داخل المدينة. يمكن عرض هذه المعلومات بسهولة بواسطة لوحة معلومات Power BI، أو يمكن بثها إلى جميع برامج التشغيل كرسائل نصية SMS من خلال التكامل مع خدمات مثل Azure Functions.

توضح الصورة أدناه إخراج الاستعلام إلى لوحة معلومات Power BI.

الناتج اعلى لوحة معلومات Power BI

الخطوات التالية