أكثر

ضبط SRID في جدول Spatialite؟

ضبط SRID في جدول Spatialite؟


كيف تقوم بتحديث SRID في جدول SpatiaLite؟

أنا أستخدم البرنامج المساعد QspatiaLite أو برنامج SpatiaLite_Gui لإرسال SQL هذا إلى الجدول:

تحديث myTable SET geom = SETSRID (geom، 26910)

... لكني أحصل على:

ينتهك قيود الهندسة [النوع الجغرافي أو SRID غير مسموح به]


يحتوي كل جدول مكاني في قاعدة بيانات SpatiaLite على قيد مفتاح خارجي بحيث يجب أن يتطابق SRID مع القيمة المخزنة في جدول بيانات التعريف المسمىالهندسة_الأعمدة. يمكنك أن ترى القيد مع:

حدد sql من sqlite_master حيث النوع = 'المشغل' والاسم = 'ggu_mytable_geom' ؛

يمكنك رؤية SRID الفعلي الذي تم فرضه للجدول باستخدام:

حدد * من geometry_columns حيث f_table_name = 'mytable' ؛

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

يمكنك أيضًا رؤية ذلك في واجهة SpatiaLite-GUI بالانتقال إلى عمود هندسة الجدول في شجرة قاعدة البيانات في الجزء الأيسر ، والنقر بزر الماوس الأيمن فوق اسم العمود واختيار إظهار البيانات الوصفية المكانية.

يعد تحديث SRID أمرًا سهلاً ، ولكن يجب عليك تغيير SRID المتوقع في ملفالهندسة_الأعمدةالجدول أولا. افعل هذا باستخدام:

UPDATE geometry_columns SET srid = 26910 حيث f_table_name = 'mytable' ؛

ثم يمكنك تشغيل العملية التي كنت تحاول القيام بها:

تحديث mytable SET geom = SetSRID (geom، 22910) ؛

وظائف قاعدة البيانات الجغرافية¶

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

لا تدعم جميع الواجهات الخلفية جميع الوظائف ، لذا ارجع إلى توثيق كل وظيفة لمعرفة ما إذا كانت خلفية قاعدة البيانات الخلفية تدعم الوظيفة التي تريد استخدامها. إذا استدعت دالة جغرافية على خلفية لا تدعمها & # 8217t ، فستحصل & # 8217 على استثناء NotImplementedError.

قياس العلاقات عمليات المحررين تنسيق الإخراج متفرقات
منطقة محيط دائري فرق ForceRHR AsGeoJSON صالح
مسافه: بعد سنترويد تداخل MakeValid AsGML MemSize
طول ظرف الاختلاف يعكس AsKML NumGeometries
محيط PointOnSurface اتحاد مقياس SnapToGrid تحويل الترجمة AsSVG GeoHash NumPoints

التوفر: MySQL و Oracle و PostGIS و SpatiaLite

يقبل حقلاً أو تعبيرًا جغرافيًا واحدًا ويعيد مساحة الحقل كمقياس مساحة. في MySQL ، يتم إرجاع قيمة تعويم خام ، لأنه & # 8217s لا يمكن تحديد وحدة الحقل تلقائيًا.


AsGeoJSON ¶

التوفر: PostGIS ، SpatiaLite

يقبل حقلاً أو تعبيرًا جغرافيًا واحدًا ويعيد تمثيل GeoJSON للشكل الهندسي. لاحظ أن النتيجة ليست بنية GeoJSON كاملة ولكن فقط محتوى مفتاح الهندسة لبنية GeoJSON. أنظر أيضا متسلسل GeoJSON.

حجة الكلمات الرئيسية وصف
bbox اضبط هذا على True إذا كنت تريد أن يتم تضمين المربع المحيط في GeoJSON الذي تم إرجاعه.
crs اضبط هذا على True إذا كنت تريد تضمين نظام الإحداثي المرجعي في GeoJSON الذي تم إرجاعه.
الاحكام يمكن استخدامه لتحديد عدد الأرقام المهمة للإحداثيات في تمثيل GeoJSON & # 8211 القيمة الافتراضية هي 8.

ضبط SRID في جدول Spatialite؟ - نظم المعلومات الجغرافية

محول SpatiaLite ActiveRecord ¶ ↑

محول SpatiaLite ActiveRecord هو محول اتصال ActiveRecord يعتمد على محول sqlite3 القياسي. إنه يوسع المحول القياسي لتوفير الدعم للامتدادات المكانية باستخدام SpatiaLite ، باستخدام مكتبة RGeo لتمثيل البيانات المكانية في Ruby. مثل محول sqlite3 القياسي ، يتطلب هذا المحول جوهرة sqlite3-ruby.

ما يوفره هذا المحول ¶ ↑

