أكثر

كيف أحسب مسافة مانهاتن مع PostGIS؟


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

الصيغة العامة لهذا هي الفرق في X بالإضافة إلى الفرق في Y ، لذلك Abs (X1-X2) + Abs (Y1-Y2).

ما هو استعلام PostgreSQL الذي سيجعل هذا يعمل؟


أنا أجيب على سؤالي باستعلام مقترح.

حدد * ، ABS (x_permit-x_station) + ABS (y_permit-y_station) مثل مانهاتن من (حدد اسم طويل AS NAME ، خطوط AS واصفات بيانات ، T .slug ، ST_Distance (T .geom ، ST_Transform (P. Geometry ، 3435)) AS مسافة ، ST_X (ST_Transform (p.geometry، 3435)) مثل x_permit، ST_Y (ST_Transform (p.geometry، 3435)) مثل y_permit، ST_X (t.geom) مثل x_station، ST_Y (t.geom) حيث تسمح y_station FROM P station_cta T حيث P .permit_ = '100533644' ORDER BY مسافة LIMIT 2) as foo

ينتج عن هذا ما يلي مع اقتطاع بعض الأعمدة:

Kedzie-Ravenswood Brown Line 3738.52830193659 3796.29623843171 Addison-O'Hare Blue Line 4105.37381385087 5790.20002649655

العمود المرقّم الأول هو المسافة (بالقدم ، لأنني أستخدم EPSG 3435) محسوبة بواسطة دالة ST_Distance PostGIS ، والعمود المرقم الثاني هو نتيجة صيغة المسافة في مانهاتن.

لقد تحققت من النتيجة الثانية على الفور ، وحصلت على مسافة قريبة من خرائط Google بين محطة Addison Blue Line CTA والمبنى في 3226 W Belle Plaine Ave (المشار إليها باسم "100533644" في الاستعلام). أنتجت خرائط Google مسارًا طوله 1.1 ميلاً للمشي بينما كانت نتيجة Postgres 5790 قدمًا = 1.09 ميلاً. الفرق مقبول لأغراضي.


أعتقد أنني وجدت أيضًا حلاً أكثر أناقة قليلاً يستخدم علم المثلثات والمدمجST_Azimuthوظيفة وتغليفها في وظيفة لطيفة:

إنشاء أو استبدال وظيفة JZ_TaxiCab (هندسة p1 ، هندسة p2) إرجاع REAL AS $$ DECLARE az REAL ؛ ح حقيقي ؛ BEGIN az: = ST_Azimuth (p1، p2) ؛ / * إرسال إلى الجغرافيا للحصول على النتيجة بالأمتار * / ساعة: = ST_Distance (p1 :: geography ، p2 :: geography) ؛ / * ملحوظة: علينا أن نأخذ القيمة abs () لأن القيم المعادة بواسطة يمكن أن تكون موجبة أو سالبة. نحن لا نهتم بالضرورة بالنقطة المرجعية لأنها ستكون مثلث قائم الزاوية. * / RETURN h * abs (sin (az)) + h * abs (cos (az)) ؛ نهاية؛ $$ LANGUAGE plpgsql

学习 笔记 之 البحث عن أقرب الجيران باستخدام PostGIS

PostgreSQL: التوثيق: 10: 7.8. استعلامات WITH (تعبيرات الجدول الشائعة)

  • https://www.postgresql.org/docs/10/static/queries-with.html#QUERIES-WITH-SELECT
  • يوفر WITH طريقة لكتابة عبارات مساعدة لاستخدامها في استعلام أكبر. يمكن اعتبار هذه العبارات ، التي يشار إليها غالبًا باسم تعبيرات الجداول المشتركة أو CTE ، على أنها تحدد الجداول المؤقتة الموجودة لاستعلام واحد فقط. يمكن أن تكون كل عبارة مساعدة في عبارة WITH عبارة عن SELECT أو INSERT أو UPDATE أو DELETE ويتم إرفاق جملة WITH نفسها ببيان أساسي يمكن أن يكون أيضًا SELECT أو INSERT أو UPDATE أو DELETE.

احسب أقل مسافة بين النقاط في PostGIS - تبادل مكدس نظم المعلومات الجغرافية

  • ST_Distance - لنوع الهندسة ترجع المسافة الديكارتية ثنائية الأبعاد بين شكلين هندسيين في الوحدات المسقطة (بناءً على المرجع المكاني). بالنسبة إلى الإعدادات الافتراضية لنوع الجغرافيا ، يتم إرجاع الحد الأدنى للمسافة الجيوديسية بين منطقتين جغرافيتين بالأمتار.

بلا حدود: مقدمة إلى PostGIS: 27. البحث عن أقرب الجيران

بلا حدود: مقدمة إلى PostGIS: 29. الإنشاءات الهندسية المتقدمة


学习 笔记 之 البحث عن أقرب الجيران باستخدام PostGIS

PostgreSQL: التوثيق: 10: 7.8. استعلامات WITH (تعبيرات الجدول الشائعة)

  • https://www.postgresql.org/docs/10/static/queries-with.html#QUERIES-WITH-SELECT
  • يوفر WITH طريقة لكتابة عبارات مساعدة لاستخدامها في استعلام أكبر. يمكن اعتبار هذه العبارات ، التي يشار إليها غالبًا باسم تعبيرات الجداول المشتركة أو CTE ، على أنها تحدد الجداول المؤقتة الموجودة لاستعلام واحد فقط. يمكن أن تكون كل عبارة مساعدة في عبارة WITH عبارة عن SELECT أو INSERT أو UPDATE أو DELETE ويتم إرفاق جملة WITH نفسها ببيان أساسي يمكن أن يكون أيضًا SELECT أو INSERT أو UPDATE أو DELETE.

احسب أقل مسافة بين النقاط في PostGIS - تبادل مكدس نظم المعلومات الجغرافية

  • ST_Distance - لنوع الهندسة ترجع المسافة الديكارتية ثنائية الأبعاد بين شكلين هندسيين في الوحدات المسقطة (بناءً على المرجع المكاني). بالنسبة إلى الإعدادات الافتراضية لنوع الجغرافيا ، يتم إرجاع الحد الأدنى للمسافة الجيوديسية بين منطقتين جغرافيتين بالأمتار.

بلا حدود: مقدمة إلى PostGIS: 27. البحث عن أقرب الجيران

بلا حدود: مقدمة إلى PostGIS: 29. الإنشاءات الهندسية المتقدمة


شاهد الفيديو: Postgis - QGIS Stintersects Stdistance (شهر اكتوبر 2021).