أكثر

تسريع الحصول على أدوات Python Script من خصائص البيانات النقطية باستخدام ArcPy؟

تسريع الحصول على أدوات Python Script من خصائص البيانات النقطية باستخدام ArcPy؟


أنا أستخدم أدوات نصوص Python لـ ArcGIS 10.2 ، ضمن Windows 8.1 64bit.

عندما أستخدم الأمر arcpy.GetRasterProperties_management () ، تكون معالجة البيانات بطيئة جدًا.

فمثلا. حاولت الحصول على الحد الأقصى لقيمة 14 نقطية ، إذا استخدمت وضع الدُفعات لأداة النظام: احصل على خصائص Raster ، فإنه يستخدم 0.19 ثانية فقط.

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

وهذا عندما يكون استخدام وحدة المعالجة المركزية 20٪ ، وهو الحد الأقصى للاستخدام عند تشغيل ArcGIS على الكمبيوتر المحمول الخاص بي ، وأحيانًا لا تتمكن وحدة المعالجة المركزية من الوصول إلى هناك ، عندما يكون الاستخدام 5 أو 6٪ فقط ، يستغرق الأمر دقيقة واحدة للحصول على الكل القيم.

هذا هو الكود الذي أستخدمه لهذا الجزء:

لـ out_raster في out_rasters: جرب: raster_min = arcpy.GetRasterProperties_management (out_raster، "MINIMUM") raster_min = raster_min.getOutput (0) arcpy.AddMessage (raster_min) باستثناء: arcpy.AddMessage ("No_data")

هل هناك طريقة لزيادة السرعة؟


أنت تسأل، 'فهل هناك طريقة لزيادة السرعة؟'

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

تتمثل إحدى طرق تسريع النص البرمجي على وجه التحديد في استخدام:

raster_minimum = arcpy.Raster (المسار) الحد الأدنى

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

arcpy.GetRasterProperties_management ('[raster_path]'، "MINIMUM") 'raster_min = raster_min.getOutput (0)

استغرق الأمر ضعف الوقت لإكمال كل مكالمة مثلالنقطيةطريقة الكائن.


يمكنك محاولة استبعاد ArcPy عن طريق تحويله إلى مصفوفة ثم استخدام الحد الأدنى من وظيفة numpy.


Orion ، لقد لاحظت للتو أنك ذكرت في ردك على msi_g أنه حتى بعد تثبيت المعالجة الجيولوجية في الخلفية 64 بت ، فإن أداتك لا تزال تعمل في المقدمة.

بشكل افتراضي ، تعمل جميع النماذج وأدوات البرنامج النصي في المقدمة ، مما يعني افتراضيًا أنها تعمل جميعها في بيئة 32 بت.

هل ألغيت تحديد مربع الاختيار "التشغيل دائمًا في المقدمة" في علامة تبويب الخصائص العامة لأداة البرنامج النصي؟

إذا لم يكن الأمر كذلك ، في نافذة Catalog أو ArcToolbox ، انقر بزر الماوس الأيمن فوق الأداة وانقر فوق Properties. في علامة التبويب عام ، قم بإلغاء تحديد التشغيل دائمًا في المقدمة وانقر فوق موافق.

بعد ذلك ، تأكد من تمكين المعالجة الجغرافية في الخلفية بالفعل. في قائمة ArcMap ، انقر فوق المعالجة الجغرافية> خيارات المعالجة الجغرافية. في جزء المعالجة في الخلفية ، حدد تمكين.


تعيين الحجم الافتراضي للخلية

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

مشكلتي الرئيسية هي أن أداة PolygonToRaster_conversion () لا تسمح لي بتعيين حجم الخلية على قيمة طبقة نقطية. كما أنه لا يطيع الحجم الافتراضي لخلية البيانات النقطية الذي أحاول تعيينه في البيئة. بدلاً من ذلك ، يستخدم باستمرار "المدى الافتراضي مقسومًا على 250".

هذا هو النص الخاص بي لهذه العملية:

ينتج عن هذا الخطأ التالي: "يجب أن يكون حجم الخلية أكبر من الصفر."

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

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

