أكثر

غير قادر على تحميل أي ملف نقطي باستخدام QGIS Python

غير قادر على تحميل أي ملف نقطي باستخدام QGIS Python


أحاول تشغيل جزء أساسي من كود Python ، والذي يقوم ببساطة بتحميل ملف dem كملف نقطي للوصول إلى QGIS Python API.

على وحدة التحكم المضمنة (داخل واجهة المستخدم الرسومية لتطبيق QGIS) ، تعمل بشكل جيد ويتم تحميل البيانات النقطية. ومع ذلك ، لا يتم تحميل العمل عند تشغيله خارج وحدة التحكم المضمنة ، من موجه Windows القياسي بعد إعداد QGIS_PREFIX_HOME و PYTHONPATH باستخدام ملف دفعي.

الكود الذي أقوم بتشغيله هو كما يلي:

استيراد نظام التشغيل من PyQt4.QtCore استيراد QFileInfo ، QSettings من qgis.core import * # تحميل موفري QgsApplication.initQgis () # تحميل إدخال dem rasterFile = "E:  data  43j11  43J11.dt2" fileInfo = QFileInfo ( rasterFile) fileName = fileInfo.fileName () baseName = fileInfo.baseName () طباعة "تحميل طبقة البيانات النقطية:" + اسم الملف إذا كان fileInfo.exists (): طباعة "الملف النقطي المحدد موجود." آخر: طباعة "الملف غير موجود" exit (1) errorStr = "غير معروف" إذا كان QgsRasterLayer.isValidRasterFileName (rasterFile ، errorStr): print "File is a raster صالح" rlayer = QgsRasterLayer (rasterFile، baseName) إذا لم يكن rlayer.isValid ( ): طباعة "فشل تحميل الطبقة!" else: print "بنجاح تحميل dem:" + fileName else: print "الملف ليس ملفًا نقطيًا صالحًا. خطأ:" + errorStr QgsApplication.exitQgis ()

داخل وحدة التحكم المضمنة ، يكون الإخراج الذي أحصل عليه هو:

تحميل طبقة نقطية: 43J11.dt2 ملف نقطي محدد موجود. الملف عبارة عن بيانات نقطية صالحة تم تحميل dem: 43J11.dt2 بنجاح

خارج وحدة التحكم المضمنة ، الإخراج الذي أحصل عليه هو:

تحميل الطبقة النقطية: 43J11.dt2 الملف النقطي المحدد موجود. الملف ليس ملفًا نقطيًا صالحًا. خطأ: غير معروف

أظن أن هذه مشكلة في المسار / التهيئة ، لذلك أقوم أيضًا بتضمين ملف .bat الذي أستخدمه هنا:

قم بتعيين QGIS_PREFIX_PATH = C:  Program Files  QGIS Wien set PYTHONHOME =٪ QGIS_PREFIX_PATH٪  apps  Python27 set PYTHONPATH =٪ QGIS_PREFIX_PATH٪ ؛ ^٪ QGIS_PREFIX_PRE ٪FIX  lib؛  python  plugins؛ ^٪ QGIS_PREFIX_PATH٪  apps  Python27؛ ^٪ QGIS_PREFIX_PATH٪  apps  Python27  Lib؛ ^٪ QGIS_PREFIX_PATH٪  apps  Python27  Lib  site -packs؛ ^٪ QGIS_gATHREFIX_on Apps ؛ ^٪ QGIS_PREFIX_PATH٪  apps  Python27  DLLs ؛ ^٪ QGIS_PREFIX_PATH٪  apps  qgis  bin ؛ ^٪ QGIS_PREFIX_PATH٪  apps  qgis  plugins ؛ ^٪ QGIS_PREFIX_PATH٪  QGISBIN  g ^٪ QGIS_PREFIX_PATH٪  bin  g ^ saga  modules؛ ^٪ QGIS_PREFIX_PATH٪  apps  Qt4  plugins؛ ^٪ QGIS_PREFIX_PATH٪  apps  grass-6.4.3  lib؛ ^٪ QGIS_PREFIX_PATH٪  apps  grass  grass-6.4.3  bin set PATH =٪ بايثونباث٪ ؛٪ باث٪

