مقدمة إلى وظائف Stream Analytics الجغرافية المكانية

تتيح الوظائف الجغرافية المكانية في Azure Stream Analytics التحليلات في الوقت الحقيقي على تدفق البيانات الجغرافية المكانية. باستخدام بضعة أسطر فقط من التعليمات البرمجية، يمكنك تطوير حل درجة الإنتاج للسيناريوهات المعقدة. تدعم هذه الدالات جميع أنواع WKT و GeoJSON Point و Polygon و LineString.

تتضمن أمثلة السيناريوهات التي يمكن أن تستفيد من الوظائف الجغرافية المكانية ما يلي:

  • مشاركة الركوب
  • ⁧⁩إدارة الأسطول⁧⁩
  • تعقب الأصل
  • سياج جغرافي
  • تعقب الهاتف عبر المواقع الخلوية

تحتوي لغة استعلام Stream Analytics على سبع وظائف جغرافية مكانية مضمنة: CreateLineString، CreatePoint، CreatePolygon، ST_DISTANCE، ST_OVERLAPS، ST_INTERSECTS، و ST_WITHIN.

CreateLineString

تقبل الدالة CreateLineString النقاط وتعيد سلسلة خطوط GeoJSON، والتي يمكن رسمها كخط على الخريطة. يجب أن يكون لديك نقطتان على الأقل لإنشاء LineString. سيتم توصيل نقاط LineString بالترتيب.

يستخدم الاستعلام التاليCreateLineString لإنشاء LineString باستخدام ثلاث نقاط. يتم إنشاء النقطة الأولى من تدفق بيانات الإدخال، بينما يتم إنشاء النقطة الثانية يدويا.

SELECT  
     CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))  
FROM input  

مثال الإدخال

خط العرض خط الطول
3.0 -10.2
-87.33 20.2321

مثال الإخراج

{"type" : "LineString", "coordinates" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}

{"type" : "LineString", "coordinates" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}

لمعرفة المزيد، تفضل بزيارة مرجع CreateLineString.

CreatePoint

تقبل الدالة CreatePoint خط عرض وخط طول وترجع نقطة GeoJSON، والتي يمكن رسمها على الخريطة. يجب أن تكون خطوط العرض وخط الطول نوع بيانات حر.

يستخدم CreatePoint الاستعلام المثال التالي لإنشاء نقطة باستخدام خطوط العرض وخط الطول من تدفق بيانات الإدخال.

SELECT  
     CreatePoint(input.latitude, input.longitude)  
FROM input 

مثال الإدخال

خط العرض خط الطول
3.0 -10.2
-87.33 20.2321

مثال الإخراج

{"type" : "Point"، "coordinates" : [-10.2، 3.0]}

{"type" : "Point"، "coordinates" : [20.2321، -87.33]}

لمعرفة المزيد، تفضل بزيارة مرجع CreatePoint.

CreatePolygon

تقبل الدالة CreatePolygon النقاط وتعيد سجل مضلع GeoJSON. يجب أن يتبع ترتيب النقاط اتجاه الحلقة اليمنى، أو عكس اتجاه عقارب الساعة. تخيل المشي من نقطة إلى أخرى بالترتيب الذي تم الإعلان عنه. سيكون مركز المضلع إلى يسارك طوال الوقت.

يستخدم استعلام المثال التاليCreatePolygon لإنشاء مضلع من ثلاث نقاط. يتم إنشاء أول نقطتين يدويا، ويتم إنشاء النقطة الأخيرة من بيانات الإدخال.

SELECT  
     CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))  
FROM input  

مثال الإدخال

خط العرض خط الطول
3.0 -10.2
-87.33 20.2321

مثال الإخراج

{"type" : "Polygon"، "coordinates" : [[ [-10.2، 3.0]، [10.0، 10.0]، [10.5، 10.5]، [-10.2، 3.0] ]]}

{"type" : "Polygon"، "coordinates" : [[ [20.2321، -87.33]، [10.0، 10.0]، [10.5، 10.5]، [20.2321، -87.33] ]]}

لمعرفة المزيد، تفضل بزيارة مرجع CreatePolygon.

ST_DISTANCE

ترجع الدالة ST_DISTANCE المسافة بين هندسيتين بالأمتار.

يستخدم الاستعلام التالي ST_DISTANCE لإنشاء حدث عندما تكون محطة وقود أقل من 10 كم من السيارة.

SELECT Cars.Location, Station.Location 
FROM Cars c  
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000

لمعرفة المزيد، تفضل بزيارة مرجع ST_DISTANCE.

ST_OVERLAPS

تقارن الدالة ST_OVERLAPS بين 2 من الهندسة. إذا تداخلت الهندسة، ترجع الدالة 1. ترجع الدالة 0 إذا لم تتداخل الهندسة.

يستخدم الاستعلام التالي ST_OVERLAPS لإنشاء حدث عندما يكون المبنى داخل منطقة الفيضانات المحتملة.

SELECT Building.Polygon, Building.Polygon 
FROM Building b 
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon) 

ينشئ استعلام المثال التالي حدثا عندما تتجه عاصفة نحو سيارة.

SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)

لمعرفة المزيد، تفضل بزيارة مرجع ST_OVERLAPS.

ST_INTERSECTS

تقارن الدالة ST_INTERSECTS بين 2 من الهندسة. إذا تقاطعت الهندسة، فترجع الدالة 1. ترجع الدالة 0 إذا لم تتقاطع الهندسة مع بعضها البعض.

يستخدم استعلام المثال التالي ST_INTERSECTS لتحديد ما إذا كان الطريق الممهد يتقاطع مع طريق ترابي.

SELECT  
     ST_INTERSECTS(input.pavedRoad, input.dirtRoad)  
FROM input  

مثال الإدخال

datacenterArea stormArea
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "coordinates": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]}
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "coordinates": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]}

مثال الإخراج

1

0

لمعرفة المزيد، تفضل بزيارة مرجع ST_INTERSECTS.

ST_WITHIN

تحدد الدالة ST_WITHIN ما إذا كانت الهندسة داخل هندسة أخرى. إذا كان الأول مضمنا في الأخير، فسترجع الدالة 1. سترجع الدالة 0 إذا لم تكن الهندسة الأولى موجودة ضمن الهندسة الأخيرة.

يستخدم استعلام المثال التالي ST_WITHIN لتحديد ما إذا كانت نقطة وجهة التسليم داخل مضلع المستودع المحدد.

SELECT  
     ST_WITHIN(input.deliveryDestination, input.warehouse)  
FROM input 

مثال الإدخال

deliveryDestination مستودع
{"type":"Point"، "coordinates": [76.6، 10.1]} {"type":"Polygon"، "coordinates": [ [0.0، 0.0]، [10.0، 0.0]، [10.0، 10.0]، [0.0، 10.0]، [0.0، 0.0] ]}
{"type":"Point"، "coordinates": [15.0، 15.0]} {"type":"Polygon"، "coordinates": [ [10.0، 10.0]، [20.0، 10.0]، [20.0، 20.0]، [10.0، 20.0]، [10.0، 10.0] ]}

مثال الإخراج

0

1

لمعرفة المزيد، تفضل بزيارة مرجع ST_WITHIN.

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