ما لا أفهمه حقًا هو أنني استخدمت طبقة DEM كحجم الخلية يدويًا من خلال واجهة ArcGIS وكان هذا يعمل بشكل مثالي !!


GWR هو نموذج انحدار محلي. يُسمح للمعاملات بالتنوع.

تُنشئ GWR معادلة منفصلة لكل ميزة في مجموعة البيانات تتضمن المتغيرات التابعة والتفسيرية للميزات ضمن النطاق الترددي لكل ميزة مستهدفة. يعتمد شكل ومدى عرض النطاق الترددي على إدخال المستخدم لنوع Kernel وطريقة النطاق الترددي والمسافة وعدد معلمات الجيران مع قيد واحد: عندما يتجاوز عدد الميزات المجاورة 1000 ، يتم دمج أقرب 1000 ميزة فقط في كل محلي معادلة.

يجب تطبيق GWR على مجموعات البيانات التي تحتوي على عدة مئات من الميزات للحصول على أفضل النتائج. إنها ليست طريقة مناسبة لمجموعات البيانات الصغيرة. لا تعمل الأداة مع البيانات متعددة النقاط.

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

يتم دائمًا إنشاء ملف _supp في نفس الموقع مثل فئة معلم الإخراج ما لم يتم إنشاء فئة معلم الإخراج داخل مجموعة بيانات المعلم. عندما تكون فئة معلم الإخراج داخل مجموعة بيانات المعلم ، يتم إنشاء جدول _supp في قاعدة البيانات الجغرافية التي تحتوي على مجموعة بيانات المعلم.

يوصى باستخدام البيانات المتوقعة. هذا مهم بشكل خاص عندما تكون المسافة أحد مكونات التحليل ، كما هو الحال بالنسبة لـ GWR عند تحديد Fixed for Kernel type. من المستحسن أن يتم إسقاط بياناتك باستخدام نظام إحداثي مُسقط (بدلاً من نظام إحداثيات جغرافي).

تستفيد بعض حسابات أداة GWR من العديد من وحدات المعالجة المركزية لزيادة الأداء وستستخدم تلقائيًا ما يصل إلى ثمانية خيوط / وحدات معالجة مركزية للمعالجة.

يجب أن تبدأ دائمًا في تحليل الانحدار باستخدام انحدار المربعات الصغرى العادية (OLS). ابحث أولاً عن نموذج OLS محدد بشكل صحيح. ثم استخدم نفس المتغيرات التوضيحية لتشغيل GWR (باستثناء أي متغيرات توضيحية وهمية تمثل أنظمة مكانية مختلفة).

يجب أن تكون المتغيرات التابعة والتفسيرية عبارة عن حقول رقمية تحتوي على مجموعة متنوعة من القيم. طرق الانحدار الخطي ، مثل GWR ، ليست مناسبة للتنبؤ بالنتائج الثنائية (على سبيل المثال ، جميع قيم المتغير التابع هي إما 1 أو 0).

في نماذج الانحدار العالمية ، مثل انحدار المربعات الصغرى العادية (OLS) ، لا يمكن الاعتماد على النتائج عندما يظهر متغيران أو أكثر علاقة خطية متعددة (عندما يكون متغيران أو أكثر زائدين أو يرويان معًا نفس القصة). يبني GWR معادلة انحدار محلية لكل معلم في مجموعة البيانات. عندما تتجمع قيم متغير توضيحي معين مكانيًا ، فمن المحتمل أن تكون هناك مشاكل مع الخطية المتعددة المحلية. يشير حقل رقم الحالة (COND) في فئة ميزة الإخراج عندما تكون النتائج غير مستقرة بسبب العلاقة الخطية المتعددة المحلية. بشكل عام ، كن متشككًا في النتائج الخاصة بالميزات ذات رقم الشرط الأكبر من 30 ، تساوي Null أو لملفات الأشكال ، التي تساوي -1.7976931348623158e + 308.