أحتاجه للعمل خارج وحدة التحكم المضمنة لأنني بحاجة إلى حزمة QGis كجزء من تطبيقي. خطتي النهائية هي تضمين ملف .bat حيث سأقوم بتعيين QGIS_PREFIX_HOME من مثبت تطبيقي.


أعتقد أنك بحاجة إلى تضمين هذا السطر:

QgsApplication.setPrefixPath ("C:  Program Files  QGIS Wien  apps  qgis" ، صحيح)

قبل هذا مباشرة:

QgsApplication.initQgis ()

الأهرامات النقطية

تستخدم الأهرامات لتحسين الأداء. إنها نسخة مختزلة من مجموعة البيانات النقطية الأصلية ويمكن أن تحتوي على العديد من الطبقات المختزلة. يتم اختزال كل طبقة متتالية من الهرم بمقياس 2: 1. يوجد أدناه مثال لمستويين من الأهرامات التي تم إنشاؤها لمجموعة بيانات نقطية:

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

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

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


& quota network request انتهت مهلة & quot - فشل تحميل طبقات WMS في QGIS

مرحبًا بالجميع ، لدي سؤال يتعلق بمحاولاتي لاستيراد عنوان رابط WMS من موقع NSW Spatial Services الموجود هنا: https://maps.six.nsw.gov.au/arcgis/rest/services/public/NSW_Cadastre/ MapServer

عند توصيل عنوان URL الخاص بـ WMS ومحاولة استيراد الطبقة إلى QGIS ، يفشل التحميل. سيظهر إشعار لتنبيهك إلى انتهاء مهلة الجلسة. لقد تمكنت من تحميل طبقة واحدة (أمس) لكنها تأخرت بشدة لدرجة أنني لم أتمكن حتى من التنقل على الشاشة. لم أتمكن من تحميله مرة أخرى منذ ذلك الحين. لم تنجح أبحاثي على الإنترنت ومحاولاتي المختلفة لحلها حتى الآن. هل هناك طريقة لجعل هذه الملفات أصغر؟ لا أعرف كيفية حل هذه المشكلة.

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

إذا لم يكن لديك & # x27t بالفعل ، فقم بتثبيت Fiddler أو أداة أخرى لتصحيح أخطاء الويب لالتقاط حركة مرور الويب الخاصة بك عند حدوث المشكلة. بعد ذلك ، يمكنك البدء في النظر إلى الدردشات بين عنوان URL الخاص بالخادم الذي قمت بمشاركته و QGIS. هل أي طلبات ناجحة؟ هل ترى 400 أو 500 خطأ؟ ما هو السلوك الذي تراه مع نفس خدمة WMS ولكن مع تطبيق مختلف؟

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

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


الكلاسيكية & # 8211 QGIS لنظام Android ينمو

العصر القادم من QGIS لنظام Android هو ما يمكن اعتباره وقت تعزيز المعرفة والتأملات الفلسفية وظهور الميزات العظيمة الأولى بما في ذلك:

فشل بايثون

ربما كانت النكسة الرئيسية في QGIS لتاريخ android & # 8217s هي عدم اكتمال دعم Python. لقد اقتربت منه عدة مرات ولكن للأسف لم أتمكن من ترويض الثعبان. ربما شيء سوف ننظر إليه & # 8217 في المستقبل ، من يدري.

بعد الإطلاق ، أعقب الإطلاق وقتًا نشطًا للغاية للحفاظ على QGIS لنظام Android متزامنًا مع إصدارات سطح المكتب مما أدى إلى إصدار منتظم للتحديثات على playstore بين 2013 وأواخر 2014. وهذا أيضًا عندما بدأ Matthias Kuhn الالتزام بـ QGIS لمستودع Android.

إنه لمن دواعي سرورنا أن نعلن عن الاسم الجديد لما عُرف لفترة وجيزة باسم QGIS mobile.

الرجاء الترحيب بـ QField لـ QGIS ™!

بعد التفكير طويلاً في الأسماء والمتغيرات المختلفة بما في ذلك QGIS mobile و QTouch و OPENGIS.ch QGIS mobile و QWork وغير ذلك الكثير ، شعرنا أن QField يمثل أفضل ما نريد أرشفته. تطبيق لالتقاط البيانات الميدانية وإدارتها متوافق تمامًا مع QGIS ™.

