أكثر

قم بطباعة القيم من الجداول في QGIS Console

قم بطباعة القيم من الجداول في QGIS Console


أرغب في معرفة كيفية الحصول على وحدة تحكم QGIS لطباعة القيم الفعلية المتعلقة بجدول سمات الطبقة (مثل أسماء الحقول وقيم الميزات وما إلى ذلك).

حتى الآن باستخدام الأمر "print" كل ما يمكنني الحصول عليه هو مراجع الكائنات.

المثالان التاليان يشتملان على ملف أشكال خاص بي يسمى "المقاطعة" ، ويستندان إلى الكود التالي:

>>> vl = QgsMapLayerRegistry.instance (). mapLayersByName ('Province') [0] >>> iface.setActiveLayer (vl)

مثال 1:

>>> طباعة vl

انتاج:

> كائن qgis._core.QgsVectorLayer عند 0x11f24a348 <

تم إرجاع مرجع كائن طبقة متجه ، لكنني أريد الاسم الفعلي للطبقة ، وهو بالطبع "المقاطعة".

المثال 2:

>>> الحقول = vl.pendingFields () >>> field.toList ()

انتاج:

[, , , , , 

من المؤكد أنني استخدمت "toList ()" بدلاً من "print" ، لكن النتيجة واحدة: بدلاً من الأسماء الفعلية للحقول ، أحصل على مجموعة من مراجع الكائنات.

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

مجبر كثيرا.


تحتاج إلى الوصول إلى سمات ميزات الجدول.

lyr = iface.activeLayer () features = lyr.getFeatures () للقدم في الميزات: attrs = ft.attributes () print attrs

للوصول إلى استخدام العمود الأول

أتباع الطباعة [0]

يمكن إضافة أسماء الأعمدة بـ:

lyr = iface.activeLayer () features = lyr.getFeatures () field_names = [field.name () للحقل في lyr.pendingFields ()] للأقدام في الميزات: طباعة الإملاء (zip (field_names، ft.attributes ()))

فقط للإضافة إلى إجابة @ Jakob الرائعة ، يمكنك استخداماسم()لطباعة اسم الطبقة:

vl = QgsMapLayerRegistry.instance (). mapLayersByName ('Province') [0] print vl.name ()

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

الطبقات = QgsMapLayerRegistry.instance (). mapLayers (). القيم () للطبقة في الطبقات: print layer.name ()

أتمنى أن يساعدك هذا!


شاهد الفيديو: شرح الأداه Attribute Transfer وأهميتها فى التعامل مع البيانات داخل الجداول GISArcGIS