توخى الحذر عند تضمين بيانات اسمية أو فئوية في نموذج GWR. عندما تتجمع الفئات مكانيًا ، هناك خطر مواجهة مشكلات الخطية المحلية المتعددة. يشير رقم الشرط المضمن في إخراج GWR إلى متى تكون العلاقة الخطية المحلية مشكلة (رقم شرط أقل من الصفر ، أو أكبر من 30 ، أو معينًا إلى Null). النتائج في وجود الخطية المحلية المتعددة غير مستقرة.

لا تستخدم المتغيرات التوضيحية المصطنعة لتمثيل الأنظمة المكانية المختلفة في نموذج GWR (على سبيل المثال ، يتم تعيين قيمة 1 لمساحات التعداد خارج القلب الحضري ، بينما يتم تعيين قيمة 0 لجميع الآخرين). نظرًا لأن GWR يسمح بتغير المعاملات المتغيرة التفسيرية ، فإن هذه المتغيرات التفسيرية للنظام المكاني غير ضرورية ، وإذا تم تضمينها ، فإنها ستخلق مشاكل في العلاقات الخطية المتعددة المحلية.

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

يمكنك استخدام GWR للتنبؤ من خلال توفير فئة ميزة مواقع التنبؤ (غالبًا ما تكون فئة الميزة هذه هي نفسها فئة ميزة الإدخال) ، والمتغيرات التوضيحية للتنبؤ ، وفئة ميزة توقع الإخراج. يجب أن يكون هناك تطابق واحد لواحد بين الحقول المستخدمة لمعايرة نموذج الانحدار (القيم التي تم إدخالها لحقل المتغيرات التوضيحية) والحقول المستخدمة للتنبؤ (القيم التي تم إدخالها لحقل المتغيرات التوضيحية للتنبؤ). يجب أن يكون ترتيب هذه المتغيرات هو نفسه. لنفترض ، على سبيل المثال ، أنك تقوم بنمذجة حوادث المرور كدالة لحدود السرعة وظروف الطريق وعدد الممرات وعدد السيارات. يمكنك توقع التأثير الذي قد يحدثه تغيير حدود السرعة أو تحسين الطرق على حوادث المرور من خلال إنشاء متغيرات جديدة مع تعديل حدود السرعة وظروف الطريق. سيتم استخدام المتغيرات الحالية لمعايرة نموذج الانحدار وسيتم استخدامها لمعامل المتغيرات التوضيحية. سيتم استخدام المتغيرات المعدلة للتنبؤات وسيتم إدخالها كمتغيرات توضيحية للتنبؤ.

إذا تم توفير فئة معالم مواقع التنبؤ ولكن لم يتم تحديد متغيرات توضيحية للتنبؤ ، يتم إنشاء فئة ميزة توقع المخرجات باستخدام معاملات محسوبة لكل موقع فقط (بدون تنبؤات).

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

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

حذر:

عند استخدام ملفات الأشكال ، ضع في اعتبارك أنه لا يمكنها تخزين القيم الخالية. الأدوات أو الإجراءات الأخرى التي تنشئ ملفات أشكال من مدخلات غير شكلية قد تخزن بالتالي قيمًا فارغة كصفر أو كأرقام سالبة صغيرة جدًا (-DBL_MAX = -1.7976931348623158e + 308). هذا يمكن أن يؤدي إلى نتائج غير متوقعة. لمزيد من المعلومات ، راجع اعتبارات المعالجة الجغرافية لإخراج ملف الأشكال.

عندما تكون نتيجة الحساب لانهائية أو غير محددة ، ستكون النتيجة لملفات الأشكال خالية لملفات الأشكال ، وستكون النتيجة -DBL_MAX = -1.7976931348623158e + 308.

عند تحديد معيار معلومات Akaike أو التحقق المتقاطع لمعلمة طريقة النطاق الترددي ، سيجد GWR المسافة المثلى (للنواة الثابتة) أو العدد الأمثل للجيران (للنواة التكيفية). ومع ذلك ، ستمنع المشاكل ذات الخطية المتعددة المحلية كلاً من معيار معلومات Akaike وطرق عرض النطاق الترددي عبر التحقق من صحة المسافة / العدد الأمثل للجيران. إذا حدث خطأ يشير إلى وجود مشكلات خطيرة في تصميم النموذج ، فحاول تحديد مسافة معينة أو عدد الجوار. ثم افحص أرقام الشرط في فئة معلم الإخراج لمعرفة الميزات المرتبطة بمشكلات العلاقة الخطية المتداخلة المحلية