https://www.opengis.ch/2015/01/28/qgis-mobile-is-now-qfield/

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

https://www.opengis.ch/2015/06/15/qfield-in-the-wild/

تركيب انسيابي

منذ بداية QGIS لنظام Android ، لتوزيع مكتبات Qt المطلوبة ، استخدمنا مشروعًا يسمى & # 8220ministro & # 8221. كان هذا مثيرًا للاهتمام لأنه سمح بتنزيل المكتبات مرة واحدة فقط ولكن من ناحية أخرى ، كانت تجربة مؤلمة جدًا للمستخدم الذي احتاج إلى تثبيت تطبيق ثانٍ قبل بدء QField. في نهاية عام 2015 ، كان الأمر كذلك حتى الآن ، وتمكنا أخيرًا من التخلص من تلك التبعية وجعل عملية التثبيت مبسطة قدر الإمكان.

لقد تم ذلك ، وتمكنا أخيرًا من التخلص من Ministro حتى نتمكن أخيرًا من القول ، QField يعمل على أي أندرويد من 4.0.3 (ICS). هذا يجعل اعتبارًا من اليوم (وفقًا لجوجل) 96 ٪ من عمليات تثبيت android في جميع أنحاء العالم.

https://www.opengis.ch/2015/12/01/qfield-for-android-5/

تحضير بيانات DEM لاستخدامها في شرفة المراقبة

عادةً ما يتم إنشاء بيانات DEM بدقة عالية جدًا. يستخدم غدالوارب لتقليل دقة عرض التضاريس إلى حجم يسهل التحكم فيه قبل استخدامه في شرفة المراقبة.

غالبًا ما تحتوي بيانات DEM على & quotholes & quot أو & quotvoid & quot المناطق. تتوافق هذه الأقسام مع المناطق التي لا يمكن فيها جمع البيانات أثناء إنشاء DEM. في حالة البيانات & quothole & quot ، فسيتم تخصيص قيمة دنيا أو قصوى للثقب لنوع البيانات المستخدم في ذلك المارك الألماني.

حاول دائمًا تنزيل & quotfinished & quot إصدارات مجموعات بيانات DEM ، حيث تم ملء الثغرات. إذا كانت تضاريس DEM تحتوي على ثقوب (تُعرف أيضًا باسم قيم NODATA) ، فحاول إصلاحها يدويًا باستخدام أدوات gdal ، مثل gdal_fillnodata.py.


غير قادر على تحميل أي ملف نقطي باستخدام QGIS Python - أنظمة المعلومات الجغرافية

هذا هو سجل التغيير للإصدار التالي من QGIS - الإصدار 2.14.0 'Essen'. كانت إيسن هي المدينة المضيفة للقاءات المطورين لدينا في أكتوبر 2012 و 2014.

الافراج على المدى الطويل

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

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

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

الميزات الجديدة في QGIS 2.14 'Essen'

إذا كنت تقوم بالترقية من QGIS 2.8 (إصدارنا السابق LTR) ، فستجد العديد من الميزات الجديدة الرائعة في هذا الإصدار. نحن نشجعك على الاطلاع على سجلات التغيير للإصدارات المتوسطة بخلاف LTR 2.10 و 2.12 حيث أن QGIS 2.14 يتضمن جميع الميزات المنشورة في تلك الإصدارات أيضًا. لاحظ أن 2.14 يدخل أولاً في مستودعات الحزم العادية ولن يحل محل 2.8 في مستودعات حزم LTR على الفور. سيحدث ذلك عند إصدار 2.16.

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

نود أن نشكر المطورين والموثقين والمختبرين وجميع الأشخاص العديدين الذين تطوعوا بوقتهم وجهدهم (أو تمويل الناس للقيام بذلك). من مجتمع QGIS نأمل أن تستمتع بهذا الإصدار! إذا كنت ترغب في التبرع بالوقت أو المال أو المشاركة بطريقة أخرى في جعل QGIS أكثر روعة ، يرجى التجول على qgis.org وتقديم يد المساعدة!

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

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


