أكثر

إعادة الإسقاط التلقائي (تحويل st_transform) SRIDs في Postgis

إعادة الإسقاط التلقائي (تحويل st_transform) SRIDs في Postgis


لدي جدول postgis تم تحريره من مصادر مختلفة.

  • النقاط المضافة من المصدر 1 موجودة في SRID 23030.

  • النقاط المضافة من Soruce 2 في SRID 4230.

أريد تخزين جميع النقاط الموجودة في الجدول في SRID 23030.

يمكنني إنشاء مشغل و st_transform (the_geom، 23030) كلها NEW.the_geom لكني كنت أتساءل هل هذه هي أسهل طريقة لتحقيق ذلك.

ربما يمكنني إنشاء CONSTRAINT أو أي شيء يعيد صياغة (st_transforms) كل نقطة إذا لم يكن SRID في 23030 أو شيء من هذا القبيل؟

أي اقتراح؟

يعتبر،


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

إنشاء أو استبدال وظيفة myschema.transform () إرجاع المشغل مثل $$ BEGIN NEW.geom = ST_Transform (NEW.geom، 23030) ؛ عودة جديدة ؛ نهاية؛ $$ LANGUAGE plpgsql؛ قم بإنشاء تحويل TRIGGER قبل الإدراج أو التحديث في myschema.mytable لكل صف من إجراءات التنفيذ myschema.transform () ؛

لاحظ أنه ليس هناك حاجة للتحقق من الإسقاطات الفعلية ، يمكنك الاتصال بأمان ST_Transform على هندسة موجودة بالفعل في الإسقاط المستهدف.

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


شاهد الفيديو: #PostGIS: The Spatial Reference ID u0026 The Geometry Field. #PostgreSQL, #QGIS. UrduHindi. #12