أخطاء تصميم النموذج الجسيمة ، أو الأخطاء التي تشير إلى أن المعادلات المحلية لا تتضمن عددًا كافيًا من الجوار ، غالبًا ما تشير إلى مشكلة في الخطية العامة أو المحلية المتعددة. لتحديد مكان المشكلة ، قم بتشغيل النموذج الخاص بك باستخدام OLS وفحص قيمة VIF لكل متغير توضيحي. إذا كانت بعض قيم VIF كبيرة (فوق 7.5 ، على سبيل المثال) ، فإن العلاقة الخطية المتعددة العالمية تمنع GWR من الحل. ومع ذلك ، فالأرجح أن تعدد الخطوط المحلية هو المشكلة. حاول إنشاء خريطة موضوعية لكل متغير توضيحي. إذا كشفت الخريطة عن مجموعات مكانية لقيم متطابقة ، ففكر في إزالة تلك المتغيرات من النموذج أو دمج هذه المتغيرات مع متغيرات تفسيرية أخرى لزيادة تباين القيمة. على سبيل المثال ، إذا كنت تقوم بنمذجة قيم المنزل ولديك متغيرات لغرف النوم والحمامات ، فقد ترغب في دمجها لزيادة تباين القيمة ، أو لتمثيلها على أنها لقطات مربعة للحمام / غرفة النوم. تجنب استخدام المتغيرات الوهمية للنظام المكاني ، أو التجميع المكاني للمتغيرات الفئوية أو الاسمية ، أو المتغيرات ذات القيم القليلة جدًا الممكنة عند إنشاء نماذج GWR.

GWR هو نموذج خطي يخضع لنفس متطلبات OLS. راجع قسم كيف تسوء نماذج الانحدار في أساسيات تحليل الانحدار للتأكد من تحديد نموذج GWR الخاص بك بشكل صحيح.


تسريع العمليات النقطية؟

أحاول & quot؛ qumosaic & quot؛ إلى خطوط نقطية جديدة & & quot؛ بعض النقطيات الكبيرة & # x27m أتساءل عما يمكنني فعله لتسريع الأمور.

بالنسبة للمبتدئين ، أنا أعمل على نظام Win 7-64bit مع ذاكرة وصول عشوائي 16 جيجا بايت و i7-4770 @ 3.40 جيجا هرتز. النقطية بدقة 1 متر ، ونطاق واحد ، و 32 بت عائم ، والأكبر بها 100 ألف + صفوف و 200 ألف عمود (حوالي 75 جيجا بايت).

هذه المرة كانت الفسيفساء لمدة 6 ساعات تقريبًا وليس لدي أي فكرة عن المدة التي قد تستغرقها.

إذن ما الذي يمكن فعله لتسريع هذه الأنواع من العمليات؟ هل جهاز الكمبيوتر الخاص بي عامل مقيد؟ هل هناك إعدادات في Arc أو على جهاز الكمبيوتر الخاص بي من شأنها أن تساعد؟ أم أن هذه مجرد سرعة عادية لهذه الأشياء؟

أسأل لأنني قد أحتاج إلى القيام بذلك أكثر في المستقبل. نقوم بجمع البيانات من مصادر متعددة ودمجها في مجموعة بيانات واحدة للعرض ثلاثي الأبعاد (أتساءل أيضًا عما إذا كانت بطاقة GeForce GTX 650 الخاصة بي مع ذاكرة رسومات إجمالية تبلغ 4095 ميغابايت ستكون قادرة على التعامل معها.)

* انقل كل شيء محليًا إذا استطعت. سوف يقتلك تأخر الشبكة.

* العمل على دفعات صغيرة. لست متأكدًا من عدد الملفات لديك ، ولكن حاول إضافة عدد قليل منها في كل مرة. يمكنك أيضًا محاولة إنشاء مجموعات بيانات صغيرة متعددة ثم دمجها جميعًا في النهاية.