أولاً ، يقوم هذا المحول بتوسيع بنية الترحيل لدعم إنشاء الفهارس والأعمدة المكانية. لإنشاء عمود مكاني ، استخدم: نوع الهندسة ، أو أي من أنواع OGC المكانية مثل: نقطة أو: line_string. لإنشاء فهرس مكاني ، اضبط الخيار: spatial على true.

عندما يكون هذا المحول قيد الاستخدام ، سيكون للسمات المكانية في كائنات ActiveRecord قيم هندسة RGeo. يمكنك تعيين السمات المكانية إما على كائنات RGeo الهندسية ، أو سلاسل بتنسيق WKT (نص معروف جيدًا) ، والذي سيحوله المحول تلقائيًا إلى كائنات هندسية.

ترتبط الكائنات المكانية في RGeo بمصنع يحدد نظام الإحداثيات بالإضافة إلى السلوكيات الأخرى للكائن. لذلك يجب عليك تحديد مصنع لكل عمود مكاني (سمة) في فئة ActiveRecord الخاصة بك. يمكنك إما تعيين مصنع صريح لعمود معين ، أو توفير مولد مصنع ينتج المصنع المناسب للأعمدة المكانية للجدول بناءً على أنواعها. للأول ، استدعِ طريقة الفئة set_rgeo_factory_for_column في فئة ActiveRecord الخاصة بك. بالنسبة للأخير ، قم بتعيين سمة فئة rgeo_factory_generator. يجب أن يفهم هذا المولد على الأقل: خيار srid ، والذي سيتم توفيره بناءً على SRID المحدد للعمود. لاحظ أن المحول المكاني لا يدعم حاليًا إحداثيات Z أو M ، حيث أنه من غير الواضح بالنسبة لي ما إذا كان SpatiaLite نفسه يدعمها. تم بالفعل تنفيذ وتوثيق طريقتين set_rgeo_factory_for_column و rgeo_factory_generator في جوهرة "rgeo-activerecord".

أمثلة ، بالنظر إلى الجدول المكاني المحدد أعلاه:

يمكنك الآن التفاعل مع البيانات باستخدام أنواع RGeo:

يمكنك إنشاء استعلامات بسيطة بناءً على المساواة الموضوعية بنفس الطريقة التي تفعلها في العمود القياسي:

يوفر المحول أيضًا دعمًا تجريبيًا للاستعلامات الأكثر تعقيدًا مثل البحث في نصف القطر. ومع ذلك ، تتطلب هذه الامتدادات Arel 2.1 (والذي من المقرر إطلاقه مع Rails 3.1). لم يتم توثيقها حتى الآن ، وبناء الجملة عرضة للتغيير. في الوقت الحالي ، يجب عليك كتابة استعلامات أكثر تعقيدًا في SQL.

التثبيت والتكوين ¶ ↑

تركيب جوهرة المحول ¶ ↑

هذا المحول لديه المتطلبات التالية:

Ruby 1.8.7 أو أحدث. يفضل روبي 1.9.2 أو أحدث.

SpatiaLite 3.0 أو أحدث. قد يعمل الإصدار 2.3 ولكنه غير مدعوم رسميًا.

ActiveRecord 3.0.3 أو أحدث. لن تعمل الإصدارات السابقة. يجب أن يكون متوافقًا مع إصدارات ريلز حتى الإصدار 3.2.x.

rgeo-activerecord gem 0.4.3 أو أحدث.

ملاحظة: إذا كنت تستخدم نظام التشغيل Mac OS X ، فقد لا تدعم نسخة sqlite3 التي يوفرها نظام التشغيل الامتدادات. يجب عليك تثبيت نسخة بديلة من sqlite3 (على سبيل المثال ، باستخدام MacPorts أو Homebrew) وإعادة تثبيت الأحجار الكريمة باستخدام:

قم بتثبيت هذا المحول كجوهرة:

راجع README للحصول على جوهرة "rgeo" ، التبعية المطلوبة ، للحصول على مزيد من معلومات التثبيت.

لاستخدام هذا المحول ، أضف هذا الجوهرة ، "activerecord-spatialite-adaptor" ، إلى ملف Gemfile الخاص بك ، ثم اطلب اسم المحول "spatialite" في تكوين اتصال قاعدة البيانات (والذي ، بالنسبة لتطبيق ريلز ، موجود في config / database. yml). المعلمات الأخرى لتكوين اتصال قاعدة البيانات هي نفسها لمحول sqlite3 للمخزون ، باستثناء معلمة إضافية واحدة ، libspatialite ، والتي يجب تعيينها على المسار الكامل لمكتبة libspatialite المشتركة ، إذا لم يتم تثبيتها في مكان قياسي ( مثل / usr / local أو / opt / local).

