مقدمة في وظائف تحليل التدفق الجغرافية المكانية

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

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

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

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

إنشاء سلسلة خطوط

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

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

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", "الإحداثيات" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}

{"type" : "LineString", "الإحداثيات" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}

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

إنشاء نقطة

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

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

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

مثال على المدخلات

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

مثال على المخرجات

{"type" : "نقطة", "الإحداثيات" : [-10.2, 3.0]}

{"type" : "نقطة", "الإحداثيات" : [20.2321, -87.33]}

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

إنشاءPolygon

تقبل الدالة 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", "الإحداثيات" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}

{"type" : "Polygon", "الإحداثيات" : [[ [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 بين هندسيتين. إذا تداخلت الهندسات، تعود الدالة إلى 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 بين هندسيتين. إذا تقاطعت الهندسة، فإن الدالة تعيد 1. تعود الدالة بصفر إذا لم تتقاطع الهندسات مع بعضها البعض.

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

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

مثال على المدخلات

مركز البيانات المنطقة منطقة العاصفة
{"type":"LineString", "الإحداثيات": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "الإحداثيات": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]}
{"type":"LineString", "الإحداثيات": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "الإحداثيات": [ [-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 

مثال على المدخلات

التوصيل وجهة warehouse
{"type":"Point", "الإحداثيات": [76.6, 10.1]} {"type":"Polygon", "الإحداثيات": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]}
{"type":"Point", "الإحداثيات": [15.0, 15.0]} {"type":"Polygon", "الإحداثيات": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]}

مثال على المخرجات

0

1

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

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