* تأكد من إيقاف تشغيل حساب الإحصائيات وبناء الأهرامات. يمكنك القيام بذلك بعد الانتهاء من الفسيفساء. قم بإيقاف تشغيل أي شيء اختياري إلى حد كبير وتشغيله في النهاية إذا لزم الأمر.

* ابدأ العملية في نهاية اليوم حتى لا يكون الوقت عاملاً.

هذا أمر طبيعي تمامًا وجهازك قادر تمامًا. ArcMap يستغرق وقتًا طويلاً للقيام بالكثير من الأشياء. لقد وجدت أن إعداد Mosaic To New Raster Geeoprocess في ArcGIS Pro بدا أسرع قليلاً ، لكنه أيضًا تعطل أكثر قليلاً.

هل يمكنك نشر رابط للبيانات التي تستخدمها؟ سيكون من الممتع تجربة مجموعات مختلفة من الأجهزة والبرامج.

حسنًا ، لا يوجد & # x27t أي ملف واحد. لقد قمت بإعادة أخذ عينات ودمج حوالي 9 ملفات قياس أعماق مختلفة وملفات DEM من مجموعة متنوعة من المصادر.

هل هناك طلب على برامج أكثر تخصصًا في هذا المجال؟ يجب أن يكون ما تصفه قابلاً للتنفيذ في دقائق. (بافتراض الوصول إلى القرص المحلي.)

يجب أن يكون ما تصفه قابلاً للتنفيذ في دقائق.

ثوانٍ ، في الواقع ، إذا كان لديك SSD ، عدد معقول من النوى في وحدة المعالجة المركزية الخاصة بك ، وكنت تستخدم برامج موازية حديثة ، مثل ERDAS أو غيرها.

إذا حصلنا على عقد ، يمكننا بالتأكيد البحث في برامج متخصصة. بم تفكر؟

ربما يمكنني الحصول على نسخة تجريبية مجانية وإقناع شخص أعلى أنه & # x27d يستحق ذلك.

سهل: استخدم البرامج المتوازية. يستغرق الكود الموازي وقتًا في كتابته ، لذا فمن الحكمة اختبار الفكرة أولاً للحصول على مقياس مرجعي لكيفية عملها من أجلك ، قبل أن تقوم بجهود الترميز.

اختبر الأسلوب الموازي باستخدام البرمجيات الحرة والمفتوحة المصدر: المشاهد خالٍ من http://manifold.net/viewer.shtml

قم باستيراد صورك (أي شيء نقطي ، مثل البيانات النقطية لارتفاع التضاريس ، إلخ) إلى العارض ثم استخدم مربع حوار دمج الصور لدمجها. مثال خطوة بخطوة باستخدام البيانات النقطية لارتفاع مكوك الفضاء SRTM على http://manifold.net/doc/mfd9/index.htm#example__merge_images.htm - هناك & # x27s أيضًا إصدار فيديو YouTube من ذلك.

إذا كان هذا مناسبًا لك وكنت سعيدًا بتوازي السرعة الذي يوفره ، فيمكنك التفكير في قرار & quotmake vs.

بالمناسبة ، لا تلعب GPU & # x27t دورًا في هذا نظرًا لأن أي نظام فرعي للرسومات الرخيصة يمكنه بسهولة التعامل مع نهاية العرض ، ولا يوجد & # x27t أي حساب مهم متضمن في دمج البيانات النقطية التي تجعل توازي GPGPU يستحق ذلك. كل ما هو أسرع في الموازاة باستخدام موازاة وحدة المعالجة المركزية لأنه في الأساس الوصول إلى البيانات والمقارنات البسيطة ، وليس الرياضيات. يمكنك القيام بذلك بشكل أسرع في أنوية وحدة المعالجة المركزية المتعددة من الإرسال لأعلى ولأسفل إلى وحدة معالجة الرسومات.