بشكل عام ، يمكنك إنشاء تطبيق ريلز جديد باستخدام:

... ثم قم بتغيير أسماء المحول إلى "spatialite" وإضافة إعداد libspatialite مناسب.

بعد ذلك ، يشتمل محول SpatiaLite على شريط سكة حديد خاص يوفر الدعم لقواعد بيانات SpatiaLite في مهام أشعل النار في ActiveRecord. هذا السكة الحديدية مطلوب للتشغيل ، على سبيل المثال ، اختبار أشعل النار. لتثبيت هذا السطر ، يجب عليك إضافة هذا السطر إلى config / application.rb الخاص بك:

لاحظ أنه يجب تحميل هذا السكة الحديدية بعد سكة حديد ActiveRecord. أي أن الأمر يتطلب أعلاه يجب أن يظهر بعد طلب "rails / all".

التعامل مع تعريفات SpatiaLite ¶ ↑

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

تأكد من تضمين إعداد libspatialite الصحيح في ملف التكوين database.yml ، خاصة لبيئات الإنتاج الخاصة بك.

تحتاج قواعد بيانات SpatiaLite إلى التهيئة عن طريق تنفيذ البرنامج النصي لتهيئة SpatiaLite أو عن طريق استدعاء دالة InitSpatialMetaData (). ستعمل مهمة rake db: create على القيام بذلك نيابة عنك عند إنشاء قاعدة بيانات. وبالتالي ، عند إعداد تطبيق جديد ، يجب عليك التأكد من استدعاء rake db: إنشاء أو التسبب في حدوث تهيئة SpatiaLite ، قبل محاولة تشغيل الترحيل الأول. سيؤدي عدم القيام بذلك إلى حدوث أخطاء أثناء الترحيل.

سيؤدي إغراق قاعدة بيانات SpatiaLite مثل SQL إلى تضمين مجموعة من الجداول الداخلية والمشغلات في ملف التفريغ الخاص بك. هذه هي كائنات تطبيق SpatiaLite الفعلية المستخدمة لفرض القيود المكانية وتنفيذ الفهارس المكانية. لسوء الحظ ، هذا ليس قبيحًا بعض الشيء ، ولكن ليس كل شيء يتم تفريغه هنا: على سبيل المثال ، لكل عمود مكاني ، يجب أن يكون هناك صف في جدول geometry_columns ، وستكون هذه مفقودة في تفريغ بنية SQL. نتيجة لذلك ، لن يؤدي التحميل من تفريغ بنية SQL إلى إعادة إنتاج مخطط قاعدة البيانات بشكل صحيح. لهذا السبب ، نوصي بشدة بترك config.active_record.schema_format مضبوطًا على: ruby ​​في الوقت الحالي ، بحيث تتم عمليات تفريغ المخطط بتنسيق Ruby.

الأخطاء والقيود المعروفة ¶ ↑

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

نرحب بالمساهمات. تفرع من المشروع على جيثب.

يتوفر الدعم على مجموعة Google rgeo-users على groups.google.com/group/rgeo-users

اتصل بالمؤلف على dazuma في gmail dot com.

تمت كتابة محول SpatiaLite والمكتبات الداعمة له (بما في ذلك RGeo) بواسطة Daniel Azuma (www.daniel-azuma.com).

التطوير مدعوم من Pirq. (www.pirq.com).

حقوق النشر 2010-2012 Daniel Azuma

يُسمح بإعادة التوزيع والاستخدام في أشكال المصدر والثنائية ، مع أو بدون تعديل ، بشرط استيفاء الشروط التالية:

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

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

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

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


إجراء التحول

(يجب أن أعترف ، لقد اندهشت عندما نجح هذا الجزء التالي.)

لنقول & # 8217s أنه يتعين علينا تحديد جميع محطات VOR في كندا ، ورسم منطقة استبعاد 25 كم من حولها (مهلاً ، قد يرغب شخص ما في ...). يمكن الاستعلام عن محطات VOR من TAFL باستخدام المعايير التالية:

  • المرخص له هو Nav Canada ، أو ما شابه ،
  • يتراوح تردد الإرسال بين 108-117.96 ميجا هرتز ،
  • يحتوي الموقع على & # 8216VOR & # 8217.

الذي يعرض قائمة من 67 محطة ، من VYT80 على Mount Macintyre ، YT إلى YYT St Johns ، NL. يمكننا استخدام هذا ، جنبًا إلى جنب مع استعلام منطقة UTM أعلاه ، لإنشاء دوائر جميلة وجميلة:

نعم ، تبدو بيضاوية ولا تنسَ أن الإحداثيات الجغرافية لا تحافظ على خط مستقيم. عندما تحولت إلى UTM ، فإنها تبدو دائرية أكثر:

شارك هذا:


ضبط SRID في جدول Spatialite؟ - نظم المعلومات الجغرافية

يوفر الجدول ST_SPATIAL_REFERENCE_SYSTEMS معلومات حول أنظمة الإسناد المكاني المتاحة (SRS) للبيانات المكانية. يعتمد هذا الجدول على معيار SQL / MM (ISO / IEC 13249-3).

تستند الإدخالات في جدول ST_SPATIAL_REFERENCE_SYSTEMS إلى مجموعة بيانات European Petroleum Survey Group (EPSG) ، باستثناء SRID 0 ، الذي يتوافق مع SRS الخاص المستخدم في MySQL الذي يمثل مستوى ديكارتيًا مسطحًا لانهائيًا مع عدم تعيين وحدات لمحاوره. للحصول على معلومات إضافية حول SRSs ، راجع القسم 11.4.5 ، "دعم نظام الإسناد المكاني".

اسم نظام الإسناد المكاني. هذه القيمة فريدة من نوعها.

المعرف الرقمي لنظام الإسناد المكاني. هذه القيمة فريدة من نوعها.

تمثل قيم SRS_ID نفس نوع القيم مثل SRID للقيم الهندسية أو تم تمريرها كوسيطة SRID إلى الدالات المكانية. SRID 0 (الطائرة الديكارتية بدون وحدة) خاصة. وهو دائمًا معرّف نظام مرجعي مكاني قانوني ويمكن استخدامه في أي حسابات على البيانات المكانية التي تعتمد على قيم SRID.

اسم المنظمة التي حددت النظام الإحداثي الذي يعتمد عليه نظام الإسناد المكاني.

المعرف الرقمي الممنوح لنظام الإسناد المكاني من قبل المنظمة التي حددته.

تعريف نظام الإسناد المكاني. قيم التعريف هي قيم WKT ، ممثلة على النحو المحدد في وثيقة Open Geospatial Consortium OGC 12-063r5.

يحدث تحليل تعريف SRS عند الطلب عندما تكون هناك حاجة إلى تعريفات بواسطة وظائف نظم المعلومات الجغرافية. يتم تخزين التعريفات الموزعة في ذاكرة التخزين المؤقت لقاموس البيانات لتمكين إعادة الاستخدام وتجنب تكبد التحليل الزائد لكل عبارة تحتاج إلى معلومات SRS.

وصف نظام الإسناد المكاني.

تلاحظ

تحتوي أعمدة SRS_NAME و ORGANIZATION و ORGANIZATION_COORDSYS_ID و DESCRIPTION على معلومات قد تهم المستخدمين ، لكن MySQL لا تستخدمها.

مثال

يصف هذا الإدخال SRS المستخدمة لأنظمة GPS. لها اسم (SRS_NAME) من WGS 84 ومعرف (SRS_ID) من 4326 ، وهو المعرف المستخدم بواسطة European Petroleum Survey Group (EPSG).

تبدأ قيم DEFINITION لـ SRS المتوقعة والجغرافية بـ PROJCS و GEOGCS ، على التوالي. تعريف SRID 0 خاص وله قيمة تعريف فارغة. يحدد الاستعلام التالي عدد الإدخالات في جدول ST_SPATIAL_REFERENCE_SYSTEMS التي تتوافق مع SRSs المتوقعة والجغرافية وغيرها ، استنادًا إلى قيم DEFINITION:

لتمكين معالجة إدخالات SRS المخزنة في قاموس البيانات ، توفر MySQL عبارات SQL التالية:

إنشاء نظام مرجعي مكاني: راجع القسم 13.1.19 ، "إنشاء بيان نظام مرجعي مكاني". يتضمن وصف هذا البيان معلومات إضافية حول مكونات SRS.


مدهنتد

هل وافق ميلانو أو بيناتار أو علقا على سفن MCU التي تحمل الاسم نفسه؟

هل هناك أي سير ذاتية مهمة لأشخاص لا أحد؟

كيف تقوم الحكومات بتتبع عملتها المصدرة؟

لماذا تم اقتصار VGA Framebuffer على نافذة 64 كيلو بايت؟

دفع القلعة الطائرة في العصور الوسطى

لماذا تم تسويق Sega Genesis كوحدة تحكم 16 بت؟

كيف يتم التعامل مع ندوب إيذاء النفس على الذراع في بيئة العمل؟

ما الخطأ في هذا الدليل على أن المصفوفات المتماثلة تنتقل؟

هل يجب أن أمنح الأستاذ هدية في بداية الدكتوراه؟

التنقل عبر توجيهات MeshStyle في ListLinePlot

استخدام "مترو الانفاق" كاسم لمترو انفاق لندن؟

هل يجب أن أتجنب مسارات غبار الكسارة الصلبة مع الهجين الخاص بي؟