السلاحف في الفضاء! دمج نظم المعلومات الجغرافية و NetLogo

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

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

استيراد بيانات GIS باستخدام أوامر إدخال / إخراج الملف

تتمثل إحدى طرق جلب البيانات إلى NetLogo في استخدام أوامر إدخال وإخراج الملف ، والتي تسمح لـ Netlogo بالقراءة في ملفات نصية وفقًا لقواعد يحددها المستخدم. يمكن العثور على مثال على ذلك في قسم أمثلة التعليمات البرمجية في مكتبة نماذج NetLogo (“File Input Example.nlogo”). إذا قمت بفتح هذا النموذج ، فهناك ثلاثة أزرار: "load-patch-data" و "show-patch-data" و "load-own-patch-data". إذا قمت بالضغط على "load-patch-data" ، ستفتح نافذة تبدو كالتالي:

لا يبدو أنه حدث أي شيء آخر ، ولكن عند الضغط على هذا الزر ، تعمل بعض التعليمات البرمجية في الخلفية:

ما يفعله ذلك هو التحقق أولاً مما إذا كان ملف البيانات ("ملف IO تصحيح Data.txt") موجودًا ، وإذا لم يكن & # 8217t ، فسيتم إرسال رسالة تفيد بأن الملف ليس في الدليل الحالي. سيجد NetLogo الملف فقط إذا كان موجودًا في نفس الدليل مثل النموذج نفسه ، أو إذا قمت بتحديد موقع ملف آخر. لكن في هذه الحالة ، يجب أن يكون الملف في نفس الدليل ، لذلك لا ينبغي أن يكون هناك & # 8217t أي مشكلة. ثم يفتح NetLogo قائمة فارغة تسمى تصحيح البيانات، ثم يقرأ في البيانات. تأتي البيانات في تسلسل من الأرقام التي يمكن تقسيمها إلى عدة أرقام ، يمثل كل منها إحداثيات x و y للتصحيح ، ثم قيمة اللون المراد إضافتها إلى هذا التصحيح. مثل ذلك:

يستخدم النموذج بعد ذلك ملف في حين حلقة مع الشرط لا ملف في نهاية؟ للتكرار خلال الملف بأكمله. في كل مرة & # 8217 حول الحلقة ، سيستخدم NetLogo الامتداد قراءة الملف الأمر ثلاث مرات لقراءة ثلاث مجموعات نصية (يتم فصل كل منها بمسافة في ملف البيانات) ، ودمجها في قائمة واحدة من القيم (على سبيل المثال [-17 17 9.9999]) وإضافتها إلى القائمة المسماة تصحيح البيانات. بمجرد أن يصل الملف إلى نهايته ، فإن ملف في حين توقف الحلقة ، وتم تحميل جميع البيانات في NetLogo كقوائم فرعية ضمن بيانات التصحيح المتغيرة القائمة. ثم يتم إغلاق الملف باستخدام ملف مغلق من المهم القيام بذلك إذا انتهى بك الأمر إلى القراءة والكتابة باستخدام ملفات متعددة.

الخطوة التالية هي الضغط على زر "إظهار البيانات التصحيح". يؤدي الضغط على هذا الزر إلى تشغيل هذا الرمز:

يمسح هذا الرمز أولاً جميع الكيانات الموجودة من النموذج (cp = بقع واضحة ، ط = السلاحف الصافية). ثم ، طالما أن ملف تصحيح البيانات القائمة موجودة ، سيتم قراءتها في كل قائمة فرعية باستخدام foreach قيادة. ال foreach الأمر عبارة عن حلقة تتكرر فوق كل عنصر في القائمة. إذا كنت تريد الإشارة إلى العنصر المعني برمزك ، فيمكنك استخدام ?. ال ? يرمز إلى "عنصر في هذه القائمة". في هذه الحالة، ? يشير إلى كل قائمة فرعية داخل تصحيح البيانات، و foreach تستمر الحلقة من خلال القائمة ، وتصبح كل قائمة فرعية ? فى الاعاده. لذلك ، عندما يقرأ الكود أول قائمة فرعية ، وهي [-17 17 9.9999] ، فسوف يطلب ذلك أول ؟ البند 1 ؟، والذي يترجم إلى "(العنصر الأول في هذه القائمة الفرعية) (العنصر الثاني في هذه القائمة الفرعية)" أو -17 17. ال أول يشير الأمر إلى العنصر الأول في القائمة الفرعية ، حيث يمكنك أيضًا استخدام الأمر العنصر 0 للإشارة إلى هذا البند. العنصر الثاني في القائمة الفرعية هو البند 1، وهكذا. ثم يطلب ذلك التصحيح (التصحيح -17 17) ل تعيين pcolor الماضي؟الذي يسأل عن الاخير العنصر (والذي يمكن الإشارة إليه أيضًا باسم البند 2) في القائمة الفرعية ، وهي 9.9999 (الرمز الرقمي للظل الأبيض). هيكل القائمة / القائمة الفرعية داخل ملف foreach يمكن أن تكون الحلقة مربكة بعض الشيء ، ونأمل أن يوضح هذا الرسم البياني العلاقات بشكل أفضل قليلاً:

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

ومع ذلك ، إذا لم تكن بياناتك بهذا التنسيق & # 8217t (أو لا يمكنك تحويلها بسهولة) ، هناك خيار آخر (ربما يكون أسهل) وهو استخدام امتداد GIS الخاص بـ NetLogo.

باستخدام امتداد GIS

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

يمكن لملحق NetLogo GIS معالجة البيانات النقطية والمتجهية (ملف الشكل). توجد أمثلة حول كيفية عمل كود GIS في قسم أمثلة Code في مكتبة نماذج NetLogo. سيستخدم المثال التالي المعقول كلا النوعين من البيانات في نموذج NetLogo واحد.

لا يمكن استيراد البيانات النقطية (الشبكية) مباشرة إلى NetLogo إلا كملفات ASCII (.asc) أو شبكة ESRI (.grd). من المهم أن يكون كل ملف مصحوبًا بملف إسقاط (.prj) بالتنسيق الصحيح.

لنفترض أنني & # 8217m مهتم بتصريف الأنهار على تجمعات الأسماك الساحلية. للبدء ، سننزل بعض بيانات الارتفاع / قياس الأعماق من مجموعة بيانات قياس الأعماق العالمية GEBCO. سأقوم بسحب مربع من 150 شرقًا إلى 170 غربًا ، ومن 60 جنوبًا إلى 20 جنوبًا (المنطقة المحيطة بنيوزيلندا) وحفظه باسم "nz_area.asc". ثم نقوم بإسقاط الملفات (nz_area.asc و nz_area.prj ، على الأقل) في الدليل حيث يتم تخزين نموذجنا.

البيانات نفسها ، المسجلة بمقياس 30 ثانية قوسية لكل بكسل ، تعطينا شبكة 4800 × 4800 بكسل. لإعداد العالم لقبول هذا ، يجب عليك تحرير الإعدادات بحيث يكون موقع الأصل في الزاوية اليسرى السفلية ، واضبط max-pxcor و max-pycor على 199 ، واختر حجم بكسل 2 أو نحو ذلك. يجب أن يؤدي ذلك إلى جعل الخريطة بحجم معقول على شاشتك ، ولكن يمكنك تغيير ذلك لاحقًا على النحو الذي تراه مناسبًا.

ستسمح لك إضافة هذا الرمز إلى نموذجك باستيراد بيانات GIS مباشرةً:

المتغير الشامل ارتفاع سيكون مكان تخزين مجموعة البيانات النقطية داخل النموذج. ال gis: تحميل مجموعة البيانات يتم تحميل الأمر في البيانات ، بينما يتم تحميل ملف gis: set-world-envelope-ds يضبط غلاف العالم ليطابق مجموعة بيانات GIS. يعد هذا الأمر الأخير مهمًا جدًا إذا كنت تعمل مع أكثر من طبقة GIS وترغب في تقييد حدود عالمك.

في بعض الأحيان ، يؤدي تحميل البيانات إلى حدوث أخطاء. إليك واحدًا شائعًا:

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

  1. لن يتعامل مع الفواصل (،) بدلاً من الكسور العشرية (.). يجب تجنب أي فواصل أو علامات ترقيم أخرى.
  2. لا يحب قيم NO_DATA معينة. من الأفضل استبدالها بعدد صحيح غير مستخدم (مثل -9999).
  3. يجب فصل مصطلحات الرأس الخاصة بك عن قيمها بمسافات مفردة ، وألا تتداخل مع بعضها البعض. يجب أن يبدوا مثل هذا

