Skip To Content

استخدام تعبيرات النطاق بواسطة GeoAnalytics Tools

تتيح لك الأدوات التالية في مربع أدوات GeoAnalytics Tools تطبيق تعبير:

يوجد لدى GeoAnalytics Tools التي تستخدم التعبيرات أغراض مختلفة، وكذلك قيود على التعبيرات التي يمكن تطبيقها. في ArcGIS 10.6، كل التعبيرات المستخدمة في GeoAnalytics تدعم Arcade.

تعرف على المزيد عن دوال Arcade.

إعادة إنشاء المسارات وإنشاء النطاقات

تُستخدَم تعبيرات النطاق بواسطة أدوات إعادة إنشاء المسارات وإنشاء النطاقات.

يتم إدخال أحجام النطاق المؤقت باستخدام قيم ثابتة أو قيم حقل. وعلى الرغم من ذلك، لا يُعد إدخال القيم الوسيلة الوحيدة التي يمكنك من خلالها تحديد حجم نطاق باستخدام GeoAnalytics Tools. وقد تريد في بعض الحالات تنفيذ حساب رياضي لتعيين حجم النطاق. يتم تطبيق الحساب على كل معلم من المعالم المحللة. يتم تنفيذ الحسابات عند تشغيل التحليل على ArcGIS GeoAnalytics Server.

تتضمن الأقسام التالية أمثلة على تعبير النطاق.

أمثلة على العامل والدالة الرياضية

يمكن لتعبيرات النطاق معالجة الأرقام رياضيًا. يوضح الجدول التالي نموذجًا من العمليات المتاحة.

تعرف على المزيد عن المعاملات والدوال الرياضية المتاحة في Arcade

مُشغلالتفسيرمثالالنتيجة

a + b

a زائد b.

fieldname يحتوي على قيمة 1.5.

$feature["fieldname"] + 2.5

4.0

a - b

a ناقص b.

fieldname يحتوي على قيمة 3.3.

$feature["fieldname"]- 2.2

1.1

a * b

a مضروبًا في b.

fieldname يحتوي على قيمة 2.0.

$feature["fieldname"] * 2.2

4.4

a / b

a مقسومًا على b.

fieldname يحتوي على قيمة 4.0.

$feature["fieldname"] / 1.25

3.2

abs( a )

يُرجع القيمة المطلقة (الموجبة) a.

fieldname يحتوي على قيمة -1.5.

abs($feature["fieldname"])

1.5

لوغاريتم ( a )

إرجاع اللوغاريتم الطبيعي (قاعدة E) من a.

fieldname يحتوي على قيمة 1.

log($feature["fieldname"])

0

جيب ( a )

يقوم بإرجاع جيب زاوية المثلثات لـ a. يُفتَرَض أن يكون المدخل زاوية بالتقدير الدائري.

fieldname يحتوي على قيمة 1.5707.

sin($feature["fieldname"])

1

جتا( a )

يقوم بإرجاع جيب تمام المثلثات لـ a. يُفتَرَض أن يكون المدخل زاوية بالتقدير الدائري.

fieldname يحتوي على قيمة 0.

cos($feature["fieldname"])

1

ظل الزاوية( a )

يُرجِع ظل زاوية لـ a. يُفتَرَض أن يكون المدخل زاوية بالتقدير الدائري.

fieldname يحتوي على قيمة 0.

tan($feature["fieldname"])

0

الجذر التربيعي( a )

يُرجع جذر تربيعي a.

fieldname يحتوي على قيمة 9.

sqrt($feature["fieldname"])

3

الحد الأدنى( a, b )

إرجاع الرقم الذي يتميز بأقل قيمة بين a وb.

fieldname يحتوي على قيمة 1.5 وقيمة -3.

min($feature["fieldname"], -3)

-3

الحد الأقصى( a, b )

إرجاع الرقم الذي يتميز بأعلى قيمة بين a و b.

fieldname1 يحتوي على قيمة 1.5، ويحتوي fieldname2 على قيمة -3.

max($feature["fieldname1"], $feature["fieldname2"])

1.5

constrain(<value>,<low>,<high>)

إرجاع القيمة المدخلة إذا كانت ضمن حدود القيد. إذا كانت القيمة المدخلة أقل من القيمة المنخفضة، فإنها تُرجِع القيمة المنخفضة. إذا كانت القيمة المدخلة أكبر من القيمة المرتفعة، فإنها تُرجِع القيمة المرتفعة.

