أكثر

في QGIS ، كيف يمكنني تحرير / حفظ البيانات التي ليس لها أشكال هندسية؟

في QGIS ، كيف يمكنني تحرير / حفظ البيانات التي ليس لها أشكال هندسية؟


يمكنني في QGIS يستورد جداول البيانات (CSV على وجه الخصوص) التي لا تحتوي على هندسة متأصلة (ولا توجد أعمدة خطوط الطول / العرض) في QGIS. لا يبدو أن هناك أي طريقة واضحة للقيام بذلك يتلاعب ب تلك البيانات (تحرير / حفظ).

(من الواضح أن هذه البيانات لها عمود مرجعي يرتبط بالبيانات التي لها هندسة).

من الموثق (في QGIS 2.6) أنه لا يمكن تحرير / حفظ ملفات CSV:

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

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

كيف أقوم بإعداد قاعدة بيانات مكانية لهذا الغرض؟


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

يتم تحميل ملف CSV في QGIS بالطريقة العادية (باستخدام الزر للقيام بذلك). ثم يمكن حفظ هذا (انقر بزر الماوس الأيمن فوق إدخال الطبقة و "حفظ باسم ...") ملف شكل ESRI. ينتج عن هذا ملفين (من المثير للاهتمام أن أيا منها لا ينتهي بالفعل بـ .shp

إذا قمت بفتح الملف بالنهاية .dbf (باستخدام الزر لتحميل طبقة متجه) يمكن استخدام هذا بالطريقة التي تخيلتها. تحرير / حفظ الأعمال كما تتوقع. كل الصلات أو العلاقات المتوقعة تعمل بشكل جيد.

الطريقة الثانية لتحقيق نفس الشيء هي استخدام أداة ogr2ogr للتحويل من ملف csv إلى "ESRI Shapefile". يبدو أن هذا ينتج ملفًا واحدًا فقط - بنهاية .dbf

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

على وجه التحديد ، لدي ملف SHP به كائنات وإدخالات CSV مع مرجع ربط في حقل واحد. أقمت علاقة في خصائص المشروع. هذه علاقة رأس بأطراف (قد تتطابق العديد من الإدخالات في ملف CSV مع كائن واحد في SHP). في نموذج QGIS الذي يظهر باستخدام أداة التحديد ، تعمل الأشياء كما هو متوقع عند استخدام أول طرقي. عند استخدام الملف المُنتَج ogr2ogr بدلاً من ذلك ، يبدو أن هناك عناوين مفقودة في العمود الأيسر من النموذج الفرعي (أي تحديد الإدخالات ذات الصلة من ملف CSV).

أتوقع أن هذه العملية قد تؤدي إلى وجود ملف يمكن للآخرين تحريره - يمكن بالتأكيد تحرير ملف .dbf في LibreOffice scalc (على الرغم من أنني إذا لم أحذف وأعيد تأسيس العلاقة ، فإن تعطل QGIS).


استخدم البرنامج المساعد QGIS QSpatiaLite للتحكم في Spatialite db ، لتخزين ملفات CSV. باستخدام هذا البرنامج المساعد ، يمكنك إنشاء قاعدة بيانات جديدة وتحميل البيانات والاستعلام عنها وتحريرها.


هناك مكون إضافي يسمح بذلك ، قم بتشغيل المكونات الإضافية التجريبية. لماذا لا يمكنني تحرير جدول السمات الذي تم استيراده من خلال "نص كطبقة"


غريب - لا يمتلك مسؤول المجال أي حقوق لتعديل دليل البرامج النصية للمجال

ها هي لعبة سريعة جعلتني أخدش رأسي. ليس خبيرًا في العرض ، لذا فإن الإجابة ليست عاجلة ، ولكنها لا تزال.

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

  • المسؤولين (مدمج)
  • مديري المؤسسة
  • إدارة المجال
  • مستخدمي المجال
  • مالكو منشئ نهج المجموعة
  • تفحص مشغلي
  • إدارة المخطط

للأسف ، لا يمكنني إنشاء أي ملفات داخل المجلد التالي:

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

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


10 إجابات 10

معلومات عامة: ما هو شل هروب؟

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

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

بعض الأمثلة على الحزم التي تستخدم shell escape:

  • سكت
  • svg
  • asypicture ب
  • إيميكيدكس
  • غنوبلوتكس
  • جراففيز
  • tikz (تخريج)
  • مستقل (خيار التحويل)
  • pgfplots (gnuplot)

عادةً ما يكون الإعداد الافتراضي هو & quotRestricted Shell escape & quot ، مما يسمح باستدعاء عدد صغير من البرامج افتراضيًا (في شكل مقيد لا يسمح بإعادة توجيه shell) ، وهي (في تكوين TeX Live 2021 الافتراضي)

  • bibtex
  • bibtex8
  • اكستربب
  • جريجوريو
  • kps الذي
  • جعل الفهرس
  • repstopdf
  • r-mpost
  • texosquery- jre8

إذا كنت لا تريد السماح بتشغيل هذه البرامج ، فيمكنك استخدام الخيار
- لا قذيفة هروب
بجميع الطرق الموضحة أدناه لـ - shell-escape.

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

سيتم إنشاء مستند مع عرض إعداد الهروب من shell الحالي.


نقاط الضعف

فأين هي نقاط الضعف؟

  • نقاط نهاية الاتصال الآمن. يمكن أن يكون النقل آمنًا ، ولكن ماذا عن الخادم نفسه؟ أم العميل؟ لا يجوز لهم ذلك.
  • عدم استخدام HTTPS. يمكن خداع المستخدمين لعدم استخدام النظام بطرق مختلفة.
  • المراجع المصدقة غير جديرة بالثقة. يكسرون جزء المصادقة ، مما يسمح لهجوم MITM.
  • آلية تشفير ضعيفة. تقادم تقنيات التشفير بطريقتين: يمكن العثور على عيوب خطيرة في تصميمها ، مما يؤدي إلى هجمات أكثر كفاءة من القوة الغاشمة ، أو قد تسمح معلماتها وقدرتها على المعالجة بسبب قانون مور بهجوم القوة الغاشمة الممكن.
  • تنفيذ المخطط. حسنًا ، إذا حددت A ونفذت B ، فقد لا يتم الاحتفاظ بخصائص A لـ B.

Raspberry Pi 3 و Raspbian Jessie - كيفية تشغيل fsck عند التمهيد؟

كيفية تشغيل fsck عند التمهيد عند استخدام Pi 3 و Raspberry Jessie؟ لقد قرأت بعض البرامج التعليمية لكنها تختلف.

لقد قمت بتشغيل sudo touch / forcefsck ولكن ماذا علي أن أفعل أيضًا؟ أعلم أنه يجب علي تعيين FSCKFIX = نعم ولكن ما هو الملف الصحيح؟ يقول البعض /lib/init/vars.sh آخرون / etc / default / rcS.

كيف يمكنني التحقق من أن الإعدادات الخاصة بي تعمل؟ ليس لدي رؤية للفحص. هناك انقطاع في التيار الكهربائي ، لذلك هناك مخاطر عالية لتلف نظام الملفات.

جربت حلين مذكورين أدناه.

1) باستخدام sudo shutdown -rF now /var/log/boot.log يقول:

