أكثر

جمع قيم نقطية واحدة وإخراج القيمة كرقم؟

جمع قيم نقطية واحدة وإخراج القيمة كرقم؟


لدي نقطة نقطية عائمة وقمت بتطبيق شرطي عليها من أجل استخراج القيم الموجبة فقط ، لذلك لا توجد "ثغرات" في البيانات النقطية. أنا ببساطة بحاجة إلى جمع القيم من هذه البيانات النقطية وإخراجها كرقم.

لقد صادفت هذا الموضوع ، وأنا متأكد من أن بعضكم سيتعرف عليه. هل طور أي شخص حل عملي؟ أنا أعمل في Arc10 وأستخدم ArcObjects إذا لزم الأمر.

تعديل: لقد قمت بتضمين نسخة VB.NET من كود @ Kirk's C #. يتم توفيرها كما هي ، ولكن يجب أن تكون نقطة انطلاق جيدة إذا لم تفي بالغرض منها بالفعل.

TestSumRaster () المسار الخافت كسلسلة = "D:  topo_modeling  topo_modeling  gis  usgs  ned_10m.img" Dim rds = OpenRaster (path) Dim sum As Double = SumRaster (rds) Debug.Print ("sum: {0} "، sum) End Sub Public Shared Function SumRaster (rasDs as IRasterDataset) كمزدوجة" تلخص كل نطاق في مجموعة البيانات النقطية Dim rasBandCol كـ IRasterBandCollection = DirectCast (rasDs ، IRasterBandCollection) Dim sum As Double = 0.0 'التكرار خلال كل نطاق مجموعة البيانات. بالنسبة إلى i As Integer = 0 إلى rasBandCol.Count - 1 sum + = SumBand (rasBandCol.Item (i)) وظيفة نهاية مجموع العائد التالي دالة مشتركة خاصة SumBand (rBand كـ IRasterBand) كمزدوجة تلخص كل كتلة في مجموع خافت للنطاق كـ Double = 0.0 'QI to IRawBlocks من IRasterBandCollection Dim rawBlocks = DirectCast (rBand، IRawBlocks)' حدد مخطط التجانب لمجموعة البيانات النقطية. البلاط الخافت = New Tile (rawBlocks.RasterInfo) 'NoData عبارة عن صفيف ، ولكن عادةً ما تحتوي على قيمة واحدة فقط. Debug.Print (rawBlocks.RasterInfo.NoData. [GetType] (). ToString ()) 'إنشاء كتلة البكسل. Dim pb = rawBlocks.CreatePixelBlock () 'كرر خلال كتل البكسل. بالنسبة إلى pbYcursor As Integer = tile.startY To tile.endY - 1 بالنسبة إلى pbXcursor As Integer = tile.startX To Tile.endX - 1 'احصل على كتلة البكسل. rawBlocks.ReadBlock (pbXcursor، pbYcursor، 0، pb) sum + = SumBlock (pb، pbXcursor، pbYcursor، rawBlocks.RasterInfo.NoData) التالي التالي لمجموع الإرجاع وظيفة النهاية الخاصة الوظيفة المشتركة SumBlock (pb as IPixelBlock، pbXcursor Ascursor Ascursor Ascursor) عدد صحيح ، noDataValues ​​As Object) كـ Double "لخص كل بكسل في pixelblock Dim sum As Double = 0.0" ضع كتلة البكسل في SafeArray للمعالجة. Dim safeArray = TryCast (DirectCast (pb.get_SafeArray (0)، System.Array)، System.Array) Dim noDataList = New List (Of [Single]) (DirectCast (noDataValues، [Single] ())) 'كرر خلال بكسل في كتلة البكسل. للصف كعدد صحيح = 0 إلى pb.Height - 1 بالنسبة إلى col As Integer = 0 إلى pb.Width - 1 Dim val As Object = safeArray.GetValue (row، col) Dim singVal = DirectCast (val، [Single]) 'Debug .Print (val.GetType (). Name) ؛ إذا لم يكن noDataList.Contains (singVal) ، إذن sum + = singVal End إذا التالي التالي إرجاع دالة مجموع النهاية

هنا رمز مقتبس من هذه العينة. ستحتاج إلى تعديله إذا كان المسح النقطي مزدوجًا (بدلاً من مفرد). تم اختباره باستخدام DEM تم تنزيله من هنا. سمعت في مكان ما أن C # أفضل الآن في التعامل مع التناقض. إذا كان الأمر كذلك ، فسأكون فضوليًا حول كيفية تعميم هذا الرمز لدعم إما النقطيات الدقيقة الفردية أو المزدوجة.