نكلس 4800
نرووس 4800
150 - ندى
يل كورنر -60
حجم الخلايا 0.00833333333333333

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

قد تحدث أخطاء شائعة أخرى إذا تجاوزت مساحة Java أو كان لديك بيانات عرض غير صحيحة. إذا كانت الأولى ، فإن مجموعة البيانات الخاصة بك أكبر من أن تستخدمها NetLogo. قد تتمكن من الالتفاف على هذا عن طريق تغيير حجم كومة Java ، ولكن هذا يعمل فقط إلى نقطة معينة. يمكنك محاولة تحميله في QGIS أو نظام GIS آخر وإما تقليص تغطية المنطقة أو إعادة تشكيلها إلى دقة أقل لتصغير حجم الملفات ، طالما أن هذا لا يؤثر سلبًا على نموذجك. إذا كانت المشكلة تتعلق ببيانات الإسقاط ، فتأكد من حصولك على ملف إسقاط منسق بشكل صحيح لبياناتك. في هذه الحالة ، يبدو تنسيق GEOGCS كما يلي:

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

هذا يجب أن ينتج هذه الصورة في نافذة العالم.

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

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

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

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

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

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

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

تسمح لنا إضافة هذين السطرين الأخيرين برؤية بيانات النهر المتراكبة:

ليس تصورًا رائعًا ، لكنك حصلت على الفكرة. في هذه المرحلة ، يمكن للوكلاء & # 8217t التفاعل مباشرة مع البيانات. يعتمد ما إذا كان بإمكان الوكيل التفاعل مع البيانات أم لا على علاقته بملف الشكل ، أو الأهم من ذلك ، ميزاته ورؤوسه. يمكننا الحصول على الميزات الفردية لملف الشكل (أي ، كل متعدد الخطوط يمثل قسم نهر) باستخدام gis: ميزة قائمة قيادة. حاول إدخال هذا الرمز في سطر الأوامر:

يجب أن ينتج قائمة تبدو كالتالي:

تحتوي كل مجموعة من الأقواس المزدوجة المتعرجة << >> على ميزة متجهية ، وهي في هذه الحالة عبارة عن خط متعدد يمثل مقطعًا من النهر يبلغ طوله 6.935 كيلومترًا تقريبًا. يمكننا أيضًا الحصول على بيانات النهر بدلالة رؤوسه باستخدام gis: قائمة قمة الرأس أمر خاص بميزة معينة (يمكن الوصول إليها عن طريق معالجة gis: ميزة قائمة كقائمة NetLogo على سبيل المثال gis: قائمة قمة الرأس (العنصر 0 gis: قائمة ميزات الأنهار)). هذا مفيد بشكل خاص عند التعامل مع بيانات النقطة ، حيث أن كل نقطة هي رأسها الخاص. أمر مماثل هو gis: النقطه الوسطى من، والتي من شأنها أن تقدم رأسًا واحدًا في وسط الميزة. يمكن استخدام هذا لتحديد المركز الجغرافي لجزء النهر. أخيرًا ، يمكن ترجمة هذه الرؤوس إلى قوائم إحداثيات NetLogo باستخدام gis: location-of command. فمثلا:

سيُترجم هذا إلى & # 8220 إحداثيات NetLogo للنقطة الوسطى للميزة الأولى في مجموعة بيانات الأنهار & # 8221 ، والتي هي [100.3872222118864 77.92170204594207].

من أجل جعل الوكلاء على دراية ببيانات المتجه ، نقوم بتأسيس علاقتهم الطوبولوجية بالبيانات. يتم إنشاء العلاقات الأساسية باستخدام سلسلة من الأوامر التي تُرجع القيم المنطقية:

gis: يتقاطع؟ يحدد ما إذا كان العامل أو التصحيح يتقاطع مع البيانات
gis: يحتوي؟ يحدد ما إذا كان العامل أو التصحيح يحتوي على البيانات
gis: تم احتواؤه بواسطة؟ يحدد ما إذا كان الوكيل أو التصحيح متضمنًا في البيانات

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

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