constrain($feature["distance"], 0, 10)

constrain($feature['Store dist'], 6, distance)

إرجاع 0 إذا كانت distance أقل من 0 وإرجاع 10 إذا كانت distance أكبر من 10، وكذلك distance بخلاف ذلك.

إرجاع 6 إذا كانت Store dist أقل من 6 وdistance إذا كانت Store dist أكبر من distance، و Store dist بخلاف ذلك.

مثال على ضرب تعبير نطاق.

$feature["Distance"] * 2

أمثلة على دالة المسافة

تقوم دوال as distance بتحويل القيم الرقمية إلى مسافة رقمية، ويمكن عندئذٍ استخدامها في تعبير رياضي. يمكن لأداتي إعادة إنشاء المسارات وإنشاء النطاقات استخدام دوال as distance. إذا تم استخدام القيمة الرقمية دون دالة as distance يتم افتراض أن الوحدة بالأمتار.

وظيفةالتفسيرمثالالنتيجة

as_meters( <value> )

تطبيق حساب يفترض أن القيم المدخلة بالأمتار.

as_meters( $feature["fieldname"] )

as_meters(150)

يتم إنشاء نطاق حول النتائج بمحيط 150 مترًا.

as_kilometers( <value> )

تطبيق حساب يفترض أن القيم المدخلة بالكيلومتر.

as_kilometers( $feature["fieldname"] )

as_kilometers(150)

يتم إنشاء نطاق حول النتائج بمحيط 150 كيلومترًا.

as_feet( <value> )

تطبيق حساب يفترض أن القيم المدخلة بالقدم.

as_feet( $feature["fieldname"] )

as_feet(150)

يتم إنشاء نطاق حول النتائج بمحيط 150 قدمًا.

as_yards( <value> )

تطبيق حساب يفترض أن القيم المدخلة بالياردة.

as_yards( $feature["fieldname"] )

as_yards(150)

يتم إنشاء نطاق حول النتائج بمحيط 150 ياردة.

as_nautical_miles( <value> )

تطبيق حساب يفترض أن القيم المدخلة بالميل البحري.

as_nautical_miles( $feature["fieldname"] )

as_nautical_miles(150)

يتم إنشاء نطاق حول النتائج بمحيط 150 ميلاً بحريًا.

as_miles( <value> )

تطبيق حساب يفترض أن القيم المدخلة بالميل.

as_miles( $feature["fieldname"] )

as_miles(150)

يتم إنشاء نطاق حول النتائج بمحيط 150 ميلاً.

في كل معلم، ضاعف حقل Distance على افتراض أنه بالكيلومتر، وأضف 10 أمتار في كل تعبير نطاق.

as_kilometers($feature["Distance"]) * 3 + as_meters(10)

العوامل المشروطة

يمكن للعبارات الشرطية استخدام عوامل تشغيل التالية:

مُشغلالتفسيرمثالالنتائج

a > b

a < b

a أكبر من b

a أقل من b

10 > 2

خطأ

a >= b

a <= b

a أكبر من أو يساوي b

a أقل من أو يساوي b

abs(-10) >= 10

صواب

a != b

a لا يساوي b

abs(-3) != -3

صواب

a == b

a يساوي b

abs(-5) == 5

صواب

<condition1> || <condition2>

تم تلبية الشرط الأول أو الشرط الثاني.

(abs(-5) == 5) || (10 < 2)

صواب

<condition1> && <condition2>

تم تلبية الشرط الأول أو الشرط الثاني.

(abs(-5) == 5) && (10 < 2)

خطأ

مثال على تعبير نطاق يستخدم دوال وشروط متقدمة

iff(field1 > field2, iff(field2 = 0, field3, field4), 0)

مثال على ضرب شرط الضم.

iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > $join["Distance"] * 2

أمثلة على العامل المنطقي

وإضافةً إلى المعاملات الشرطية، يمكن استخدام معاملات منطقية أكثر تقدمًا لإنشاء النطاقات كما هو معروض في الجدول التالي.

تعرف على المزيد عن الدوال المنطقية المتاحة في Arcade.

دالةالتفسيرمثالالنتيجة