الفراغ العام الثابت TestSumRaster () {string path = @ "D:  topo_modeling  topo_modeling  gis  usgs  ned_10m.img"؛ var rds = OpenRaster (مسار) ؛ مجموع مزدوج = SumRaster (rds) ؛ Debug.Print ("sum: {0}"، sum) ؛ } SumRaster المزدوج العام (IRasterDataset rasDs) {// تلخيص كل نطاق في مجموعة بيانات نقطية IRasterBandCollection rasBandCol = (IRasterBandCollection) rasDs ؛ حاصل جمع مضاعف = 0.0 ؛ // (لا يمكنني التفكير في حالة تحتاج فيها إلى جمع أكثر من نطاق واحد) // كرر خلال كل نطاق من مجموعة البيانات. لـ (int i = 0 ؛ i ((مفرد []) noDataValues) ؛ // كرر خلال البكسل في كتلة البكسل. لـ (int row = 0؛ row 

هل يمكنك تجربة شبكة معروفة ... إليك اقتراح للتنفيذ باستخدام Python و numpy و arcpy.

>>> استيراد arcpy >>> npArray = arcpy.RasterToNumPyArray ("c: / temp / x") >>> استيراد numpy >>> print numpy.sum (npArray) 45763093 >>>

تحرير تعليقات إضافية على ما سبق.

عليك توخي الحذر عند التعامل مع الشبكات التي تحتوي على nodata. ضع في اعتبارك شبكة صغيرة بالقيم التالية:

1 2 3

-- 5 --

7 8 --

حيث - يمثل nodata. على سبيل المثال ، إذا تم تحويل الشبكة أعلاه إلى مصفوفة عددية ، فسيتم جمعها:

>>> z = arcpy.RasterToNumPyArray ("c: / temp / small_grid") >>> np.sum (z) nan

من الواضح أن النتيجة غير متوقعة.
إذا تم تحويل المصفوفة إلى مصفوفة مقنعة ، فسيكون الجمع صحيحًا.

>>> z1 = np.ma.masked_array (z، np.isnan (z)) >>> np.sum (z1) 26.0

إنشاء قيمة واحدة نقطية (CreateConstantRaster).

احسب مجموع المنطقة (ZonalStatisticsAsTable).

اقرأ العمود "SUM" لجدول الصف الفردي الناتج.


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

إدخال: نقطية نقطية عائمة (يمكن أن تتضمن ثقوبًا لا تحتوي على بيانات)

1) تحويل المدخلات النقطية إلى عدد صحيح

2) تحويل النقطية الصحيحة إلى مضلع

3) إجراء إحصائيات المنطقة على البيانات النقطية المدخلة (باستخدام SUM أو ALL)

4) باستخدام ArcObjects ، اقرأ عمود SUM وأضف كل القيمة للحصول على مجموع البيانات النقطية

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

شكرًا على كل مساهماتك - لقد ساعدتني حقًا في معرفة هذه المهمة.


أدوات تحليل البيانات النقطية المفردة III

منقي يظهر في التحليل / السياق وفي قوائم التحليل / معالجة الصور. يمكن تطبيقها على مجموعة متنوعة من المهام المختلفة. قد تجد الأسماء التفاف النافذة المتجولة أو الفلتره أيضا لوظائفها. ضمن مفهوم نمذجة رسم الخرائط، التي أنشأها D. TOMLIN * ، الوحدة النمطية تشير إلى عائلة عوامل الاتصال. في سياق المشغلين البؤريين ، انتبه إلى NDC- الخيار (= عدد الفئات المختلفة) داخل نمط من حيث صلتها مجموعة متنوعة. المزيد من الوظائف البؤرية - كل تلك الموجودة في PATTERN أيضًا - يمكن العثور عليها في الوظيفة الملمس.

يقبل FILTER صورة الإدخال ويحسب خلايا الصورة الناتجة كدالة في المنطقة المجاورة لها. في الإدريسي ، يتم تحديد الجوار بنواة 3x3 خلايا (نافذة) تركز على الخلية المركزية. للحصول على فكرة عن كيفية عمل ذلك ، تخيل أن هذه النواة "تتجول" فوق إدخال البيانات النقطية خلية تلو الأخرى. الآن يتم ضرب بكسل التركيز وجيرانه الثمانية بالقيم المخزنة في النواة ، ثم يتم تلخيصها ويتم كتابة النتيجة إلى البكسل المقابل في صورة الإخراج:

  • يعني (= تمرير منخفض): 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 (= FocalMean)، يسمح بنواة 3 × 3 و 5 × 5 و 7 × 7
  • Gaussian ، يسمح بنواة 5 × 5 و 7 × 7
  • متوسط ​​، يسمح بنواة 3 × 3 و 5 × 5
  • صندوق التكيف ، يسمح بنواة 3x3 و 5x5 و 7x7
  • الوضع (= FocalMajority)، يسمح بنواة 3 × 3 و 5 × 5 و 7 × 7
  • تحسين حافة لابلاسيان: -1/9 -1/9 -1/9 -1/9 +17/9 -1/9 -1/9 -1/9 -1/9 ، يسمح بنواة 3x3 و 5x5 و 7x7
  • تمرير عالي: -1/9 -1/9 -1/9 -1/9 +8/9 -1/9 -1/9 -1/9 -1/9 ، 3x3
  • كاشف حواف سوبل ، 3x3

قد تضطر إلى التعامل مع الصور "الصاخبة" لسبب أو لآخر - في كثير من الأحيان ستشعر بالقلق حيال ذلك أثناء معالجة الصور ، على سبيل المثال تعميم التصنيفات الأولية. ولكن ستكون هناك حالات في GIS ، حيث يكون من المناسب تطبيق مرشح تمرير منخفض ، وتحقيق نتائج "سلسة" إلى حد ما. تعد DEMs المقحمة مثالًا شائعًا. يعتمد اختيار نوع الفلتر بشدة على طبيعة بياناتك

دعونا نتعامل مع DEM بالفلتر. يعرض القطع الأثرية غير المرغوب فيها التي تم إنشاؤها من خلال ضم اثنين من DEMs من مصادر مختلفة. توجد وحدات بكسل عشوائية بقيمة 0 (صفر) منتشرة في جميع أنحاء DEM. كيف يمكننا إزالتها؟ هناك أكثر من طريقة واحدة.

- أ يعني مرشح بالتأكيد لن يؤدي إلى نتائج مرضية ، حيث أن النطاق داخل نواة 3x3 حول وحدات البكسل الخاطئة مرتفع جدًا. استخدم المرشحات المتوسطة ، على سبيل المثال ل ناعم ديم.
- ال مرشح متوسط يقال إنه يزيل التشويش من الصور بشكل صحيح - افحص التمثيل الرسومي للصور المختلفة أيضًا.
- أ مرشح الوضع يبدو أنه الخيار الأفضل لمشكلتنا.