وجود نقطة متقاربة لاحقة

ما الذي يمكنني فعله ، كمستخدم ، بشأن التعليقات المسيئة في متجر التطبيقات؟

SOQL غير معترف بالمجال؟

ماذا تفعل عندما تتعارض المفاجأة والمبادرة العالية مع السرد؟

هل يمكن تعديل نماذج الضرائب الأمريكية بشكل قانوني؟

الإستراتيجية الفائزة للساحر وتلميذه

ما هي الجودة الفعلية للترجمات الآلية؟

الحساب الثاني (سهل الوصول) في حالة تعطل البنك الخاص بي

كيف يمكن استخدام المجالات الكهربائية لكشف الشقوق في المعادن؟

خطأ: غير مسموح بالنوع الجغرافي لقيد الهندسة أو SRID. كيفية التأكد من نوع geom الصحيح؟

أدخل Geopandas GeoDataFrame في قاعدة بيانات Spatialite

بعد أعلى إجابة على سؤال سابق حول تخزين الأشكال الهندسية في قاعدة بيانات مكانية ، أحاول تحديث جدول مكاني باستخدام:

عمل الكود بشكل جيد عندما كنت أستخدم بيانات النقاط. ومع ذلك ، عندما أستخدم بيانات المتجه ، أستمر في تلقي الخطأ
your_table.geog ينتهك قيود الهندسة [النوع الجغرافي أو SRID غير مسموح به]
أعلم أن SRID على ما يرام ، لذا أفترض من الخطأ أن نوع geom غير صحيح. لقد قمت بفحص نوع geom بطريقتين: 1. فتح الطبقة في QGIS والتحقق من خوارزمية البحر و 2. فتح قاعدة البيانات في spatialite-gui و "فحص الأشكال الهندسية". لقد حاولت أيضًا استخدام المضلع والمضلع المتعدد والمضلع المتعدد كالوسيطة الرابعة في اختيار AddGeometryColumn ، لكنني أحصل على نفس الخطأ. إذن ، ما هي أفضل طريقة للتحقق من الشكل الهندسي الذي يجب أن تكون عليه؟

يحدث ذلك عادةً مع ملفات الأشكال التي تحتوي على مزيج من المضلعات ومتعددة الأضلاع. إذا قمت بتهيئة جدول المضلعات ، فسيتم رفض المضلعات المتعددة والعكس صحيح. لديك خياران 1) تهيئة الجدول كـ "هندسة عامة" ويقبل أي أشكال هندسية ، ولكن بعض البرامج البرمجية ستواجه مشاكل في التعامل مع مثل هذا الجدول أو 2) تهيئة الجدول للأضلاع المتعددة وإدخال الأشكال الهندسية من خلال وظيفة CastToMultiPolygon gaia-gis. it / gaia-sins / spatialite-sql-latest.html.

@ user30184. شكرا لاجابتك. لقد استخدمت الثانية ونجحت

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

بعد أعلى إجابة على سؤال سابق حول تخزين الأشكال الهندسية في قاعدة بيانات مكانية ، أحاول تحديث جدول مكاني باستخدام:

عمل الكود بشكل جيد عندما كنت أستخدم بيانات النقاط. ومع ذلك ، عندما أستخدم بيانات المتجه ، أستمر في تلقي الخطأ
your_table.geog ينتهك قيود الهندسة [النوع الجغرافي أو SRID غير مسموح به]
أعلم أن SRID على ما يرام ، لذا أفترض من الخطأ أن نوع geom غير صحيح. لقد قمت بفحص نوع geom بطريقتين: 1. فتح الطبقة في QGIS والتحقق من خوارزمية البحر و 2. فتح قاعدة البيانات في spatialite-gui و "فحص الأشكال الهندسية". لقد حاولت أيضًا استخدام المضلع والمضلع المتعدد والمضلع المتعدد كالوسيطة الرابعة في اختيار AddGeometryColumn ، لكنني أحصل على نفس الخطأ. إذن ، ما هي أفضل طريقة للتحقق من الشكل الهندسي الذي يجب أن تكون عليه؟

يحدث ذلك عادةً مع ملفات الأشكال التي تحتوي على مزيج من المضلعات ومتعددة الأضلاع. إذا قمت بتهيئة جدول المضلعات ، فسيتم رفض المضلعات المتعددة والعكس صحيح. لديك خياران 1) تهيئة الجدول كـ "هندسة عامة" ويقبل أي أشكال هندسية ، ولكن بعض البرامج البرمجية ستواجه مشاكل في التعامل مع مثل هذا الجدول أو 2) تهيئة الجدول للأضلاع المتعددة وإدخال الأشكال الهندسية من خلال وظيفة CastToMultiPolygon gaia-gis. it / gaia-sins / spatialite-sql-latest.html.

