أكثر

PostGIS: كيفية حل بيانات المتجه

PostGIS: كيفية حل بيانات المتجه


لدي بعض السيناريوهات التي أحتاج فيها إلى حل بيانات المتجه ، وأتساءل عن كيفية القيام بذلك باستخدام PostGIS. كيف ستبدو الاستعلامات لإجراء هذه العمليات؟

فيما يلي سأصف الحالات المختلفة من خلال بعض الأمثلة البسيطة.

البيانات الفعلية التي أعمل معها هي أكثر ضخامة وتعقيدًا من هذه الأمثلة ، في الواقع أنا أعمل مع بيانات من OpenStreetMap (شبكات الطرق ومضلعات الاستخدام الأرضي وما إلى ذلك). يبدو أن PostGIS هو البديل الأول للتعامل مع البيانات الثقيلة.

خطوط مجزأة

يتم تقسيم الخطوط إلى مقاطع بشكل مشابه لما يظهر في الصورتين. يتكون السطر الأول ("A-D") من ثلاثة أجزاء وقد تم تقسيمه عند B و C. أريد إذابة هذه الخطوط الفردية الثلاثة للحصول على خط يتكون من الرؤوس A و D. (الرؤوس B و C زائدة تمامًا)

السطر الثاني لا يختلف كثيرا. تم تقسيمه عند E و F إلى ثلاثة خطوط أصغر.

قم بإذابة المضلعات

المسألة الثانية تتعلق بحل بيانات المضلع. يمكن أن تتداخل الأشكال الهندسية أو تتداخل مع بعضها البعض أو اللمس (الرؤوس المشتركة) أو تقريبا تتلامس مع مسافة صغيرة تفصل بين المضلعات.

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

ملاحظة أخيرة

في الحالات المذكورة أعلاه ، يعتمد الحل فقط على العلاقات المكانية. السمات غير الهندسية ليست ذات صلة.

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

إذا رغب أي شخص في الحصول على البيانات الموضحة في الأمثلة ، فيمكن تنزيلها هنا باسم GeoJSON.


إذا كانت كل التداخلات / اللمسات الخاصة بك في أزواج ، فسيكون ذلك بمثابة ارتباط ذاتي بسيط ، والذي سيكون مثاليًا للكفاءة.

إجابة القوة الغاشمة هي مجرد شيء مثل:

تم دمج CREATE TABLE AS SELECT (ST_Dump (ST_Union (geom)). geom AS geom FROM mytable ؛

سيأخذ هذا كل الأشكال الهندسية في الذاكرة ، ويضعها في طوبولوجيا ويستخرج أكبر الكائنات المدمجة كمجموعة هندسية واحدة ، ثم تفريغ كل عنصر من المجموعة في صفها الخاص.

بالنسبة للمدخلات الكبيرة بما فيه الكفاية ، يمكن أن يكون بطيئًا للغاية.

تكمن المشكلة في أن القيام بعملية دمج أكثر دقة يجب أن تعرفها بداهة مجموعات الكائنات المراد دمجها. هناكST_Cluster متقاطعةتعمل في PostGIS 2.2 ، ما يوصلك إلى بعض الطريق ، لكنها لا تزال خوارزمية في الذاكرة ، لذلك قد لا تكون مثالية.


شاهد الفيديو: PostgreSQL + PostGIS. Basics