أكثر

إعادة تسمية جدول postGIS وتحديث GeoServer؟


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

ALTER TABLE old_name RENAME TO new_name ؛

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

حدد مسبار_ الهندسة_الأعمدة ()

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


لإعادة تسمية الجدول ، سيتعين عليك تغيير الاسم في البيانات الوصفية لمكانين. أولاً في PostGIS ، ثم في Geoserver config.

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

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

تحديث:

في حالة عدم وضوح "أعمدة هندسة التحديث" ، قم بما يلي:

UPDATE مجموعة geometry_columns f_table_name = 'my_new_table_name' حيث f_table_name = 'my_old_table_name' ؛

تحديث 8 سنوات (!!!) لاحقًا (2018):

مثل بعض الأشخاص المذكورين أدناه ، بعد PostGIS 2.0 ، يتم تحديث جداول البيانات الوصفية تلقائيًا بعد عبارة ALTER.


لاحظ أنه في PostGIS 2.0+ ، كل ما عليك فعله هو الوضع الطبيعي

ALTER TABLE old_name RENAME TO new_name ؛

سيتم أيضًا تحديث الإدخال في عرض geometry_columns (أو geography_columns).


حدد Probe_Geometry_Columns () ،

هو مفيد مفيد.

أولاً ، عندما نلحق عمودًا هندسيًا بجدول موجود بامتداد

حدد AddGeometryColumn ('my_table'، 'geo_column'، 1234، 'MULTIPOINT'، 2) ؛

نقوم بتغذية الوظيفة بكل ما تحتاجه لتوصيل عمود هندسة النوع (geo_column) إلى الجدول المحدد (my_table) وكتابة التفاصيل المهمة مثل SRID (1234) ونوع الهندسة (MULTIPOINT) وعدد الأبعاد (2) إلى جدول geometry_columns. في جوهرها ، هو تغيير وثلاثة تحديثات.

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

يقوم استدعاء وظيفة التحقيق بالتحقق من كل عمود في هندسة النوع ، وإضافة قيم جديدة إلى geometry_columns وتقارير التعارضات.

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

بعد كل ما قيل ، أقترح عليك: 1) تشغيل التحقيق ثم حذف السجل القديم على الفور ؛ أو 2) متابعة تغيير اسمك مع ALTER في geometry_columns لتغيير قيمة f_table_name.

آسف على الكلام ، ولكن آمل أن يساعد.


لست متأكدًا مما يفعله SELECT probe_geometry_columns () ، ولكن يمكنك بسهولة التحقق من جدول geometry_columns لمعرفة ما إذا كان اسم الجدول الجديد موجودًا هناك أو ما إذا كان لا يزال يشير إلى الاسم القديم.

أظن أنك بحاجة إلى إعادة تحميل متجر GeoServer للتأكد من أنه "يلاحظ" التغييرات. بدلاً من ذلك ، ستفعل ذلك التوقف والبدء.


شاهد الفيديو: Tutorial GeoServer - PostGIS (شهر اكتوبر 2021).