إذا قمت بكتابة هذا بنفسك ، نظرًا لأن الوصول إلى البيانات أمر بالغ الأهمية ، فمن المهم أن تستخدم مخزن بيانات متوازيًا ، لذا فإن كود الفسيفساء المتوازي متعدد المسارات الذي تكتبه لا يتشابك مع وصول القراءة / الكتابة من مسار واحد إلى البيانات. وبالمثل ، فإن امتلاك مخزن بيانات سريع كما هو الحال في SSD ، بالإضافة إلى الكثير من نوى وحدة المعالجة المركزية المعقولة ، يعد أكثر أهمية من وحدة معالجة الرسومات (GPU) أو وحدة المعالجة المركزية (CPU) باهظة الثمن حيث يتم استخدام نواة واحدة فقط.


مكتبات بايثون لعلوم البيانات

علم البيانات يستخرج الرؤى من البيانات. يأخذ البيانات ويحاول فهمها ، مثل رسمها بيانياً أو باستخدام التعلم الآلي. يمكن لقائمة مكتبات Python هذه أن تفعل ذلك من أجلك بالضبط.

6 نومبي

تأخذ لغة Python الرقمية (مكتبة NumPy) جدول السمات الخاص بك وتضعه في مصفوفة منظمة. بمجرد أن تصبح في مصفوفة منظمة ، تصبح أسرع بكثير لأي حوسبة علمية. أحد أفضل الأشياء المتعلقة به هو كيفية العمل مع مكتبات Python الأخرى مثل SciPy للعمليات الإحصائية الثقيلة.

7 الباندا

تحظى مكتبة Pandas بشعبية كبيرة في الجدل حول البيانات. إنه ليس للإحصائيين فقط. لكنها مفيدة للغاية في نظم المعلومات الجغرافية أيضًا. الأداء الحسابي هو مفتاح الباندا. يكمن نجاح Pandas في إطار البيانات الخاص بها. تم تحسين إطارات البيانات للعمل مع البيانات الضخمة. لقد تم تحسينها لدرجة أنها شيء لا يستطيع Microsoft Excel التعامل معه.

8 ماتبلوتليب

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

9 سكيكيت

في الآونة الأخيرة ، أصبح التعلم الآلي ضجة كبيرة. ولسبب وجيه. Scikit هي مكتبة Python تتيح التعلم الآلي. إنه مدمج في NumPy و SciPy و matplotlib. لذلك ، إذا كنت ترغب في إجراء أي تنقيب عن البيانات أو تصنيفها أو توقع تعلمها ، فإن مكتبة Scikit تعد خيارًا جيدًا.

10 Re (التعابير النمطية)

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

11 ReportLab

ReportLab هي واحدة من أكثر المكتبات إرضاءً في هذه القائمة. أقول هذا لأن نظم المعلومات الجغرافية غالبًا ما تفتقر إلى قدرات إعداد التقارير الكافية. على وجه الخصوص ، إذا كنت تريد إنشاء قالب تقرير ، فهذا خيار رائع. لا أعرف لماذا تقع مكتبة ReportLab بعيدًا عن الرادار لأنها لا ينبغي أن تفعل ذلك.

نصيحة محترف: إذا كنت بحاجة إلى قائمة سريعة وقذرة من الوظائف لمكتبات Python ، فراجع أوراق الغش في DataCamp.


استخدام قشرة بايثون

يدعم ArcGIS مثيل shell الذي يعمل بكامل طاقته من Python ، والذي يمكن فتحه بالنقر فوق رمز Python shell الموجود في شريط الأدوات الرئيسي:

الشكل 1 - زر قشرة بايثون.

ومع ذلك ، يمكن تحقيق نفس الواجهة من خلال تشغيل IDLE ومحرر Python و shell المثبت مع Python. لتحقيق نفس وظائف الصدفة في ArcGIS ، من نافذة Python shell ، قم باستيراد ملف أركبي وحدة في الغلاف (Arcpy هو وحدة كبيرة ، لذلك سوف يستغرق بضع لحظات):


الشكل 2 - واجهة قشرة IDLE Python


تسريع مكالمات Python المتكررة (أو ، بدلاً من ذلك ، نقل regex معقد إلى sed)

