أكثر

QGIS Join Attributes by Location لا يعمل من نص Python

QGIS Join Attributes by Location لا يعمل من نص Python


لدي ملف أشكال به نقاط ، وملف أشكال به مضلعات. أريد جمع قيمة السمة لجميع النقاط الموجودة داخل مضلع معين ، وأود أن أفعل ذلك لكل مضلع في مجموعة البيانات الخاصة بي. تساعدني أداة QGIS Join Attributes by Location في تحقيق ذلك ، وتعمل بشكل مثالي عند استخدام الأداة عبر صندوق أدوات المعالجة. ومع ذلك ، أود تضمين الأداة في نص آلي. لقد جربت العديد من الوسائط المختلفة ، لكن الكود الخاص بي (لا يزال) لا يعمل ، وينتج عن ذلك مجموعة بيانات حيث تحتوي سمة المضلع الجديدة على قيم NULL.

أنا أستخدم الكود التالي ، والذي يجب أن يكون بالضبط نفس الأداة التي تعمل عند الوصول إليها من Processing Toolbox (حتى أنني حاولت نسخ وتشغيل نفس الرمز بالضبط من نافذة History & Log):

sum = Processing.runalg ("qgis: Joinattributesbylocation"، "polygonlayer.shp"، "pointlayer.shp"، "['يحتوي على']"، 1، "sum"، 1، None)

أنا أستخدم QGIS 2.8.2 Wien.


  • بالنسبة لـ QGIS 2.8.2 مع معالجة البرنامج المساعد 2.9.0:

    Processing.runalg ("qgis: Joinattributesbylocation"، layer1، layer2، u'contains '، 1،' sum '، 1، None)
  • بالنسبة لـ QGIS 2.12.2 مع معالجة البرنامج المساعد 2.12.2:

    Processing.runalg ("qgis: Joinattributesbylocation"، layer1، layer2، u'contains '، 0، 1،' sum '، 1، None)

    (لاحظ المعلمة الإضافية لـ "الدقة")


كيف يمكنني العثور على دليل script & # 39s؟ [مكرر]

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

كيف يمكنني الحصول على المسار إلى البرنامج النصي من داخل برنامج نصي يتم تشغيله بواسطة طريقة عرض Django؟

تحديث:
تلخيص الإجابات حتى الآن - os.getcwd () و os.path.abspath () كلاهما يعطي دليل العمل الحالي الذي قد يكون أو لا يكون الدليل حيث يوجد البرنامج النصي. في إعداد مضيف الويب الخاص بي __file__ يعطي اسم الملف فقط بدون المسار.

ألا توجد أي طريقة في Python لتتمكن (دائمًا) من تلقي المسار الذي يوجد فيه النص؟


احصل على إطار لتأطير موقع الكائن Blender 2.81 +

لدي برنامج نصي يقوم بإنشاء مسار منحنى وتعيين كائن لاتباع المسار ، ويمكنني رؤية الكائن يتحرك بشكل صحيح في حركة الرسوم المتحركة ، كما أنه ينتقل إلى الموقع الصحيح (على الأقل بصريًا في منفذ العرض ، والإحداثيات عندما تضغط على n لا تتغير) عندما أستخدم bpy.context.scene.frame_set (desirved_frame). ومع ذلك ، عندما أحاول الحصول على موقع هذا الكائن وتدويره في الإطار الذي قمت بتعيينه ، فإنه يقوم فقط بإرجاع الموقع الأصلي للكائن في الإطار 0. يوجد أدناه الرمز الذي استخدمته لإنشاء بيانات الرسوم المتحركة وماذا أنا ' م تستخدم لمحاولة الحصول على الموقع.

لقد حاولت أيضًا استبدال الحلقة النهائية بـ:

كلتا الطريقتين فقط تطبع الموقع الأصلي للكائن.

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

فيما يلي بعض الحلول والإجابات التي قرأتها وحاولت دون جدوى:

لست متأكدًا حقًا من الخطأ الذي أفعله لأن بعض الأسئلة التي نظرت إليها مشابهة تمامًا لمشكلتي.


محاولة استرجاع رقم الإطار الحالي لاستخدامه في دورات مادة عمر الجسيمات

أحاول إنشاء مادة دورات لإشعال الجسيم عندما يموت في تصادم مع جسيم آخر باستخدام Blender 2.72a.

لقد تمكنت من جعل الجسيمات تهاجم وتقتل الجسيمات الأخرى باستخدام فيزياء Boid ، لكن جعل الجسيمات الميتة تفعل أي شيء إلى جانب الاختفاء أو الجلوس هناك يثبت أنه مشكلة شائكة.

أنا أتعامل مع عدة طرق. محاولتي الحالية هي قيادة قوة الانبعاث والشفافية بناءً على مدى عدم توقيت موت الجسيمات. الجسيم الذي يموت في تصادم سيكون له سرعة صفر وعمر أقل من عمره. ومع ذلك ، نظرًا لأن الجسيمات الميتة تشير إلى الصفر بالنسبة لعمرها ، فلا يمكنك استخدام ذلك لتحديد ما إذا كان الجسيم قد مات للتو بشكل غير طبيعي ، أو إذا انتهت صلاحيته منذ مئات الإطارات. يمكنني الالتفاف حول هذا إذا كان بإمكاني استرداد رقم الإطار الحالي للمشهد وحتى أنني حصلت على مقتطف الشفرة: bpy.data.scenes ['CYCLES']. frame_current قمت بحفظه كبرنامج نصي وأشرت إليه في برنامج نصي العقدة التي تمكنت من إضافتها إلى بذرة الجسيمات ، لكن لا يمكنني الوصول إلى القيمة المستردة.

كنت أفكر في تعديل البرنامج النصي لملء متغير عام أو سمة برقم الإطار ثم الوصول إليه باستخدام عقدة السمة.

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


Ola Hallengren & # 39s SQL Backup to Network Location لا يعمل

لقد قمت بإعداد حل صيانة SQL Server من Ola Hallengren على عدة خوادم SQL Express (2008 إلى 2012 R2) في السنوات القليلة الماضية. لقد بدأت مؤخرًا في مواجهة مشكلات مع مكون النسخ الاحتياطي للشبكة على كل منها جديد. لقد عملت على العديد من الخوادم في الماضي ، لذلك أعلم أنه يمكن أن يعمل ، لكن لا يمكنني معرفة ما الذي يمنعه من العمل الآن. كنقطة اهتمام ، أنا لست مسؤول قواعد بيانات ، ولا أعرف شيئًا عن SQL ، وهذا هو سبب وجودي هنا.

المشكلة

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

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

لقد حاولت تشغيله في سطر الأوامر بنفسي وحساب أذونات فائقة. هذا هو الخطأ الذي أتلقاه في جميع الحالات:

ما الذي فعلته

من الواضح أن SQL تعتقد أن موقع الشبكة غير موجود ، لذلك حاولت ما بوسعي للتحقق من أن جميع العناصر الجانبية للشبكة مرتبة. لقد سحبت نسخة جديدة من البرنامج النصي وأعدت إنشاء جميع الكائنات والوظائف. لقد تحققت من أن البرامج النصية الأخرى (فحوصات السلامة والتحديثات الإحصائية وما إلى ذلك) تعمل. لقد قمت بإنشاء برنامج نصي يستخدم نفس بيانات الاعتماد الخاصة بالبرنامج النصي للنسخ الاحتياطي لتشغيل نسخة xcopy من النسخ الاحتياطية المحلية على الخادم الهدف ، لذلك لدي بيانات اعتماد المشاركة / NTFS المناسبة. هذا الحساب هو حساب مجال (AD) تم إنشاؤه خصيصًا لنسخ SQL الاحتياطية. يمكنني النسخ الاحتياطي محليًا (باستخدام هذا الحساب) ، لذلك لدي أذونات قاعدة البيانات. يمكنني الانتقال إلى المشاركة كحساب نسخ احتياطي باستخدام مستكشف Windows. يمكنني نسخ الملفات يدويًا إلى الموقع البعيد باستخدام Windows Explorer باستخدام حساب النسخ الاحتياطي.