يُظهر الرسم أدناه DEM صاخبًا متوسطًا ومتوسطًا ووضعًا مصفيًا (آمل أن تتعرف على النقاط الصغيرة). diffmean و diffmedi و diffmode هي صور مختلفة (DEM صاخبة مطروحًا منها مخرجات مفلترة - تم إجراؤها باستخدام OVERLAY) للتحقق مما تم تصفيته. يحتوي diffmode على بكسلات الضوضاء نفسها:

كما هو مذكور أعلاه ، يتم تطبيق التنعيم على الصور ذات المظهر "الصاخب" ، ولكن ماذا لو لم يتم توزيع الضوضاء بشكل متجانس على الصورة؟ قد يُظهر DEM عددًا قليلاً من وحدات البكسل الخاطئة مثل التقاط ثقوب في جزء من الصورة. لذلك ليس في نيتك تجانس الصورة بأكملها وبالتالي فقد المعلومات دون داع.

في مثل هذه الحالة مرشح الصندوق التكيفي سيكون خيارًا جيدًا: يمكنك إعطاء قيمتين عتبيتين - واحدة للانحراف المعياري المحلي (محسوبة من القيم داخل نافذة النواة المتجولة 3 × 3 أو 5 × 5 أو 7 × 7) والأخرى باعتبارها الاختلاف المقبول بين الخلية المركزة ومتوسط ​​الجيران . علاوة على ذلك ، فإنك تقرر الإجراء الذي يجب اتخاذه في حالة تجاوز كل من الانحراف المعياري وحدود الفرق (استبدال وحدات البكسل هذه بصفر أو بالمعدل المحلي). يتم ترك جميع وحدات البكسل الأخرى أصلية. من خلال ذلك سيتم مطابقة القيم المتغيرة للغاية فقط.

يميز بين حبات الفلتر ، ذلك تحسين وتلك كشف و "استخراج" مناطق التغيير المفاجئ. الأولى لها قيم نافذة متجولة تصل إلى 1 ، لذلك في حالة وجود 9 قيم مماثلة في البيانات النقطية ، لن يحدث أي تغيير في الإخراج. إذا اختلفت قيمة واحدة على الأقل عن القيم الأخرى ، فإن هذا "التباين" يحصل  المحسن.
مجموع مرشحات اكتشاف الحواف (تمرير عالي) يصل إلى 0 (صفر) ، لذلك يتم تعيين الخلايا المحاطة بجيران لها نفس القيم على 0 (صفر):

يكتشف مرشح التمرير العالي بشكل خاص بعض المخالفات في DEM ، والتي لم تظهر في الأصل. تم تجميع DEM معًا من مصادر مختلفة ووجدنا خطًا!

الوحدة الملمس (منذ IfW 2) لديه القدرة على القيام بتحليل Edge من خلال تطبيق نوى مرشح اتجاهي 3x3 على صورة الإدخال. ستخرج ما يصل إلى 8 صور (N و NE و E و SE و S و SW و W و NW).

يمكن استخدام نواة 3x3 الاختيارية التي يمكن تعريفها من قبل المستخدم في الإنشاء مرشحات الاتجاه. اعتمادًا على مجموع kernel الإجمالي ، يمكنهم تحسين أو اكتشاف الهياكل الاتجاهية في الصور التي تمت تصفيتها. توضح بعض الأمثلة هذا المبدأ:

ينير مرشح الكشف NE-SW (= القيم العالية) حواف NE-SW (الانسيابية ،.) ، المظاهر السوداء (= القيم المنخفضة والسالبة) تشير إلى الأقطار القطرية.

آخر تعديل: | تعليقات إلى Eric J. LORUP idrisi Resource Center idrisi gis idrisi gis idrisi Resource center idrisi gis idrisi gis idrisi Resource center idrisi gis idrisi gis idrisi Resource center idrisi gis idrisi gis idrisi Resource center idrisi gis idrisi gis idrisi Resource Center idrisi gris idrisi مركز إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس إدريسي إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس إدريسي مركز موارد إدريسي جيس إدريسي جيس


تحسين وظيفة نقطية :: calc - الوظيفة 1 مقابل 2 - R.

أنا أعمل على حساب نقطية جديدة (خرج ras) بناءً على نقطتين (ras إدخال) و "طبقة" نقطية. تشير قيم Stratum النقطية (من 1 إلى 4) إلى الصفوف في إطارات بيانات التحيز والوزن. تم استخدام قيمة Strata '4' لملء أي "NA" في خطوط Strata النقطية ، وإلا فإن الوظيفة ستتعطل. المدخلات التالية مطلوبة.

الوظيفة التالية (الانصهار) تسمح لي بإضافة قيمة "تحيز" إلى البيانات النقطية للإدخال. بعد إضافة التحيز ، سيتم ضرب قيمتي الخلايا النقطية المدخلة المصححة بقيمة وزن ، اعتمادًا على الطبقة التي تنتمي إليها.

سيتم جمع ناتج قيمتي الإدخال 2 النقطية وإعادتها باستخدام "احسب".

المشكلة في الوظيفة المذكورة أعلاه هي:

إذا كان أحد النقطيات يحتوي على NA ، فستكون النتيجة NA لتلك الخلية

ما أود الحصول عليه هو:

  • وظيفة تتطلب أي عدد النقطيات المدخلة
  • يمكنه العمل بقيم NA (يتجاهل قيم NA في البيانات النقطية)
  • إعادة ضبط "الوزن" إذا كان للخطوط النقطية قيمة NA ، بحيث تضيف قيم الوزن المتبقية ما يصل إلى 1