2) باستخدام fsck.mode = force and fsck.repair = yes في /boot/cmdline.txt يقول bootlog:

لماذا ملف السجل مختلف تمامًا في هاتين الحالتين؟


يمكنك استخدام هذه الحيلة. افتح محطة (بالضغط على Ctrl + Alt + T) وقم بذلك

انقل الشخص التالف إلى مكان آمن

سيؤدي هذا إلى فتح software-properties-gtk مع عدم تحديد مستودع.

ثم قم بتغيير الخادم إلى الخادم الرئيسي أو إلى أي خادم آخر من اختيارك. يجب تمكين بعض المستودعات من النافذة الجديدة لإنشاء ملف sources.list جديد في / etc / apt /.

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

تم التحديث بمحتوى مضمّن

هذا هو ملف sources.list لـ 12.04 Precise Pangolin.

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

لاستبدال الكلمة ، يمكنك استخدام هذا الأمر sed (بافتراض أنك نسخت محتوى المصادر في /etc/apt/sources.list):

ملاحظة 1: تشير الكلمة deb و deb-src إلى تنسيق المستودع. deb للحزم الثنائية و deb-src للحزم المصدر.

ملاحظة 2: استخدام # في بداية السطر يجعل هذا السطر تعليقًا. سيتجاهله apt ، لذلك سيتم تعطيل أي مستودعات مذكورة في هذا السطر.

ملاحظة 3: هناك خطوط المستودعات التي تشمل جميع المكونات الأربعة: رئيسي ، كون ، مقيد ، كون متعدد. يمكنك تعطيل واحد أو أكثر منهم عن طريق إزالة الكلمة.

ملاحظة 4: يمكنك أن تجد بعض الشرح عن المستودعات في إجابتي الأخرى


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

إذا كان متغير يونكس الخاص بك لديه وقت إنشاء ، فراجع الوثائق الخاصة به. على سبيل المثال ، في نظام التشغيل Mac OS X (المثال الوحيد الذي أعرفه) ، استخدم ls -tU. يقوم Windows أيضًا بتخزين وقت الإنشاء ، ولكنه لا يتعرض دائمًا لمنافذ أدوات يونيكس المساعدة ، على سبيل المثال لا يتوفر لدى Cygwin ls خيار لإظهاره. يمكن لأداة الإحصاء المساعدة إظهار وقت الإنشاء ، المسمى "وقت الولادة" في أدوات GNU المساعدة ، لذلك تحت Cygwin يمكنك إظهار الملفات مرتبة حسب وقت الميلاد مع stat -c '٪ W٪ n' * | فرز -k1n.