@ user30184. شكرا لاجابتك. لقد استخدمت الثانية ونجحت

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

بعد أعلى إجابة على سؤال سابق حول تخزين الأشكال الهندسية في قاعدة بيانات مكانية ، أحاول تحديث جدول مكاني باستخدام:

عمل الكود بشكل جيد عندما كنت أستخدم بيانات النقاط. ومع ذلك ، عندما أستخدم بيانات المتجه ، أستمر في تلقي الخطأ
your_table.geog ينتهك قيود الهندسة [النوع الجغرافي أو SRID غير مسموح به]
أعلم أن SRID على ما يرام ، لذا أفترض من الخطأ أن نوع geom غير صحيح. لقد قمت بفحص نوع geom بطريقتين: 1. فتح الطبقة في QGIS والتحقق من خوارزمية البحر و 2. فتح قاعدة البيانات في spatialite-gui و "فحص الأشكال الهندسية". لقد حاولت أيضًا استخدام المضلع والمضلع المتعدد والمضلع المتعدد كالوسيطة الرابعة في اختيار AddGeometryColumn ، لكنني أحصل على نفس الخطأ. إذن ، ما هي أفضل طريقة للتحقق من الشكل الهندسي الذي يجب أن تكون عليه؟

بعد أعلى إجابة على سؤال سابق حول تخزين الأشكال الهندسية في قاعدة بيانات مكانية ، أحاول تحديث جدول مكاني باستخدام:

عمل الكود بشكل جيد عندما كنت أستخدم بيانات النقاط. ومع ذلك ، عندما أستخدم بيانات المتجه ، أستمر في تلقي الخطأ
your_table.geog ينتهك قيود الهندسة [النوع الجغرافي أو SRID غير مسموح به]
أعلم أن SRID على ما يرام ، لذا أفترض من الخطأ أن نوع geom غير صحيح. لقد تحققت من النوع الجغرافي بطريقتين: 1. فتح الطبقة في QGIS والتحقق من خوارزمية البحر و 2. فتح قاعدة البيانات في spatialite-gui و "فحص الأشكال الهندسية". لقد حاولت أيضًا استخدام المضلع والمضلع المتعدد والمضلع متعدد الأضلاع كالوسيطة الرابعة في اختيار AddGeometryColumn ، لكنني أحصل على نفس الخطأ. إذن ، ما هي أفضل طريقة للتحقق من الشكل الهندسي الذي يجب أن تكون عليه؟

يحدث ذلك عادةً مع ملفات الأشكال التي تحتوي على مزيج من المضلعات ومتعددة الأضلاع. إذا قمت بتهيئة جدول المضلعات ، فسيتم رفض المضلعات المتعددة والعكس صحيح. لديك خياران 1) تهيئة الجدول كـ "هندسة عامة" ويقبل أي أشكال هندسية ، ولكن بعض البرامج البرمجية ستواجه مشاكل في التعامل مع مثل هذا الجدول أو 2) تهيئة الجدول للأضلاع المتعددة وإدخال الأشكال الهندسية من خلال وظيفة CastToMultiPolygon gaia-gis. it / gaia-sins / spatialite-sql-latest.html.

@ user30184. شكرا لاجابتك. لقد استخدمت الثانية ونجحت

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

يحدث ذلك عادةً مع ملفات الأشكال التي تحتوي على مزيج من المضلعات ومتعددة الأضلاع. إذا قمت بتهيئة جدول المضلعات ، فسيتم رفض المضلعات المتعددة والعكس صحيح. لديك خياران 1) تهيئة الجدول كـ "هندسة عامة" ويقبل أي أشكال هندسية ، ولكن بعض البرامج البرمجية ستواجه مشاكل في التعامل مع مثل هذا الجدول أو 2) تهيئة الجدول للأضلاع المتعددة وإدخال الأشكال الهندسية من خلال وظيفة CastToMultiPolygon gaia-gis. it / gaia-sins / spatialite-sql-latest.html.

@ user30184. شكرا لاجابتك. لقد استخدمت الثانية ونجحت

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

يحدث ذلك عادةً مع ملفات الأشكال التي تحتوي على مزيج من المضلعات ومتعددة الأضلاع. إذا قمت بتهيئة جدول المضلعات ، فسيتم رفض المضلعات المتعددة والعكس صحيح. لديك خياران 1) تهيئة الجدول كـ "هندسة عامة" ويقبل أي أشكال هندسية ، ولكن بعض البرامج البرمجية ستواجه مشاكل في التعامل مع مثل هذا الجدول أو 2) تهيئة الجدول للأضلاع المتعددة وإدخال الأشكال الهندسية من خلال وظيفة CastToMultiPolygon gaia-gis. it / gaia-sins / spatialite-sql-latest.html.