تقوم الوظيفة التالية بما أحتاج إليه ، ولكنها أبطأ بكثير من الوظيفة المذكورة أعلاه في البيانات النقطية الكبيرة. يقوم Fusion بعمل ذلك في 10 ثوانٍ ، وتحتاج وظيفة fusion2 أدناه إلى 8 ساعات على خطوط المسح الكبيرة.


تعرف على المزيد حول وظيفة LAS To Raster

Lidar هو مستشعر نشط يرسل نبضة ليزر بتردد وطول موجي معين. يتم امتصاص هذا النبض أو انعكاسه بواسطة أسطح مختلفة ويستقبله المستشعر. يمكن إرجاع نبضة واحدة من الليزر كإشارات متعددة لأنها تنعكس على أجسام على ارتفاعات مختلفة على الأرض أو فوقها ، مما يؤدي إلى عودة النبضات إلى المستشعر في أوقات مختلفة. لذلك ، يمكن استخدام نوع الإرجاع للتمييز بين المرتجعات الأرضية والعائدات الأخرى ، مثل مظلة الشجرة. تتيح لك وظيفة LAS To Raster تحديد قيمة إرجاع واحدة أو أكثر. مقارنة توقيت وكثافة إشارات العودة.

يتم تحديد التصنيفات للنقاط بواسطة موفر ملفات LAS. يمكنك تحديد أي لإضافة جميع النقاط بغض النظر عن تصنيفها يمكنك أيضًا تحديد أكثر من نقطة. أنواع التصنيف من مواصفة LAS 1.3 .pdf هي أي ، (0) لم يتم تصنيفها أبدًا ، (1) غير مصنف ، (2) أرضي ، (3) نباتات منخفضة ، (4) نباتات متوسطة ، (5) نباتات عالية ، (6) مبنى ، (7) نقطة منخفضة صاخبة ، ( 8) نموذج Key Point ، (9) ماء ، (10) سكة ، (11) سطح طريق ، (12) محجوز 12 ، (13) واقي سلكي ، (14) موصل سلكي ، (15) برج نقل ، (16) هيكل سلكي موصل ، (17) سطح جسر ، و (18) ضوضاء عالية.

كثافة بيانات LAS هي مقياس يتم جمعه لكل نقطة لقوة عودة نبضة الليزر التي تولد النقطة. إنه جزء من مخروط الضوء الذي ينعكس مرة أخرى إلى المستوى. وتعتمد قيمته على جزء المخروط الذي انعكس للخلف (على سبيل المثال ، السقف بنسبة 100 في المائة ، بينما الورقة أقل بكثير) وانعكاس السطح الذي يضربه. إذا اصطدم المخروط بمرآة بزاوية ، فلن يعود أي شيء. تُستخدم الكثافة كعامل مساعد في اكتشاف الميزات واستخراجها ، وفي تصنيف نقاط الليدار ، وكبديل للصور الجوية عندما لا يتوفر أي منها. إذا كانت بيانات lidar الخاصة بك تتضمن قيم كثافة ، فيمكنك إنشاء صور منها تشبه الصور الجوية بالأبيض والأسود.


المعلمات

مجموعة البيانات التي تحدد المناطق.

يمكن تحديد المناطق بواسطة عدد صحيح نقطي أو طبقة معالم.

الحقل الذي يحتوي على القيم التي تحدد كل منطقة.

يمكن أن يكون عددًا صحيحًا أو حقل سلسلة لمجموعة بيانات المنطقة.

البيانات النقطية التي تحتوي على القيم المراد حساب الإحصاء بناءً عليها.

يحدد النوع الإحصائي المطلوب حسابه.

  • يعني - سيتم حساب متوسط ​​جميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الأغلبية - سيتم حساب القيمة التي تحدث غالبًا لجميع الخلايا الموجودة في القيمة النقطية والتي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الحد الأقصى - سيتم حساب أكبر قيمة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الوسيط - سيتم حساب القيمة المتوسطة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الحد الأدنى - سيتم حساب أصغر قيمة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الأقلية - سيتم حساب القيمة الأقل تكرارًا لجميع الخلايا الموجودة في القيمة النقطية والتي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • النسبة المئوية - سيتم حساب النسبة المئوية لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج. يتم احتساب النسبة المئوية التسعين بشكل افتراضي. يمكنك تحديد قيم أخرى (من 0 إلى 100) باستخدام معلمة قيمة النسبة المئوية.
  • النطاق - سيتم حساب الفرق بين أكبر وأصغر قيمة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الانحراف المعياري - سيتم حساب الانحراف المعياري لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • المجموع - سيتم حساب القيمة الإجمالية لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • Variety - سيتم حساب عدد القيم الفريدة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.

يحدد ما إذا كان سيتم تجاهل قيم NoData في إدخال القيمة في نتائج المنطقة التي تقع ضمنها.

  • محدد - داخل أي منطقة معينة ، سيتم استخدام الخلايا التي لها قيمة في قيمة الإدخال النقطية فقط في تحديد قيمة الإخراج لتلك المنطقة. سيتم تجاهل خلايا NoData في القيمة النقطية في الحساب الإحصائي. هذا هو الافتراضي.
  • غير محدد - داخل أي منطقة معينة ، إذا كانت خلايا NoData موجودة في القيمة النقطية ، فلن يتم تجاهلها ويشير وجودها إلى عدم وجود معلومات كافية لإجراء عمليات حسابية إحصائية لجميع الخلايا في تلك المنطقة. وبالتالي ، ستتلقى المنطقة بأكملها قيمة NoData على البيانات النقطية للإخراج.