iif(<condition>,<true value>,<false value>)

إرجاع قيمة إذا كان الشرط مقيمًا بـ true وقيمة أخرى إذا كان ذلك الشرط مقيمًا بـ false.

<true value> و <false value> يمكن أن يكونا ما يلي:

  • حقل رقمي. إذا وجدت مسافة في اسم الحقل، استخدم الأقواس المربعة.
  • رقم.
  • دالة.

iif($feature["field1"] > $feature["field2"], $feature["field1"], 0)

iif($feature["field1"] > $feature["field2"], iif($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0)

إرجاع field1 إذا كانت field1 أكبر من field2، و0 بخلاف ذلك.

إرجاع نتيجة دالة iif الثانية إذا كانت field1 أكبر من field2، و 0 بخلاف ذلك.

when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)

تقييم سلسلة تعبيرات بالترتيب، حتى يتم تقييم أحدها إلى true.

  • expression- تعبير.
  • result- نتيجة التعبير. يمكن أن تكون رقمًا أو حقلاً.
  • default- قيمة اختيارية في حالة عدم مطابقة أيّ من التعبيرات.

when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"])

إذا كانت field1 + 10 أكبر من 1، فإنها تُرجع 1. وإذا لم تكن أكبر من 1، تأكد مما إذا كانت field2 + 10 أكبر من 2. إذا كانت أكبر من 2، فإنها ترجع 2. وإذا لم تكن أكبر من 2، فإنها ترجع field3.

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

تقييم تعبير ومقارنة قيمته مع معلماتها التابعة. إذا تطابق التعبير، فإنه يُرجع قيمة المعلمة التالية. إذا لم يتطابق أي منها، يوجد خيار للمعلمة الأخيرة لتكون قيمة إرجاع افتراضية.

  • conditional val- القيمة الشرطية. يمكن أن تكون حقلاً أو تعبيراً.
  • case- قيمة لمقارنتها بـ conditional val.
  • result- النتيجة إذا تطابقت الحالة المتوافقة مع conditional val.
  • defaultValue- قيمة افتراضية إذا لم تكن القيم الأخرى true.

decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0)

مقارنة المساواة بين القيمة الشرطية field1 + 3 وcase1 field1. إذا كانت true، فإنها ترجع 1. إذا كانت false، فإنها تقارن المساواة بين field1 + 3 و field2. إذا كانت true، فإنها ترجع 2، وبخلاف ذلك، تُرجع 0.

أمثلة متعلقة بالمسارات

يمكن لأداة إعادة إنشاء المسارات استخدام المعادلات الممكنة للمسار في Arcade كما هو معروض في الجدول التالي:

وظيفةالتفسيرمثالالنتيجة

TrackStartTime()

حساب وقت بدء المسار بالملي ثانية من التاريخ.

استخدام مسار يبدأ في 2 يناير 2017.

TrackStartTime()

1483315200000

TrackDuration()

احتساب مدة المسار بالميللي ثانية من البداية حتى الدرجة الزمنية الحالية.

استخدام مسار يبدأ في 2 يناير 2017 والوقت الحالي في 4 يناير 2017.

TrackDuration()

172800000

TrackCurrentTime()

احتساب الدرجة الزمنية في مسار.

استخدام معلم يحدث في 3 يناير 2017 الساعة 09:00 ص.

TrackCurrentTime()

1483434000000

TrackIndex

إرجاع فهرس الوقت من المعلم الذي يتم احتسابه.

احتساب هذه القيمة على المعلم الأول في مسار.

TrackIndex

0

TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>)

إرجاع مصفوفة من القيم في الحقل المتوفر لفهرس الوقت المحدد. تتيح لك وظيفة النافذة التقديم والتأخير في الوقت. يتم تقييم التعبير في كل معلم في المسار.

  • المعلم الحالي في فهرس 0.
  • تمثل القيم الموجبة المعالم التي تحدث مستقبلاً، بعد القيمة الحالية. على سبيل المثال، الموضع 1 هو القيمة التالية في الصفيف.
  • تمثل الأرقام السالبة المعالم التي حدثت في الماضي، قبل المعلم السابق. على سبيل المثال، يعد -1 القيمة السابقة في الصفيف.