يحدث ذلك عادةً مع ملفات الأشكال التي تحتوي على مزيج من المضلعات ومتعددة الأضلاع. إذا قمت بتهيئة جدول المضلعات ، فسيتم رفض المضلعات المتعددة والعكس صحيح. لديك خياران 1) تهيئة الجدول كـ "هندسة عامة" ويقبل أي أشكال هندسية ، ولكن بعض البرامج البرمجية ستواجه مشاكل في التعامل مع مثل هذا الجدول أو 2) تهيئة الجدول للأضلاع المتعددة وإدخال الأشكال الهندسية من خلال وظيفة CastToMultiPolygon gaia-gis. it / gaia-sins / spatialite-sql-latest.html.

@ user30184. شكرا لاجابتك. لقد استخدمت الثانية ونجحت

@ user30184. شكرا لاجابتك. لقد استخدمت الثانية ونجحت

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

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


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

ويا المعزوفة! يجب أن تكون قادرًا على رؤية المنطقة التي يتم حفظها:

هذا حقا رائع. يمكننا الآن الاستفادة من قوة المعالجة المكانية SQL Server & # 8217s (حسابات المسافة الفعالة ، تحليل العلاقة المكانية ، الفهرسة المكانية ، إلخ) ولكننا نحمي هذا إلى حد كبير تحت التجريد الذي يوفره NHibernate. الشيء الوحيد المؤلم الآن هو كيفية السماح لكيانات المجال والخدمات باستخدام هذه الوظائف فعليًا (مثل STIntersects): حاليًا أنا أستخدم الإجراءات المخزنة.


عمليات البحث المكانية¶

يمكن استخدام أنواع بحث GeoDjango مع أي أسلوب مدير مثل منقي() , استبعاد () ، إلخ. ومع ذلك ، فإن أنواع البحث الفريدة لـ GeoDjango متاحة فقط في الحقول الهندسية. عوامل التصفية في الحقول "العادية" (على سبيل المثال CharField ) مع تلك الموجودة في الحقول الجغرافية. وبالتالي ، تأخذ الاستعلامات الجغرافية الشكل العام التالي (بافتراض أن الرمز البريدي النموذج المستخدم في GeoDjango Model API):

في هذه الحالة، بولي هو المجال الجغرافي ، يحتوي على هو نوع البحث المكاني و pnt هي المعلمة (التي قد تكون ملف الجيوسياسيات كائن أو سلسلة من GeoJSON أو WKT أو HEXEWKB).

يمكن العثور على مرجع كامل في مرجع البحث المكاني.

يبني GeoDjango SQL المكاني باستخدام امتداد GeoQuerySet ، فئة فرعية من QuerySet . ال GeoManager المثال المرفق بنموذجك هو ما يتيح استخدام GeoQuerySet .


ملاحظة: لم تعد هذه الصفحات محفوظة

ما هذه الأشياء SRID؟ .
لم أسمع هذا المصطلح من قبل من قبل.

ما هذه الأشياء SRID؟ . لم أسمع هذا المصطلح من قبل من قبل.

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

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

على أي حال ، مهما كان الشكل الحقيقي للأرض ، يمكن تحديد موضع كل نقطة على سطح الكوكب بدقة ببساطة قياس زاويتين: خط الطول وخط العرض.
من أجل تعيين نظام مرجعي مكاني كامل [المعروف أيضًا باسم SRS] ، يمكننا استخدام القطبين وخط الاستواء (وهما بعد كل شيء أماكن رائعة من خلال الخصائص الفلكية الجوهرية): يعد اختيار Prime Meridian على الجانب الآخر أمرًا تقليديًا تمامًا: ولكن منذ عدة قرون (بريطانيا تحكم الأمواج). يعد اعتماد غرينتش ميريديان خيارًا واضحًا.

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

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

وفقًا لجميع الاعتبارات المذكورة أعلاه ، يحدد UTM 60 منطقة قياسية ، تغطي كل منطقة 6 درجات من خطوط الطول بالضبط.
من الواضح أن دمج اثنين من الصمامات المتجاورة (12 درجة) يقلل من الدقة ، لكنه لا يزال مقبولًا للعديد من الأغراض العملية: تجاوز هذا الحد ينتج عنه نتائج منخفضة الجودة حقًا ، ويجب تجنبه تمامًا.

محاولة توحيد الفوضى


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

