أكثر

بعد اقتطاع جدول في postgres ، لماذا تفقد QGIS مسار التحديثات / الميزات؟

بعد اقتطاع جدول في postgres ، لماذا تفقد QGIS مسار التحديثات / الميزات؟


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

بمجرد إضافة طبقة postgres ، يبدو أن QGIS يقوم باستطلاع قاعدة البيانات بين الحين والآخر ويزداد عدد الميزات. هذا رائع ، ويعطيني ملاحظات مرئية تفيد بأن النص الخاص بي يعمل.

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

هل هذا خطأ أم ميزة أم أفعل شيئًا خاطئًا؟

(البيئة: QGIS 2.12.1 Pisa ، Postgres 9.3.10 ، PostGIS 2.1.2 ، Ubuntu Tahr 32 بت)

تحديث

يبدو أنه بمجرد أن يتجاوز عدد الميزات عدد الميزات في قاعدة البيانات قبل أن أقوم باقتطاع قاعدة البيانات ، يبدأ QGIS في تتبع التغييرات مرة أخرى.


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

في حالتي ، احتوى الجدول على الشكل الهندسي فقط ، بدون حقل معرف. أضفت حقل كبير يسمىunidمثل ذلك…

إنشاء جدول عشوائي 3 (مفتاح أساسي كبير وحيد ، هندسة طريقة (هندسة ، 27571)) مع (OIDS = FALSE) ؛

بعد ذلك ، أضفت عامل تصفية على الجدول - سيعرض هذا جميع الصفوف.

unid> 0

يُعاد تحديث عدد الميزات الآن إلى 0 عند إعادة التشغيل بجدول مبتور. يبدو أن النقر فوق "اختبار" في مربع حوار عامل التصفية يساعد أيضًا.

يبدو أنه بدون وجود عامل تصفية ، يستخدم QGIS قيمة مخزنة مؤقتًا لـ مقدر عدد الصفوف - تؤدي إضافة المرشح إلى إجباره على إعادة الحساب.