يحدد كيفية معالجة البيانات النقطية للإدخال إذا كانت متعددة الأبعاد.

  • غير محدد - سيتم حساب الإحصائيات من الشريحة الحالية لمجموعة بيانات الإدخال متعددة الأبعاد. هذا هو الافتراضي.
  • تم التحديد - سيتم حساب الإحصائيات لجميع أبعاد مجموعة البيانات متعددة الأبعاد المدخلة.

النسبة المئوية لحساب. القيمة الافتراضية هي 90 ، مما يشير إلى النسبة المئوية التسعين.

يمكن أن تتراوح القيم من 0 إلى 100. النسبة المئوية 0 هي أساسًا مكافئة للحد الأدنى من الإحصاء ، والمئين المئوي 100 مكافئ للحد الأقصى. ستنتج القيمة 50 أساسًا نفس نتيجة الإحصاء الوسيط.

يتوفر هذا الخيار فقط إذا تم تعيين معلمة نوع الإحصائيات على النسبة المئوية.

يحدد طريقة الاستيفاء المئوي المراد استخدامه عندما يكون عدد القيم من البيانات النقطية للإدخال زوجيًا.

  • الاكتشاف التلقائي - إذا كانت قيمة الإدخال النقطية من نوع بكسل عدد صحيح ، يتم استخدام أقرب طريقة. إذا كانت قيمة الإدخال النقطية من نوع بكسل النقطة العائمة ، يتم استخدام الأسلوب الخطي. هذا هو الافتراضي.
  • الأقرب - يتم استخدام أقرب قيمة متاحة إلى النسبة المئوية المرغوبة. في هذه الحالة ، يكون نوع البكسل الناتج هو نفسه نوع قيمة الإدخال النقطية.
  • خطي - يتم استخدام المتوسط ​​المرجح للقيمتين المحيطتين من النسبة المئوية المرغوبة. في هذه الحالة ، يكون نوع بكسل الإخراج هو النقطة العائمة.

قيمة الإرجاع

الناتج النقطي لإحصاءات المنطقة.

مجموعة البيانات التي تحدد المناطق.

يمكن تحديد المناطق بواسطة عدد صحيح نقطي أو طبقة معالم.

الحقل الذي يحتوي على القيم التي تحدد كل منطقة.

يمكن أن يكون عددًا صحيحًا أو حقل سلسلة لمجموعة بيانات المنطقة.

البيانات النقطية التي تحتوي على القيم المراد حساب الإحصاء بناءً عليها.

يحدد النوع الإحصائي المراد حسابه.

  • MEAN - سيتم حساب متوسط ​​جميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • MAJORITY - سيتم حساب القيمة التي تحدث غالبًا لجميع الخلايا الموجودة في القيمة النقطية والتي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الحد الأقصى - سيتم حساب أكبر قيمة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الوسيط - سيتم حساب القيمة المتوسطة لجميع الخلايا في قيمة البيانات النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الحد الأدنى - سيتم حساب أصغر قيمة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • الأقلية - سيتم حساب القيمة الأقل تكرارًا لجميع الخلايا الموجودة في القيمة النقطية والتي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • PERCENTILE - سيتم حساب النسبة المئوية لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج. يتم احتساب النسبة المئوية التسعين بشكل افتراضي. يمكنك تحديد قيم أخرى (من 0 إلى 100) باستخدام معلمة قيمة النسبة المئوية.
  • النطاق - سيتم حساب الفرق بين أكبر وأصغر قيمة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • STD - سيتم حساب الانحراف المعياري لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • SUM - سيتم حساب القيمة الإجمالية لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.
  • VARIETY - سيتم حساب عدد القيم الفريدة لجميع الخلايا في القيمة النقطية التي تنتمي إلى نفس المنطقة مثل خلية الإخراج.

يحدد ما إذا كان سيتم تجاهل قيم NoData في إدخال القيمة في نتائج المنطقة التي تقع ضمنها.

  • البيانات - داخل أي منطقة معينة ، سيتم استخدام الخلايا التي لها قيمة في قيمة الإدخال النقطية فقط في تحديد قيمة الإخراج لتلك المنطقة. سيتم تجاهل خلايا NoData في القيمة النقطية في الحساب الإحصائي. هذا هو الافتراضي.
  • NODATA - داخل أي منطقة معينة ، إذا كانت خلايا NoData موجودة في القيمة النقطية ، فلن يتم تجاهلها ويشير وجودها إلى عدم وجود معلومات كافية لإجراء حسابات إحصائية لجميع الخلايا في تلك المنطقة. وبالتالي ، ستتلقى المنطقة بأكملها قيمة NoData على البيانات النقطية للإخراج.

يحدد كيفية معالجة البيانات النقطية للإدخال إذا كانت متعددة الأبعاد.

  • CURRENT_SLICE - سيتم حساب الإحصائيات من الشريحة الحالية لمجموعة بيانات الإدخال متعددة الأبعاد. هذا هو الافتراضي.
  • ALL_SLICES - سيتم حساب الإحصائيات لجميع أبعاد مجموعة البيانات متعددة الأبعاد المدخلة.

النسبة المئوية لحساب. القيمة الافتراضية هي 90 ، مما يشير إلى النسبة المئوية التسعين.

يمكن أن تتراوح القيم من 0 إلى 100. النسبة المئوية 0 هي أساسًا مكافئة للحد الأدنى من الإحصاء ، والمئين المئوي 100 مكافئ للحد الأقصى. ستنتج القيمة 50 أساسًا نفس نتيجة الإحصاء الوسيط.

لا يتم دعم هذا الخيار إلا إذا تم تعيين معلمة Statistics_type على PERCENTILE.

