إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تمكن الوظائف الجغرافية المكانية في Azure Stream Analytics التحليلات الفورية على البيانات الجغرافية المكانية المتدفقة لسيناريوهات مثل مشاركة الركوب، إدارة الأسطول، تتبع الأصول، التسييج الجغرافي، وتتبع الهاتف عبر مواقع الهواتف. مع وجود بضعة أسطر فقط من كود الاستعلام، يمكنك بناء حلول تستخدم الدوال السبع المدمجة في لغة استعلام تحليلات التدفق (CreateLineString, CreatePoint, CreatePolygon, ST_INTERSECTSST_DISTANCEST_OVERLAPS, و ST_WITHIN), والتي تدعم جميع أنواع WKT وGeoJSON point وpolygon وLineString. تصف هذه المقالة كل وظيفة وتعرض أمثلة على الاستعلامات حتى تتمكن من تطبيقها على بياناتك المتدفقة.
أنواع الهندسة وترتيب الإحداثيات
تعمل الدوال الجغرافية المكانية مع ثلاثة أنواع هندسية GeoJSON. النقطة هي موقع واحد يعرف بخط الطول وخط العرض. سلسلة الخط هي مجموعة مرتبة من نقطتين أو أكثر تشكل خطا متصلا، مثل مسار أو طريق. المضلع هو شكل مغلق تعود حدوده إلى نقطة البداية، مثل بصمة مبنى أو سياج جغرافي.
تنقسم الدوال إلى مجموعتين. دوال البناء (CreatePoint, CreateLineString, و CreatePolygon) تبني هندسات من قيم الإحداثيات في بيانات الأحداث الخاصة بك. تقارن دوال العلاقة (ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS, و ST_WITHIN) بين هندسيتين وتصف كيف ترتبطان في الفضاء.
في GeoJSON، الإحداثيات مرتبة أولا على خط الطول وخط العرض ثانيا، لذا يظهر خط العرض والطول المدخلان بالترتيب العكسي في الهندسة الناتجة. فهم هذا الترتيب، إلى جانب اتجاه الحلقات عكس عقارب الساعة الذي تتطلبه المضلعات، يساعدك على التنبؤ بمخرج كل دالة.
إنشاء سلسلة خطوط
CreateLineString هي دالة بناء ترجع سلسلة خطوط GeoJSON، وهي هندسة تمثل سلسلة متصلة من النقاط كخط على خريطة معينة. يقبل نقطتين أو أكثر ويربطهما بالترتيب الذي تدرجهما، مما يجعله طريقة طبيعية لنمذجة المسارات والمسارات ومقاطع الطرق من بيانات التدفق المتدفق.
يوضح المثال التالي هذا السلوك من خلال دمج ثلاث نقاط في سلسلة خط. النقطة الأولى تأتي من تدفق بيانات الإدخال، وأنت تعرف النقطتين الأخريين يدويا.
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 من خطي عرض وطول. النقطة هي أبسط هندسة وتمثل موقعا واحدا على الخريطة، مثل الموقع الحالي لمركبة أو أصل. يجب أن تكون float قيم خطوط العرض والطول نوع بيانات.
يوضح المثال التالي هذا السلوك من خلال إنشاء نقطة من قيم خطوط العرض والطول في بيانات الإدخال المتدفقة.
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 من مجموعة نقاط. يمثل المضلع منطقة مغلقة على الخريطة، مثل بصمة مبنى، أو حدود مستودع، أو سياج جغرافي. ترتيب النقاط يتبع اتجاه الحلقة اليمنى، أو عكس عقارب الساعة: إذا تخيلت المشي من نقطة إلى أخرى بالترتيب الذي تعلنها فيه، يبقى مركز المضلع إلى يسارك طوال الوقت.
يوضح المثال التالي هذا السلوك من خلال إنشاء مضلع من ثلاث نقاط. تحدد النقطتين الأوليين يدويا، والنقطة الأخيرة تأتي من بيانات الإدخال.
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 هي دالة علاقة تعيد المسافة بين هندسيتين بالمتر. يساعدك على فهم مدى قرب أو بعد موقعين، وهو أمر مفيد في سيناريوهات القرب مثل تنبيهات المركبات القريبة وحسابات مناطق الخدمة.
يوضح المثال التالي كيفية استخدام هذه الوظيفة لتحديد متى تكون محطة الوقود أقل من 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 عندما لا تتداخل. هذه الوظيفة مفيدة لاكتشاف التعارضات المكانية مثل منطقة خطر تلمس منطقة اهتمام.
يوضح المثال التالي كيفية استخدام هذه الوظيفة لتحديد متى يقع مبنى ضمن منطقة فيضانات محتملة.
SELECT Building.Polygon, Flooding.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, f.Polygon)
المثال التالي يستخدم ST_OVERLAPS أيضا للكشف عن متى تتجه عاصفة نحو سيارة.
SELECT Cars.Location, Storm.Course
FROM Cars c
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
لمعرفة المزيد، راجع ST_OVERLAPS المرجع.
ST_INTERSECTS
ST_INTERSECTS هي دالة علاقة تقارن بين هندسيتين وتبلغ عما إذا تقاطعتا أو تلامسن. يعيد 1 عندما تتقاطع الهندسات و0 عندما لا تتقاطع العدد. تساعدك هذه الوظيفة على اكتشاف أماكن التقاء المسارات أو المناطق.
يوضح المثال التالي كيفية استخدام هذه الوظيفة لتحديد ما إذا كان الطريق المعبد يتقاطع مع طريق ترابي.
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 عندما لا يكون كذلك، وهو أساس سيناريوهات الاحتواء مثل السياج الجغرافي وفحوصات مناطق التسليم.
يوضح المثال التالي هذا السلوك من خلال تحديد ما إذا كانت نقطة وجهة التسليم تقع ضمن مضلع مستودع معين.
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 المرجع.