MyField قام بطلب قيم [10, 20, 30, 40, 50] بشكل متسلسل. يتم تقييم التعبير في كل معلم في المسار. يتم إرجاع النتائج لتشمل معلم البداية، وتستثني معلم النهاية.

مثال 1: TrackFieldWindow("MyField,-1,2)

مثال 2: TrackFieldWindow("MyField,-2,0)[0]

مثال 3: TrackFieldWindow("MyField,0,3)[2]

مثال 1: عند التقييم عند كل معلم، يعرض الجدول النتائج التالية:

المعلم المُقيَّم

النتيجة

10

[10,20]

20

[10, 20, 30]

30

[20،30،40]

40

[30,40,50]

50

[40, 50]

مثال 2: عند التقييم عند فهرس 2 (القيمة هي 30)، يتم إرجاع 10.

مثال 3: عند التقييم عند فهرس 2 (القيمة هي 30)، يتم إرجاع 50.

TrackGeometryWindow(<startIndex>, <endIndex>)

إرجاع صفيف قيم تمثل الشكل الهندسي لفهرس الوقت المحدد. تتيح لك وظيفة النافذة التقديم والتأخير في الوقت. يتم تقييم التعبير في كل معلم في المسار.

  • المعلم الحالي في فهرس 0.
  • تمثل القيم الموجبة المعالم التي تحدث مستقبلاً، بعد القيمة الحالية. على سبيل المثال، الموضع 1 هو القيمة التالية في الصفيف.
  • تمثل الأرقام السالبة المعالم التي حدثت في الماضي، قبل المعلم السابق. على سبيل المثال، يعد -1 القيمة السابقة في الصفيف.

MyField قام بطلب قيم [10, 20, 30, 40, 50] بشكل متسلسل. الشكل الهندسي للمعالم هو [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. يتم تقييم التعبير في كل معلم في المسار. يتم إرجاع النتائج لتشمل معلم البداية، وتستثني معلم النهاية.

مثال 1: TrackGeometryWindow(-1,2)

مثال 2: TrackGeometryWindow(0,1)[0] على مجموعة بيانات لخطوط متصلة

مثال 3: TrackGeometryWindow(0,1)[0] على مجموعة بيانات لخطوط متصلة

مثال 4: ابحث عن قيمة X للنقطة السابقة TrackGeometryWindow(-1,0)[0]["x"]

مثال 1: عند التقييم عند كل معلم، يعرض الجدول النتائج التالية:

المعلم المُقيَّم

النتيجة

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

مثال 2: يتم إرجاع خطوط متصلة بالتنسيق التالي: [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}]

مثال 3: يتم إرجاع مضلعات متصلة بالتنسيق التالي: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

مثال 4: تم التقييم عند فهرس 2 (القيمة هي 30): 2

TrackWindow(<value1>, <value2>)

إرجاع صفيف قيم تمثل الشكل الهندسي وكل البيانات الجدولية لفهرس الوقت المحدد. تتيح لك وظيفة النافذة التقديم والتأخير في الوقت.

  • المعلم الحالي في فهرس 0.
  • تمثل القيم الموجبة المعالم التي تحدث مستقبلاً، بعد القيمة الحالية. على سبيل المثال، الموضع 1 هو القيمة التالية في الصفيف.
  • تمثل الأرقام السالبة المعالم التي حدثت في الماضي، قبل المعلم السابق. على سبيل المثال، يعد -1 القيمة السابقة في الصفيف.

MyField قام بترتيب قيم [10, 20, 30, 40, 50] بالتعاقب، إضافة إلى حقول objectID وglobalID وinstant_datetime. الشكل الهندسي للمعالم هو [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. يتم تقييم التعبير في كل معلم في المسار. يتم إرجاع النتائج لتشمل معلم البداية، وتستثني معلم النهاية.

مثال 1: TrackWindow(-1,0)[0]

مثال 2: geometry(TrackWindow(-1,0)[0]["x"]

مثال 1: عند التقييم عند كل معلم، يعرض الجدول النتائج التالية:

المعلم المُقيَّم

النتيجة

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

مثال 2: تم التقييم عند فهرس 2 (القيمة هي 30): 2

استخدم تعبيرات المسار التالية لحساب المسافة والسرعة والتسارع على المسارات.

تُحسب جميع حسابات المسافة بالأمتار، والسرعة بالمتر في الثانية، والتسارع بالمتر في الثانية المربعة. يتم قياس المسافات باستخدام المسافات الجيوديسية.

وظيفةالتفسير

TrackCurrentDistance()

إجمالي المسافات المقطوعة بين الملاحظات من الملاحظة الأولى إلى الملاحظة الحالية.

TrackDistanceAt(القيمة)

إجمالي المسافات المقطوعة بين الملاحظات من الملاحظة الأولى إلى الملاحظة الحالية بالإضافة إلى القيمة المعطاة.

TrackDistanceWindow(value1, value2)

تبلغ المسافات بين القيمة الأولى (شاملة) والقيمة الأخيرة (استثنائية) في نافذة حول الملاحظة الحالية (0).

TrackCurrentSpeed()

السرعة بين الملاحظة السابقة والملاحظة الحالية.

TrackSpeedAt(value1)

سرعة الملاحظة بالنسبة إلى الملاحظة الحالية. على سبيل المثال، تمثل القيمة 2 سرعة ملاحظة ملاحظتين بعد الملاحظة الحالية.

TrackSpeedWindow(value1, value2)

تبلغ قيم السرعة بين القيمة الأولى (شاملة) والقيمة الأخيرة (استثنائية) في نافذة حول الملاحظة الحالية (0).

TrackCurrentAcceleration()

التسارع بين الملاحظة السابقة والملاحظة الحالية.

TrackAccelerationAt(value1)

تسارع الملاحظة بالنسبة إلى الملاحظة الحالية.

TrackAccelerationWindow(value1, value2)

تبلغ قيم التسارع بين القيمة الأولى (شاملة) والقيمة الأخيرة (استثنائية) في نافذة حول الملاحظة الحالية (0).

سوف تستخدم الأمثلة الحسابية للمسافة والسرعة والتسارع أمثلة من الصورة التالية:

صورة مثال التتبع بست نقاط

وظيفةنتيجة المثال

TrackCurrentDistance()

معرف النقطةالنتيجة (متر)

P1

0

P2

60

P3

80 + 60 = 140

P4

30 + 80 + 60 = 170

P5

35 + 30 + 80 + 60 = 205

P6

25 + 35 + 30 + 80 + 60 = 230

TrackDistanceAt(2)

معرف النقطةالنتيجة (متر)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

فارغ

P6

فارغ

TrackDistanceWindow(-1, 2)

معرف النقطةالنتيجة (متر)

P1

[0،60]

P2

[0، 60، 140]

P3

[60، 140، 170]

P4

[140، 170، 205]

P5

[170، 205، 230]

P6

[205، 230]

TrackCurrentSpeed()

معرف النقطةالنتيجة (متر/ثانية)

P1

0

P2

60/60

1

P3

80/60

1.33

P4

30/60

.5

P5

35/60

0.5833

P6

25/60

0.4167

TrackSpeedAt(2)

معرف النقطةالنتيجة (متر/ثانية)

P1

80/60

1.33

P2

30/60

.5

P3

35/60

0.5833

P4

25/60

0.4167

P5

فارغ

P6

فارغ

TrackSpeedWindow(-1, 2)

معرف النقطةالنتيجة (متر/ثانية)

P1

[0، 1]

P2

[0، 1، 1.3]

P3

[1، 1.3، 0.5]

P4

[1.3، 0.5، 0.583]

P5

[0.5، 0.583، -0.4167]

P6

[0.583، -0.4167]

TrackCurrentAcceleration()

معرف النقطةالنتيجة (متر/ثانية²)

P1

0

P2

0.0167

P3

0.0056

P4

-0.0014

P5

0.0014

P6

-0.0028

TrackAccelerationAt(2)

معرف النقطةالنتيجة (متر/ثانية²)

P1

0.0056

P2

-0.0014

P3

0.0014

P4

-0.0028

P5

فارغ

P6

فارغ

TrackAccelerationWindow(-1, 2)

معرف النقطةالنتيجة (متر/ثانية²)

P1

[0، 0.0167]

P2

[0, 0.0167, 0.0056 ]

P3

[0.0167, 0.0056 , -0.0014]

P4

[ 0.0056 , -0.0014, 0.0014]

P5

[-0.0014، 0.0014، -0.0028]

P6

[0.0014، -0.0028]