نذهب أبعد من ذلك

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

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

إذا كنت لا تتضايق من تصدير البيانات وإجراء التحليل المكاني في برنامج منفصل ، فيمكنك استخدام امتداد NetLogo R لتشغيل التحليل المكاني باستخدام spatstat صفقة. يمكن العثور على تعليمات حول كيفية العمل مع الامتداد R في منشور المدونة السابق هذا ، ومعلومات حول spatstat الحزمة هنا.

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

تم التعبير عن هذا القلق الأخير من قبل ، ويجب أن يكون ذا أهمية حقيقية للمصممين في جميع التخصصات. لكن هذا يتعارض مع حاجتنا إلى المعلومات المفيدة للقضايا المطروحة الآن. أختتم بي & # 8217ll باقتباس من H.

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

& # 8230 المحاكاة القائمة على الوكيل توفر طرقًا جديدة ومثيرة للمديرين والباحثين لاستكشاف السيناريوهات البديلة ومقارنتها قبل تنفيذها وتقييمها من حيث [] عواقب إجراءات السياسة والتأثيرات الاجتماعية والبيئية والاقتصادية.


2 إجابات 2

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

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

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


3 إجابات 3

حللت المشاكل. هناك طريقتان:

قم بتغيير إعادة التوجيه من & amp & gt & gt إلى 2 & gt & amp1. حتى الآن يبدو crontab -e

أعتقد يعمل ما سبق لأن cron افتراضيًا يستخدم sh لتشغيل المهمة بدلاً من bash ، لذا فإن & amp & gt & gt غير مدعوم بواسطة sh.

قم بتغيير الغلاف الافتراضي عن طريق إضافة SHELL = / bin / bash في ملف crontab -e.

أود إضافة حاشية سفلية أو إضافة إلى إجابة @ RanRag.

تأكد من أن بناء جملة إعادة توجيه shell الخاص بك يتوافق مع / bin / sh. إذا حاولت استخدام بناء جملة إعادة توجيه shell غير صالح مع / bin / sh ، فسيفشل الأمر الخاص بك ولن يتم تشغيل وظيفة cron أبدًا.

في /etc/cron.d/example1 ، ملفات التكوين إذا حددت مستخدمًا بخلاف الجذر وكان غلاف تسجيل الدخول لهذا المستخدم ليس / bin / bash. لا يزال يتعين عليك استخدام بناء الجملة / bin / sh في الأمر /etc/cron.d/example1.


أخيرًا: حاول مرة أخرى

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

ما هي "أفضل" طريقة لترميز النص بحيث يمكن تخزينه بشكل آمن إلى حد ما في ملف نصي ثم فك تشفيره لاحقًا بحيث يمكن قراءة النص (يفضل فقط بواسطة المالك)

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

يعتمد السؤال عن ماهية التشفير "الأفضل" على الكثير من الأشياء ، ولكن في الوقت الحالي يُطلق على التشفير الأكثر موثوقية على نطاق واسع AES (معيار التشفير المتقدم). يمكن لـ AES في حد ذاته فقط تشفير كتل صغيرة من البيانات (16 بايت بالضبط) ، لذلك يتم دمجه مع وضع تشفير الكتلة للعملية وأحيانًا حشوة تتيح لك إعادة استخدام نفس المفتاح مع عدد غير محدود (تقريبًا) من الكتل و مع البيانات التي ليست عددًا صحيحًا مضاعفًا لحجم الكتلة. In this way, I can have some secret data (such as a password file) of essentially arbitrary length, and it is totally unreadable to anybody who doesn't have the right 16- or 32-byte key (which in practice can be derived from a password, though most real-world passwords are far more predictable than a proper encryption key so this does make it weaker)

Any decent password manager (including the multiple available commercial and/or open-source ones) use a "master password" or "master key" to protect the stored passwords. This master secret is used to encrypt and decrypt an encryption key (which is totally randomly generated and never stored in plain text, but is stored in encrypted form along with the encrypted passwords), and the encryption key is used to actually encrypt and decrypt the passwords (which, again, are never stored in plain text). The master can either be a key that is stored in some device (like a Yubikey or flashdrive that must be entered before decrypting the passwords), or a password itself that is turned into a cryptographic key by running it through a key-derivation function (essentially a very computationally expensive salted cryptographic hash function).