لاحظ أن ctime (ls -lc) ليس وقت إنشاء الملف، إنه وقت تغيير inode. يتم تحديث وقت تغيير inode كلما تغير أي شيء يتعلق بالملف (المحتويات أو البيانات الوصفية) باستثناء أنه لم يتم تحديث ctime عندما تتم قراءة الملف فقط (حتى إذا تم تحديث atime). على وجه الخصوص ، يكون ctime دائمًا أحدث من mtime (وقت تعديل محتوى الملف) ما لم يتم تعيين mtime صراحةً على تاريخ في المستقبل.


قد يرغب المستخدمون المتقدمون في وضع ملف .desktop يدويًا بتنسيق

/.config/autostart لتشغيل التطبيقات بعد تسجيل دخول المستخدم. قد يحتوي هذا على المحتوى التالي:

قد تضطر إلى منح هذا الملف إذن التنفيذ.

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

قم بتشغيل تطبيقات بدء التشغيل من داش

انقر فوق تطبيقات بدء التشغيل

اكتب اسم البرنامج ، واستعرض وصولاً إلى الأمر ، ثم انقر فوق إضافة.

إضافة: هذه عينة أستخدمها لبدء تشغيل Guake تلقائيًا - إصدار Gnome من Yakuake:

ضع هذا في مربع "الأوامر".

يبدأ هذا في guake تلقائيًا ، لكنه ينتظر دقيقتين قبل القيام بذلك. يمكنك تغيير 120 إلى ما تريد.

لـ 14.04 و 16.04:

اكتب بدء التشغيل في داش ، وقم بتشغيل نموذج طلب بدء التشغيل هناك

وبعد ذلك فقط اتبع بقية الخطوات.

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

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

لأداة Xfce4 Startup متاحة في الإعدادات> الجلسة وبدء التشغيل

الصورة مجاملة من Xubuntu Geek xubuntugeek

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

/.config/autostart/ دليل لـ Xfce4 ، وملف سطح المكتب بتنسيق

/.config/autostart لـ Unity لتشغيل التطبيقات بعد تسجيل دخول المستخدم.

تحقق من هذا السؤال للحصول على مزيد من المساعدة بشأن إنشاء ملفات .desktop:

لاحظ أيضًا إذا كنت تريد بدء تشغيل تطبيق بدء التشغيل في XFCE فقط ، ولكن ليس في Unity ، فيجب عليك وضع السطر OnlyShowIn = XFCE في ملف .desktop. إنه OnlyShowIn = الوحدة لتطبيق الوحدة فقط.

قد ترغب في بدء تشغيله من CLI عبر:

(فقط في حالة عدم تشغيل جنوم))

ألق نظرة على الدليل $ XDG_CONFIG_DIRS / autostart:

التي تقول أن هناك 3 أدلة في هذا المثال. كنت أرغب في تقليم دخول نوتيلوس

إذا كان بإمكانك إضافته ، فقم بإنشاء ملف إدخال سطح المكتب: sudo touch /etc/xdg/autostart/my-shell-autostart.desktop أضف المحتويات التالية:

يمكنك استخدام تطبيق بدء التشغيل جنوم.

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

قم بتشغيل تطبيق بدء التشغيل من أعلى القائمة اليمنى

بدون النقر فوق إضافة ، افتح داش واكتب التطبيق الذي تريد تشغيله عند بدء التشغيل ، على سبيل المثال سكايب

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

أيضًا لوضع BATCH FILE في تطبيقات بدء التشغيل للتشغيل بعد تسجيل دخول المستخدم. اكتب في سطر الأوامر في بدء تشغيل التطبيقات في حقل الأمر:

  • gnome-terminal: افتح الجهاز بعد تسجيل دخول المستخدم بامتيازات المستخدم الحالية
  • -e: اضبط المحطة لتنفيذ الملف الدفعي
  • /batch-path/batch-name.sh: هو المسار الكامل للدفعة والاسم الكامل

تذكر من أذونات دفعة الملف لتعيين العلم السماح بتنفيذ الملف كبرنامج ل على.

نظام التشغيل Ubuntu 13.10 المزود بإرشادات الوحدة

القيام بذلك باستخدام أمر يتطلب sudo أمر صعب بعض الشيء.

في حالتي ، أردت تعطيل برنامج تشغيل PSMOUSE باستخدام الأمر sudo rmmod psmouse لمنع مشكلة النقر بالماوس التي تظهر بشكل عشوائي. راجع التعامل مع تجميد الماوس ولوحة اللمس في Linux للحصول على مزيد من المعلومات حول هذه المشكلة. لقد تعبت من دخوله في كل حذاء.