أحصل على نفس المشكلة على العديد من الشبكات الأخرى أيضًا ، وهو ما حولني إلى SF. أنا في نطاقات 2008 R2 و 2012 ، جميع الخوادم أعضاء في المجال دون أي أخطاء ذات صلة. الخوادم هي أجهزة 2008 R2 و 2012 R2 Standard. أشعر أن شيئًا ما قد تغير من جانب SQL بحيث لا يمكنني استكشاف الأخطاء وإصلاحها لحدوث ذلك على 3 شبكات مختلفة والعديد من الخوادم. لقد استخدمت الأوامر الأساسية الفائقة - ترك التحقق والتنظيف من المهمة - وحصلت على نفس الخطأ. لقد استفدت من أوامر المثال على موقع Ola كاختبار أيضًا ، مع نفس النتائج. لقد جربته على خادم SQL جديد تمامًا مع قاعدة بيانات اختبار أساسية ، بلا حب. لقد استخدمت الحزام الأسود الخاص بي في Google لعدة أيام مع نتائج مخيبة للآمال للغاية (ربما لا أعرف ما الذي أبحث عنه؟).

ما أتمنى الحصول عليه

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


ما هو كود python الصحيح للضغط على & ldquoI & rdquo واختيار LocRotScale؟

لقد أجريت بالفعل اختبارًا وهميًا وكل ما تبقى من الكود الخاص بي يعمل. الشيء الوحيد الذي فشل هو استدعاء bpy.ops.anim.keyframe_insert_menu (اكتب = 'LocRotScale') ، وهو ما يظهر إذا ضغطت على I وقمت بذلك يدويًا. الخطأ الذي أواجهه هو:

الملف "D: Blender 2.79 scripts modules bpy ops.py" ، السطر 189 ، في يتصل ret = op_call (self.idname_py ()، None، kw) خطأ في النوع: تحويل py args إلى خصائص عامل التشغيل: enum "location" غير موجودة في ('Location'، 'Rotation'، 'Scaling'، 'BUILTIN_KSI_LocRot'، 'LocRotScale' ، "BUILTIN_KSI_LocScale" ، "BUILTIN_KSI_RotScale" ، "BUILTIN_KSI_DeltaLocation" ، "BUILTIN_KSI_DeltaRotation" ، "BUILTIN_KSI_DeltaScal)

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

  1. Frame_set الإطار الحالي على الخط الزمني بحيث يكون إطار البداية عند 0
  2. أود أن آخذ الإحداثيات [i] في القائمة وأطبقها على المكعب
  3. أود بعد ذلك تحديد موقع المكعب للرسوم المتحركة
  4. قم بتحديث الإطار الحالي بمقدار = + 4 في كل مرة. سيكون الإطار S0 0 و 4 و 8. هو الإطارات الرئيسية.

تعمل جميع الخطوات الأخرى ، إذا قمت بالتعليق على الخطوة رقم 3 ، فسوف أرى المكعب الخاص بي ينتقل من موقع إلى آخر ، فأنا فقط بحاجة إلى معرفة كيفية مفتاح كل موقع للرسوم المتحركة!


1 إجابة 1

بعض تغييرات API أحدث من غيرها

تتطلب طريقة bmesh from object أن تكون الوسيطة 2 عبارة عن depsgraph ، وليس مشهدًا ، كما كان من قبل IIRC ، حوالي عندما تمت كتابة الإجابة.

استشر المزيد من المستندات الحديثة ، ولكن بالنسبة لهذه الأشياء ، نوصي بشدة باستخدام ميزة الإكمال التلقائي لوحدة التحكم

سوف تلاحظ أن depsgraph لا يصنع سلسلة doc ، من الواضح أنها وسيطة.

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

يطرح البرنامج النصي خطأ فهرسًا للتشابك مع عدد قليل جدًا من البرامج.

الطريقة مرتبطة بمعالج تغيير الإطار ، لذلك ستفعل & تقتبس الشيء عندما يتغير الإطار.

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


أول لعبة ذاكرة مع PyQt و OOP

لذلك هذه هي المرة الأولى لي في هذا الموقع. لقد كتبت كود Python الأساسي للغاية باستخدام PyQt5 لإنشاء لعبة ذاكرة. نظرًا لأنني لست على دراية كبيرة بـ OOP (لكنني أحاول أن أكون!) ، آمل أن يوجهني شخص ما إلى حيث يمكنني تحسين لعبتي.

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

  1. يختار المستخدم مجلد صور بتنسيق (JPG)
  2. يتم تشكيل شبكة بها جميع الصور ، ولكن كل صورة مغطاة بالصورة "back.jpg" (يجب أن تبقى في نفس المجلد مثل الرمز)
  3. تبدأ اللعبة

في الأساس ، أنا أفعل كل شيء باستخدام الصور في Qgridlayout ، والتي يتم وضعها في أزرار مع مستمعي الأحداث. عندما تنبعث إشارة "onclick" ، يتم تحليل سمة self.status وإعادة تشغيل اللعبة أو الاستمرار وفقًا لذلك.

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


هذا بالضبط - الموقع المادي للكائن. لن يؤثر تغييره على أي شيء آخر ما لم يستخدمه نظام خارجي أو يقوم بتحديثه. على سبيل المثال ، في المؤسسات الكبيرة ، يمكن ملء سمات مثل هذه من قاعدة بيانات تتبع الأصول ومزامنتها مع نظام إدارة الهوية مثل MS ILM / FIM.

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

مثل معظم سمات AD المليئة بالمستخدم / المسؤول ، يتم استخدامه لأي شيء تريد استخدامه من أجله. بشكل عام ، سيكون ذلك للموقع الفعلي للعنصر ، كما يشير كريس ماكيون ، ولكن يمكنك استخدامه لأي شيء تريده ، وقد يكون هناك بعض القيمة في القيام بذلك إذا كنت شركة صغيرة مع كل شيء في نفس الموقع الفعلي ، نظرًا لأنه افتراضيًا ، يتم عرض الموقع بشكل بارز أكثر من CustomAttribute8 وما شابه.

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


لماذا لم يتم تحديد موقع التعطل هذا عبر ELT؟

في 14 يناير 2019 ، الساعة 9.10 بتوقيت إندونيسيا ، تم العثور على CVR لطائرة Lion Air JT-610 المحطمة. تم العثور على جهاز حيوي آخر في وقت سابق.

هناك ثلاث طائرات حديثة تحطمت في المياه في إندونيسيا:

تحطمت شركة آدم إير ، المسجلة PK-KKW ، بوينج 737-400 ، الرحلة KI514 ، في 1 يناير 2007 ، في بحر ماجيني بسبب الفشل مع نظام المرجع الداخلي (IRS)، تقع على عمق 2000 متر تحت سطح البحر.

طيران آسيا ، تسجيل PK-AXC ، إيرباص A320-216 ، رحلة QZ8501 ، تحطمت في 28 ديسمبر 2015 ، في بحر كاريمونجاوا ، بسبب الفشل مع الدفة ، السفر ، محدد.

تحطمت شركة Lion Air ، المسجلة PK-LQP ، Boeing 737 Max-8 ، الرحلة JT-610 ، في 28 نوفمبر 2018 ، في بحر جافا. سبب الحادث لا يزال قيد التحقيق.

تم العثور على مواقع الاصطدام الثلاثة هذه ليس من خلال نظام الأجهزة الإلكترونية ، ولكن من قبل الصيادين.

ثم سؤالي هو: لماذا لم يتم تحديد موقع الطائرة الحديثة عبر ELT؟


شاهد الفيديو: QGIS Join attributes by location