يحدد طريقة الاستيفاء المئوي المراد استخدامه عندما يكون عدد القيم من البيانات النقطية للإدخال زوجيًا.

  • AUTO_DETECT - إذا كانت قيمة الإدخال النقطية من نوع بكسل عدد صحيح ، يتم استخدام أقرب طريقة. إذا كانت قيمة الإدخال النقطية من نوع بكسل النقطة العائمة ، يتم استخدام طريقة LINEAR. هذا هو الافتراضي.
  • أقرب - يتم استخدام أقرب قيمة متاحة إلى النسبة المئوية المرغوبة. في هذه الحالة ، يكون نوع بكسل الإخراج هو نفسه نوع قيمة الإدخال النقطية.
  • LINEAR - يتم استخدام المتوسط ​​المرجح للقيمتين المحيطتين من النسبة المئوية المرغوبة. في هذه الحالة ، يكون نوع بكسل الإخراج هو النقطة العائمة.

قيمة الإرجاع

الناتج النقطي لإحصاءات المنطقة.

عينة التعليمات البرمجية

يحدد هذا المثال لكل منطقة نطاق قيم الخلية في قيمة إدخال البيانات النقطية.

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


42 إجابات 42

ملاحظة: تحتوي بعض إصدارات awk على بعض السلوكيات الغريبة إذا كنت ستضيف أي شيء يتجاوز 2 ^ 31 (2147483647). انظر التعليقات لمزيد من الخلفية. أحد الاقتراحات هو استخدام printf بدلاً من الطباعة:

يدمج اللصق عادةً أسطرًا من ملفات متعددة ، ولكن يمكن أيضًا استخدامه لتحويل الأسطر الفردية من الملف إلى سطر واحد. تسمح لك علامة المحدد بتمرير معادلة من نوع x + x إلى bc.

بدلاً من ذلك ، عند الأنابيب من stdin ،

النسخة أحادية السطر في بايثون:

أود أن أضع تحذيرًا كبيرًا على الحل المعتمد بشكل عام:

هذا لأنه في هذا النموذج يستخدم awk تمثيل عدد صحيح موقعة 32 بت: سوف يتجاوز المبالغ التي تتجاوز 2147483647 (أي 2 ^ 31).

الإجابة الأكثر عمومية (لتجميع الأعداد الصحيحة) ستكون:

لاحظ أن الأرقام السالبة المسبوقة بعلامة الطرح يجب أن تُترجم إلى العاصمة ، لأنها تستخدم البادئة بدلاً من البادئة لذلك. على سبيل المثال ، عبر tr '-' '_' | العاصمة -f- -e '. ".