أنا فيزيائي طبي أكاديمي. أقوم بإجراء تجارب تنتج قدرًا لا بأس به من البيانات ، ويكون تشغيلها مكلفًا. يوجد في جامعتي نظام نسخ احتياطي يتكون من مكتبة أشرطة روبوتية في منجم ملح مهجور يستخدم حماية الطيف من شركة IBM (يُدعى باسم dsmc) الذي أستخدمه للنسخ الاحتياطية خارج الموقع. على الرغم من عدم وجود حد للحجم الإجمالي الذي يمكنني إرساله إلى منجم الملح ، هناك يكون حد نقل في اليوم يبلغ 200 غيغابايت. بقدر ما أعرف ، لا توجد طريقة لجعل عميل حماية الطيف يحترم هذا الحد ، ويتوقف بعد الوصول إلى حد النقل.

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

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

يتم التحليل عن طريق معالجة إخراج dsmc كمستند هنا في bash بنص بيثون بسيط:

هذا يعمل ويناسب أغراضي. ومع ذلك ، فإن الأداء سيء على الحدود الرهيبة ، وأعتقد أن هذا يرجع إلى أن كل تكرار خلال حلقة while loop يُخرج مثيلًا آخر من مجموعة مترجم / نصوص Python.

نظرًا لأنني لا أستطيع تغيير الحد أو سلوك blob dsmc المترجم الثنائي ، لدي ثلاثة أسئلة ذات صلة:

(أ) هل هذا نهج معقول لحل هذه المشكلة ، أم أن هناك طريقة أسهل كثيرًا أفتقدها ، مثل الفودو المتقدم باستخدام netstat؟

(ب) بالنظر إلى أن ما بيثون في الواقع هي نفسها تمامًا من خلال كل تكرار في الحلقة ، فهل هناك طريقة لتخزين ترجمة المترجم الشفرة للشفرة وبالتالي تسريع الأمر برمته بشكل كبير؟

(ج) إذا كنت سأستبدل نص بيثون ببنية sed أو awk مكافئة ، فأنا أظن أن هذا الأمر برمته سيكون أسرع بكثير. لماذا ا؟ هل من الممكن القيام بهذا النوع من العمليات الحسابية بسهولة ، أم أن هذا النوع من الرنجة الأخرى يجب أن ينزل؟

يحرر: مثال على الإخراج من dsmc لأولئك غير المألوفين أدناه - يتم إرسال الملف فقط إذا ظهر "ملف عادي" في سلسلة متبوعة بحجمه بالبايت. لذلك ، في ما يلي ، يتم إرسال الملف spclicert.kdb ، ولكن لا TSM.PWD ولا الدليل CaptiveNetworkSupport:

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


نبذة عن الكاتب

ميخا بابينسكي

ميكا بابينسكي ، GISP ، PMP ، هو مدير مشروع GIS مع ELYON International، Inc. وهو يعمل في الموقع مع Oregon / Washington BLM. كان بابينسكي جزءًا من صناعة نظم المعلومات الجغرافية لما يقرب من عقد من الزمان وشغل سابقًا مناصب في مدينة بورتلاند ، أوريغون ، ومقاطعة مولتنوماه ، أوريغون. تخرج من جامعة واشنطن وهو عضو نشط في جمعية نظم المعلومات الحضرية والإقليمية (URISA) ومعهد إدارة المشاريع (PMI).


هل يجب أن أقوم بتضمين نصوص داخل حزمة بايثون؟

في تطبيق Python الخاص بي ، يمكنني التمييز بين نقاط الدخول (البرامج النصية) وما أفكر به كرمز مكتبة.

غريزتي هي وضع رمز المكتبة داخل حزمة ، واستيراد البرامج النصية في مكان آخر من الحزمة.

من الممكن استخدام setup.py للإشارة إلى الأساليب داخل الحزمة لاستخدامها كنقاط إدخال ، وبالتالي الحصول على جميع أكواد Python داخل الحزم.

ملاحظة: يناقش هذا الرابط كلا الخيارين ولكنه لا يقدم رأيًا حقًا.

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

  • __init__.py
  • 11 "مخطوطات"
  • 10 "وحدات مكتبة" تستخدمها تلك النصوص
  • 18 وحدة اختبار

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