The reason for this additional layer of indirection (master key wrapping the encryption key which in turn wraps the passwords, rather than just using the master key to wrap the passwords) is so that you can change the master or have multiple master secrets (say, a password and also a recovery key stored on a hardware token) without needing to re-encrypt anything except the encryption key. This also makes it easier to handle password sharing between users (where one user wants to allow another user to see some of their passwords, but not all), if you ever desired to add that feature.

Unfortunately, Automate doesn't support any cryptographic ciphers (and the hash functions it supports are old and deprecated, although you can build a KDF out of those if you have to). Short of re-implementing something like Blowfish or AES using Automate - which you definitely should not do - that means the language is simply not suitable for any app that needs to handle sensitive data.

You seem to have a few false beliefs about security which I'm going to try to clear up here.

that means that the program will be open source, so I think it's impossible to make it completely secure because anyone can see & modify their local version of the code

There are lots of extremely secure open-source tools for storing secret data. A few examples: Gnu Privacy Guard (GPG), TrueCrypt/VeraCrypt, OpenSSL, numerous email clients with support for the OpenPGP and/or S/MIME standards like Thunderbird, etc. The key difference between all of these programs and your idea is that they all use actual encryption.

they need both the code & someone else's save-file to compromise the security, and realistically then it's already game over for any security program

This is very, very false. A crucial requirement of good encryption is that even if the attacker has the full ciphertext (encrypted data, such as your password save file, and any data typically stored along with it such as a message authentication code and the initialization vector for the encryption) and knows the full details of the algorithm used to encrypt it (such as AES-256 in CBC mode with that known IV and using PKCS5 padding, as implemented in a particular version of the open-source "OpenSSL" tool), the attacker still should not be able to decrypt the data without a brute-force attack on the key, which can be made long enough that such an attack is totally impractical (we're talking "using every processor in existence on earth, you still wouldn't finish before the heat death of the universe" levels of impractical, here). That is what people mean when they say "obscurity is not security" if your system is secure only so long as the attacker doesn't know exactly how it works, it actually just isn't secure.

I'm not aiming for Bank-level security

تهدف إلى أعلى. Banks often don't actually use very good cryptography (or security in general), by modern standards. It would be harder to get into my password manager's vault than into my bank account, because my bank doesn't permit the use of passwords that are as strong as my password manager does, and the numbers needed to extract money from my account (account number + routing number, or card number + ZIP code + CVV or PIN) are probably easier to guess or find than even the bank account password (still not truly easy, but probably easier).

I don't really trust them since I can't know what their code is doing to my passwords

Even password managers that aren't 100% open-source should still enable you to see what they actually do with the passwords. An example is LastPass, which is commercial software but is offered as browser extensions. Browser extensions are written in JavaScript and are not compiled, so you can read the source code yourself and see exactly what it does (and you can also use your browser's developer tools to debug the extension while it works and monitor what network traffic it generates or receives). Obviously, you personally might not want to do this, but you could, and people have the idea is that كافية people do this that if they try to pull anything sketchy, it would get caught and announced publicly, and then nobody would use it anymore.

like maybe it's storing them on a central server. NO!

Some security people definitely agree with you that they don't want their password vault going to any device they don't control (such as a password manager company's server). However, I don't think you have a good grasp of the actual risks. Done right (and remember, you can verify that it's done right), the password manager company can never decrypt your vault, so even though they hold onto it they cannot peek inside. As mentioned above, even though they have the vault (the ciphertext) and obviously know exactly how it was encrypted (because it was their code that did it), they cannot decipher the contents without the encryption key, and well-designed password managers never store or transmit the encryption key (or any material used to derive it). There is still بعض risk, because they can try to steal or guess your master key somehow without you knowing that it's happening (for example, by trying to guess your password using an "offline" attack), which they cannot (usefully) do if they don't have the ciphertext (the vault), but it's probably a lot less risk than you thought.