لم يكن مجلد /.config يحتوي على ملف بدء تلقائي مجلد فرعي ، لذلك قمت بإنشاء واحد. هذا مكنني تفضيلات تطبيقات بدء التشغيل الإعدادات المراد حفظها.

لتبديل رؤية تطبيقات بدء التشغيل المخفية ، يمكنك استخدام الأوامر التالية.

قم بتكوين الأمر الخاص بك وفقًا للوظائف المذكورة أعلاه في ملف توقعات تطبيقات بدء التشغيل نافذة او شباك.

ثم عليك تحرير ملف / الخ / sudoers ملف باستخدام sudo visudo. أضف سطرًا يحتوي على المعلومات التالية:

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

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


3 إجابات 3

ما هو الملف المناسب لاستخدامه وأفضل طريقة للقيام بذلك؟

crontab -e هو أفضل طريقة للقيام بذلك - سيسمح لك ذلك بتحرير crontab لكل مستخدم بسهولة.

إذا قمت بجدولة مهمة كمستخدم غير جذر ، فهل سيتم تشغيلها بنفسها في الفاصل الزمني كما هو محدد ، بدون مشاكل؟

نعم ، وسيتم تشغيله بامتيازات حساب المستخدم هذا.

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

هل سأحتاج إلى إعادة تشغيل الخادم بعد حفظ وظيفة cron في ملف crontab قبل أن يبدأ العمل؟

لا ، سيبدأ العمل على الفور (حسنًا ، في الوقت المحدد التالي المحتمل).

لماذا لا تقوم بتحرير الملف مباشرة؟ أين هو موقعه؟

توجد ملفات crontab للمستخدم في / var / spool / cron / crontabs ، ولكن يتم تعيين أذوناتهم بطريقة لا يمكن اجتيازها بدون إذن المستخدم المتميز (ولكن بمجرد فتحها وتسقط عملية cron الامتيازات التي لا يزال بإمكانها الوصول إليها الملف).

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

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


صدمت إلى الصفحة الرئيسية بواسطة Community & # 9830 منذ 16 ساعة

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

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

تأتي البيانات من OpenStreetMap حصريًا. يمكن أن تكون مسارات التزلج إما علاقات أو طرقًا.

لقد قمت باستيراد الطرق والعلاقات من OpenStreetMap باستخدام QuickOSM plugin في QGIS 3 باستخدام استعلام Overpass التالي:

الآن لدي طبقتان في QGIS ، واحدة للخطوط (طرق OSM) والأخرى للسلاسل متعددة الأسطر (علاقات OSM).

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

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

هل هناك طريقة لتحقيق ما أريد القيام به في QGIS؟

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

تأتي البيانات من OpenStreetMap حصريًا. يمكن أن تكون مسارات التزلج إما علاقات أو طرقًا.

لقد قمت باستيراد الطرق والعلاقات من OpenStreetMap باستخدام QuickOSM plugin في QGIS 3 باستخدام استعلام Overpass التالي:

الآن لدي طبقتان في QGIS ، واحدة للخطوط (طرق OSM) والأخرى للسلاسل متعددة الأسطر (علاقات OSM).

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

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

هل هناك طريقة لتحقيق ما أريد القيام به في QGIS؟


3 إجابات 3

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

وتريد نقل Beat It حتى النهاية ، سيكون لديك استعلامان:

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

لديك عبارتان معدتان يمكنك إعادة استخدامهما بكفاءة عالية.

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

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

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

في هذا الجدول يجب عليك إضافة معلومات الطلب.

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

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

الفئة هي ParameterTemplate (أيا كان ، لا تسأل!) تحصل الطريقة على قائمة قوالب المعلمات التي ينتمي إليها هذا القالب من قالب ActivityTemplate الأصل. (مهما يكن ، لا تسأل!) يحتوي الكود على بعض الحماية ضد نفاد الدقة. يستخدم المقسوم للاختبار: يستخدم اختبار الوحدة قاسمًا كبيرًا حتى تنفد الدقة بسرعة ، وبالتالي تشغيل رمز الحماية الدقيق. الطريقة الثانية عامة و "للاستخدام الداخلي فقط لا تستدعي" بحيث يمكن لرمز الاختبار أن يستدعيها. (لا يمكن أن يكون خاصًا بالحزمة لأن كود الاختبار الخاص بي ليس في نفس الحزمة مثل الكود الذي يختبره.) يُطلق على الحقل الذي يتحكم في الطلب اسم Ordering ، ويمكن الوصول إليه عبر getOrdering () و setOrdering (). لا ترى أي SQL لأنني أستخدم رسم الخرائط العلائقية للكائنات عبر Hibernate.


شاهد الفيديو: 01 QGIS شرح عربي المقدمة