أقدر أن إجراء الاختبارات في نفس الحزمة لم يكن في سؤالي الأصلي.


تخيل خارطة الطريق المقبلة

قبل أن نبدأ في تطوير تطبيقنا ، من المهم أن نخلق رؤية لكيفية هيكلة تطبيقنا. وفقًا لمصطلحات Python ، سننشئ حزمة متعددة المستويات تحتوي على حزم فرعية ووحدات فرعية متنوعة للعناية بأجزاء مختلفة من وظائفنا ، بصرف النظر عن أي واجهة مستخدم. فقط فوق هذه الوظيفة الأساسية ، نقوم بإنشاء واجهة المستخدم المرئية كطريقة للوصول إلى هذا الرمز الأساسي وتشغيله. بهذه الطريقة ، نبني نظامًا متينًا ، ونسمح لمستخدمي الطاقة بالوصول إلى جميع الوظائف نفسها عبر برمجة Python النصية لأتمتة وكفاءة أكبر ، كما هو الحال في ArcGIS و QGIS.

لإعداد حزمة Python الرئيسية خلف تطبيقنا ، قم بإنشاء مجلد جديد يسمى pythongis في أي مكان على جهاز الكمبيوتر الخاص بك. لكي تتمكن Python من تفسير المجلد pythongis كحزمة قابلة للاستيراد ، فإنه يحتاج إلى العثور على ملف باسم __init__.py في هذا المجلد. قم بتنفيذ الخطوات التالية:

  1. يفتح بيثون IDLE من قائمة ابدأ في Windows.
  2. أول نافذة تنبثق هي الغلاف التفاعلي. لفتح نافذة تحرير البرنامج النصي ، انقر فوق ملف و جديد.
  3. انقر فوق ملف وثم حفظ باسم.
  4. في نافذة الحوار المنبثقة ، تصفح إلى ملف ثعبان المجلد ، اكتب __فيه__.py كاسم ملف ، وانقر فوق يحفظ.

هناك نوعان رئيسيان من بيانات نظم المعلومات الجغرافية: المتجه (الأشكال الهندسية القائمة على الإحداثيات مثل النقاط والخطوط والمضلعات) و النقطية (شبكة متباعدة بانتظام من نقاط البيانات أو الخلايا ، على غرار الصورة ووحدات البكسل الخاصة بها).

للحصول على مقدمة أكثر تفصيلاً للاختلافات بين بيانات المتجه والبيانات النقطية ومفاهيم نظم المعلومات الجغرافية الأساسية الأخرى ، نحيل القارئ إلى كتاب Learning Geospatial Analysis with Python من تأليف Joel Lawhead. يمكنك العثور على هذا الكتاب في:

https://www.packtpub.com/application-development/learning-geospatial-analysis-python

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

لجعل منتجاتنا الجديدة المتجه و النقطية العبوات الفرعية القابلة للاستيراد حسب المستوى الأعلى لدينا ثعبان الحزمة ، نحتاج إلى إضافة عبارات الاستيراد النسبية التالية في pythongis / __ init__.py:

على مدار هذه المقالة ، سنقوم ببناء وظائف هذين النوعين من البيانات كمجموعة من وحدات Python في مجلدات كل منهما. في النهاية ، نريد أن ينتهي بنا الأمر بتطبيق GIS الذي يحتوي فقط على أبسط الأدوات الجغرافية المكانية حتى نتمكن من تحميل البيانات وحفظها وإدارتها وتصورها وتراكبها.

بقدر ما يذهب منتجنا النهائي ، نظرًا لأننا نركز على الوضوح والبساطة ، فإننا لا نبذل الكثير من الجهد لجعله سريعًا أو فعالًا في الذاكرة. يأتي هذا من قول مأثور يتكرر في كثير من الأحيان بين المبرمجين ، ومثال على ذلك موجود في البرمجة المهيكلة بالذهاب إلى البيانات، ACM ، استطلاعات الحوسبة 6 (4):

التحسين المبكر هو أصل كل الشرور

دونالد إي كنوث

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

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


شاهد الفيديو: تعلم لغة Python درس 005# - كيفية التعامل مع البيانات في لغة Python