تحرير: نظرًا لأن هذه الإجابة حصلت على الكثير من الأصوات "من أجل الغموض" ، فإليك شرح مفصل:

  1. حدد "add_top_of_stack" على النحو التالي:
    1. أزل القيمتين العلويتين من المكدس وأضف النتيجة مرة أخرى
    2. إذا كان المكدس يحتوي على قيمتين أو أكثر ، فقم بتشغيل "add_top_of_stack" بشكل متكرر

    لفهم بساطة وقوة العاصمة حقًا ، إليك نص Python النصي الذي يعمل على تنفيذ بعض الأوامر من dc وينفذ إصدار Python للأمر أعلاه:

    لقد أجريت اختبارًا سريعًا للإجابات الحالية التي

    • استخدم الأدوات القياسية فقط (آسف لأشياء مثل lua أو صاروخ) ،
    • هي خطوط واحدة حقيقية ،
    • قادرون على إضافة كميات ضخمة من الأعداد (100 مليون) ، و
    • سريعة (لقد تجاهلت تلك التي استغرقت أكثر من دقيقة).

    لقد أضفت دائمًا الأرقام من 1 إلى 100 مليون والتي كانت قابلة للتنفيذ على جهازي في أقل من دقيقة لعدة حلول.

    بايثون

    لصق و أمبير

    نفد هذا من الذاكرة على جهازي. عملت لنصف حجم المدخلات (50 مليون رقم):

    لذا أعتقد أن الأمر كان سيستغرق

    35s لـ 100 مليون رقم.

    فقط من أجل المقارنة ، قمت بتجميع الإصدار C واختبرته أيضًا ، فقط لأخذ فكرة عن مدى بطء الحلول المستندة إلى الأدوات.

    استنتاج

    C هي بالطبع الأسرع بـ 8 ثوانٍ ، لكن يضيف حل Pypy مقدارًا ضئيلًا جدًا من 30٪ إلى 11 ثانية. ولكن لكي نكون منصفين ، فإن Pypy ليس معيارًا تمامًا. معظم الأشخاص لديهم CPython مثبتًا فقط وهو أبطأ بشكل ملحوظ (22 ثانية) ، تمامًا مثل حل Awk الشهير.

    أسرع حل يعتمد على الأدوات القياسية هو بيرل (15 ثانية).

    حل BASH ، إذا كنت تريد أن تجعل هذا أمرًا (على سبيل المثال ، إذا كنت بحاجة إلى القيام بذلك بشكل متكرر):

    يمكنك استخدام num-utils ، على الرغم من أنها قد تكون مبالغة بالنسبة لما تحتاجه. هذه مجموعة من البرامج لمعالجة الأرقام في الغلاف ، ويمكنها القيام بالعديد من الأشياء الرائعة ، بما في ذلك بالطبع إضافتها. إنها قديمة بعض الشيء ، لكنها لا تزال تعمل ويمكن أن تكون مفيدة إذا كنت بحاجة إلى القيام بشيء أكثر.

    ولكن تنفد الذاكرة للمدخلات الكبيرة.

    الأعمال التالية في باش:

    إذا كانت بيانات الإدخال غير منتظمة ، مع وجود مسافات وعلامات تبويب في أماكن غريبة ، فقد يؤدي ذلك إلى إرباك datamash ، ثم استخدم إما مفتاح التبديل -W:

    . أو استخدم tr لتنظيف المسافة البيضاء:

    إذا كان الإدخال كبيرًا بدرجة كافية ، فسيكون الإخراج في شكل علمي.

    لتحويل ذلك إلى رقم عشري ، استخدم خيار التنسيق:

    أدرك أن هذا سؤال قديم ، لكني أحب هذا الحل بدرجة كافية لمشاركته.

    إذا كان هناك اهتمام ، فسأشرح كيف يعمل.

    لا يمكن تجنب إرسال هذا ، فهو الأسلوب الأكثر عمومية لهذا السؤال ، يرجى التحقق من:

    يمكن العثور عليها هنا ، لقد كنت OP وأتت الإجابة من الجمهور:

    وها هي مزاياها الخاصة أكثر awk, قبل الميلاد والأصدقاء:

    • انها لا تعتمد على التخزين المؤقت وبالتالي لا تختنق بمدخلات طويلة حقًا.
    • لا يعني أي دقة معينة -أو حجم صحيح لهذه المسألة- حدود - مرحبًا مستخدمي AWK!
    • لا حاجة لرمز مختلف ، إذا كانت هناك حاجة لإضافة أرقام الفاصلة العائمة ، بدلاً من ذلك.

    بيور باش وبخط واحد :-)

    لغة بيرل نقية بديلة ، يمكن قراءتها إلى حد ما ، ولا توجد حزم أو خيارات مطلوبة:

    يمكنك القيام بذلك باستخدام لغة الثعبان ، إذا كنت تشعر بالراحة:

    أشار سيباستيان إلى نص مكتوب بخط واحد:

    أو يمكنك كتابة الأرقام في سطر الأوامر:

    ومع ذلك ، فإن هذا الملف يبتلع الملف لذا فليس من الجيد استخدامه على الملفات الكبيرة. انظر إجابة j_random_hacker التي تتجنب الالتهام.

    يجب أن يعمل ما يلي (بافتراض أن رقمك هو الحقل الثاني في كل سطر).

    SCC هو مقيم مقتطفات C ++ في موجه الأوامر

    نعتذر مقدمًا عن قابلية قراءة backticks ("") ، لكن هذه تعمل في قذائف بخلاف bash وبالتالي فهي أكثر قابلية للصق. إذا كنت تستخدم صدفة تقبلها ، فإن تنسيق $ (الأمر) يكون أكثر قابلية للقراءة (وبالتالي قابل للتصحيح) من الأمر `` command. لذلك لا تتردد في التعديل من أجل سلامتك.

    لديّ وظيفة بسيطة في bashrc تستخدم awk لحساب عدد من عناصر الرياضيات البسيطة

    سيفعل هذا + ، - ، * ، / ، ^ ،٪ ، الجذر التربيعي ، الخطيئة ، جيب التمام ، الأقواس. (وأكثر اعتمادًا على إصدار awk الخاص بك). يمكنك حتى أن تتوهم باستخدام printf وتنسيق إخراج الفاصلة العائمة ، ولكن هذا كل ما أحتاجه عادةً

    لهذا السؤال بالذات ، سأفعل هذا بكل بساطة لكل سطر:

    لذا فإن كتلة التعليمات البرمجية لتلخيص كل سطر ستبدو كما يلي:

    هذا إذا كنت تريد فقط جمعها سطراً بسطر. ولكن ليصبح المجموع كل رقم في ملف البيانات


    نماذج البيانات المكانية

    الهياكل المركبة

    تم تنفيذ كل من نماذج البيانات النقطية والمتجهية في بنية ذات طبقات. نماذج البيانات النقطية مقيدة بطبيعتها بطبقة واحدة. بالنسبة لنماذج بيانات المتجه ، يتم تحديد الطبقة الفردية بواسطة كل من الموضوع (على سبيل المثال ، ملكية الأرض أو مناطق التسليم أو الدوائر الانتخابية) والهندسة (على سبيل المثال ، النقاط أو الخطوط أو المضلعات). على سبيل المثال ، قد يتكون المشهد الحضري من مناطق سكنية وتجارية وصناعية (مضلعات) وشوارع (خطوط) وأفراد (نقاط). في العديد من حزم برامج نظم المعلومات الجغرافية ، يجب إعداد هذا المشهد في ثلاث طبقات ، مضلع ، وخط ، وطبقة نقطية ، على التوالي ، على الرغم من أن جميعها تنتمي إلى سمة واحدة. It is theoretically and technically feasible to develop a ‘composite’ structure to support the representation of different geometries or themes in a single layer. For the example above, all three types of geometric features can be presented in a single layer to support modeling and analysis. Computing methods, such as object-oriented and component-based modeling, can support the implementation of the composite structure. The theoretical design of such composite structure, on the other hand, has been discussed in the literature only recently.

    A multigeometry and multitheme ‘object fields’ has been developed for environmental management recently. Vector data of various geometries and themes are integrated with a continuous raster field of a different theme for comprehensive modeling. Furthermore, the nine-intersection system is a notable theoretical development to support the complex topology between points, lines, and polygons. The implementation of a composite structure requires sophisticated vector databases. Continued theoretical development in the research community and the technical development from the GIS software industry are critical for advancing this composite structure or any other more advanced spatial data models.


    بناء الجملة

    The raster datasets that you want to merge together. The inputs must have the same number of bands and same bit depth.

    The path to contain the raster dataset. The path can be to a folder or geodatabase.

    The name of the dataset you are creating.

    When storing the raster dataset in a file format, you need to specify the file extension:

    • .bil —Esri BIL
    • .bip —Esri BIP
    • .bmp —BMP
    • .bsq —Esri BSQ
    • .dat —ENVI DAT
    • .gif —GIF
    • .img —ERDAS IMAGINE
    • .jpg —JPEG
    • .jp2 —JPEG 2000
    • .png —PNG
    • .tif —TIFF
    • no extension for Esri Grid

    When storing a raster dataset in a geodatabase, do not add a file extension to the name of the raster dataset.

    When storing your raster dataset to a JPEG file, a JPEG 2000 file, a TIFF file, or a geodatabase, you can specify a Compression Type and Compression Quality in the Environment Settings.

    The coordinate system for the output raster dataset. If this is not specified, the Output Coordinate System environment setting will be used.

    The bit depth, or radiometric resolution of the mosaic dataset.

    If you do not set the pixel type, the 8-bit default will be used and your output may be incorrect.

    • 1_BIT —A 1-bit unsigned integer. The values can be 0 or 1.
    • 2_BIT —A 2-bit unsigned integer. The values supported can be from 0 to 3.
    • 4_BIT —A 4-bit unsigned integer. The values supported can be from 0 to 15.
    • 8_BIT_UNSIGNED —An unsigned 8-bit data type. The values supported can be from 0 to 255.
    • 8_BIT_SIGNED —A signed 8-bit data type. The values supported can be from -128 to 127.
    • 16_BIT_UNSIGNED —A 16-bit unsigned data type. The values can range from 0 to 65,535.
    • 16_BIT_SIGNED —A 16-bit signed data type. The values can range from -32,768 to 32,767.
    • 32_BIT_UNSIGNED —A 32-bit unsigned data type. The values can range from 0 to 4,294,967,295.
    • 32_BIT_SIGNED —A 32-bit signed data type. The values can range from -2,147,483,648 to 2,147,483,647.
    • 32_BIT_FLOAT —A 32-bit data type supporting decimals.
    • 64_BIT —A 64-bit data type supporting decimals.

    The cell size for the new raster dataset.

    The number of bands that the output raster will have.

    Applies when the input raster datasets have a colormap.

    The method used to choose which color map from the input rasters will be applied to the mosaic output.


    2 Answers 2

    When finding the cell of raster r that has the minimum distance to a point falling outside r , we don't need to calculate the distance to interior cells of r .

    1. for points with x < xmin(r) and y < ymin(r) , the closest of r is the lower left cell
    2. for points with x > xmax(r) and y < ymin(r) , the closest of r is the lower right cell
    3. for points with x < xmin(r) and y > ymax(r) , the closest of r is the upper left cell
    4. for points with x > xmax(r) and y > ymax(r) , the closest of r is the upper right cell
    5. for points with xmin(r) < x < xmax(r) and y < ymin(r) , the closest cell of r will lie along the bottom edge
    6. for points with xmin(r) < x < xmax(r) and y > ymax(r) , the closest cell of r will lie along the top edge
    7. for points with x < xmin(r) and ymin(r) < y < ymax(r) , the closest cell of r will lie along the left edge
    8. for points with xmin(r) < x < xmax(r) and y > ymax(r) , the closest cell of r will lie along the top edge and
    9. points where xmin(r) < x < xmax(r) and ymin(r) < y < ymax(r) are already within the raster.

    Here's a function that works out within which of these 9 regions each point falls, identifies the raster columns or rows that they correspond to, and identifies the cell at that column or row along the relevant edge/corner.

    The function accepts either a 2 x n matrix of coordinates ( x then y ), or a SpatialPoints object. Set spatial=TRUE if you want the moved points returned as SpatialPoints .

    Note that points are assumed to be in a planar coordinate system.

    And an example for a 1000 x 1000 cell raster with 1000 points randomly placed (

    890 cells fall outside the raster's extent):

    For a 2000 x 2000 cell raster, with 1 million points (

    890000 points outside the raster's extent):

    And here's a plot showing how the points from the first example above have been moved.


    Sum function not working on cells with formulas

    You can encapsulate your calculated cells with VALUE() that needs to be summarized:

    This will force your formulae to output a number instead of text, and this can be summarized.

    Please note: The real issue is with the IF formulas. When returning a value, it should not be in quotes. The quotes make it text. For example, C1: should be If(D6>85,1,0). Then, Value is not necessary.

    You can also just encapsulate the item in the formula you want to be considered a number. In my case I did not want anything in the calculated cell if there is no result (IF = false) but encapsulating the whole formula resulted in a 0 result. If I make false = "" I get an error. So I just have =IF(test=X,Value(true),"") - X in my case is text but can be a number.

    May have happened that you wanted to sum a formula that previously uses iterative computation (مرجع دائري). In that case, excel ocasionaly turns this feature ON/OFF without any notice. You would need to switch على that function previously.

    To do that: Excel -> Option > Formulas . & GT


    Is it safe to use SUM() without ISNULL()

    Yes its safe . You can use Sum without handling NULL Value. You can also check that.

    You can use like that also.

    Returns the sum of all the values, or only the DISTINCT values, in the expression. SUM can be used with numeric columns only. Null values are ignored.

    If you have [1, 2, NULL, 5] in 4 columns, it will give the output as 8.

    However, it is not safe to use SUM() without checking for NULLS in many cases.

    You can receive null when it has no matching content for a given clause. And if you are using this SUMMED value in another function, that maybe a point of concern.

    Here are 3 images that shows without checking for NULL it returns NULL and not 0.

    SUM with ISNULL CHECK

    SUM without ISNULL CHECK

    SUM with COALESCE