لحسن الحظ ، تم اعتماد معيار دولي على نطاق واسع لتسهيل التعامل مع الخريطة بشكل صحيح SRS: تحتفظ المجموعة الأوروبية للمسح البترولي [EPSG] بمجموعة بيانات عالمية ضخمة تضم أكثر من 3700 إدخال مختلف.
العديد منهم في الوقت الحاضر عفا عليه الزمن ، ويلعبون ببساطة دورًا تاريخيًا ، ولا يفيد آخرون إلا في حدود وطنية محدودة للغاية.
على أي حال ، هذه المجموعة رائعة للغاية.
ويتم تحديد كل إدخال فردي ضمن مجموعة بيانات EPSG بشكل فريد من خلال المعرف الرقمي والاسم الوصفي ، وذلك لتجنب أي ارتباك وغموض محتمل.

يتطلب أي نظام DBMS مكاني تحديد بعض قيمة SRID لكل هندسة: ولكن SRID هذا ببساطة هو معرف مرجعي مكاني ، ويتزامن (نأمل) مع معرف EPSG المقابل

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

EPSG SRID اسم تلاحظ
4326 WGS 84 الجغرافية [خطوط الطول] المستخدمة في جميع أنحاء العالم بواسطة أجهزة GPS
3003
3004
منطقة مونت ماريو / إيطاليا 1
منطقة مونت ماريو / إيطاليا 2
عفا عليها الزمن (1940) لكنها لا تزال شائعة الاستخدام
23032
23033
ED50 / UTM المنطقة 32N
ED50 / UTM المنطقة 33N
الاستعاضة عنها ونادرًا ما تستخدم: المرجع الأوروبي 1950
32632
32633
WGS 84 / UTM المنطقة 32N
WGS 84 / UTM المنطقة 33N
WGS84 ، اعتماد إسقاط UTM المستوي
25832
25833
منطقة ETRS89 / UTM 32N
منطقة ETRS89 / UTM 33N
تطور محسّن لـ WGS84: معيار الاتحاد الأوروبي الرسمي

وقد تساعد الأمثلة التالية على فهم أفضل:

مدينة سريد إحداثيات
X (خط الطول) Y (خط العرض)
روما 4326 12.483900 41.894740
3003 1789036.071860 4644043.280244
23032 789036.071860 4644043.280244
32632 789022.867800 4643960.982152
25832 789022.867802 4643960.982036
ميلانو 4326 9.189510 45.464270
3003 1514815.861095 5034638.873050
23032 514815.861095 5034638.873050
32632 514815.171223 5034544.482565
25832 514815.171223 5034544.482445

  • يتم التعبير عن إحداثيات WGS84 [4326] بالدرجات العشرية ، لأن هذا هو نظام جغرافي يعتمد بشكل مباشر على زوايا خطوط العرض الطويلة.
  • على الجانب الآخر ، يتبنى أي نظام آخر إحداثيات معبرًا عنها بالأمتار: يتم إسقاطها جميعًا وتعرف أيضًا باسم أنظمة مستوية.
  • تبدو قيم Y متشابهة جدًا لكل SRS مستوي: هذا ليس مفاجئًا ، لأن هذه القيمة تمثل ببساطة المسافة من خط الاستواء.
  • تكون قيم X أكثر تشتتًا ، لأن أنظمة SRS المختلفة تتبنى أصولًا مختلفة للشرق الخاطئ: أي أنها تضع خط الطول الرئيسي في أماكن مختلفة (تقليدية).
  • على أي حال ، فإن أي SRS قائم على UTM يعطي قيمًا وثيقة الصلة جدًا ، وذلك ببساطة لأنهم جميعًا يشتركون في نفس تعريف منطقة UTM 32.
  • يمكن شرح الاختلافات (الصغيرة) التي يمكن ملاحظتها حول SRSes المختلفة المستندة إلى UTM بسهولة: منطقة UTM 32 هي نفسها دائمًا ، ولكن يتغير الشكل الإهليلجي الأساسي في كل مرة.
    إن الحصول على قياس دقيق لمحاور القطع الناقص ليس بالمهمة السهلة: ومن الواضح أنه خلال ذلك الوقت تم اعتماد العديد من التقديرات الأفضل والأكثر دقة بشكل تدريجي.
  • باستخدام WGS84 [4326] الإحداثيات الجغرافية ذات خطوط العرض الطويلة ، سنحصل في الواقع على قياس يقابل زاوية معبرًا عنها بالدرجات العشرية. [ليس مفيدًا حقًا. ]
  • أي SRS آخر سيعرض مقياس المسافة معبراً عنه بالأمتار: على أي حال ، كما يمكنك أن تلاحظ بسهولة ، فإن الأرقام ليست متطابقة تمامًا.
  • تُحسب مسافات الدائرة العظمى على افتراض أن الأرض هي كرة بالضبط: ومن الواضح أن هذا هو أسوأ تقدير يمكننا الحصول عليه.
  • على الجانب الآخر ، يتم حساب المسافات الجيوديسية مباشرة على المرجع Ellipsoid.

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


شاهد الفيديو: Read and write a SpatiaLite database