مقدمة إلى وظائف 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.