📐 تحلیل مکانی و SQL
کوئریهای مکانی، ابزارهای بدون SQL، پرسش فارسی و مسیریابی
-
تحلیلهای آماده بدون SQL چیست و چه ابزارهایی دارد؟
بخش «تحلیل» هفت ابزار آماده دارد: حریم (بافر)، نزدیکترین عارضه، شمارش (و جمع یا میانگین) در چندضلعی، سهم همپوشانی، تغییر بین دو نسخه، نقشه تراکم ششضلعی و حوزه دسترسی. هر ابزار یک جدول جدید در پایگاه داده شما…
-
چطور از نتیجه تحلیل (شمارش، همپوشانی، فاصله) نمودار بسازم؟
بعد از اجرای یک ابزار تحلیل، دکمه «نقشه و نمودار» در تاریخچه، جدول نتیجه را در نقشه تازه باز میکند و فرم نمودار مناسب را پر میکند: منحنی پوشش برای فاصله، ستونی انباشته ۱۰۰٪ برای سهم همپوشانی، و هیستوگرام برا…
-
چطور دور عارضهها حریم (بافر) به متر بکشم؟
روی نوع geography بافر بگیرید تا فاصله به متر باشد، نه درجه. ST_Buffer(geom::geography, 500)::geometry حریم ۵۰۰ متری میسازد.
-
چطور نزدیکترین عارضه را با SQL پیدا کنم؟
از عملگر فاصله <-> با ORDER BY و LIMIT استفاده کنید؛ از نمایه مکانی بهره میبرد و سریع است. برای فاصله دقیق به متر از ST_Distance روی geography استفاده کنید.
-
چطور فاصله بین دو نقطه را به متر محاسبه کنم؟
دو راه: ST_Distance روی geography (دقیق، متر) یا تبدیل هر دو به سیستم مختصات متری مانند UTM (32639 برای بخش بزرگی از ایران) و سپس ST_Distance.
-
چطور مساحت و طول عارضهها را حساب کنم؟
برای مساحت (متر مربع) و طول (متر) روی geography از ST_Area و ST_Length استفاده کنید. روی داده 4326 بدون تبدیل به geography نتیجه به درجه است و بیمعنی.
-
چطور برش (intersection) و همپوشانی دو لایه را حساب کنم؟
با ST_Intersects (آیا تلاقی دارند؟) فیلتر کنید و با ST_Intersection شکل بخش مشترک را بسازید. اگر TopologyException گرفتید، هندسه نامعتبر است و باید اصلاح شود.
-
چطور یک جدول مکانی جدید با SQL بسازم؟
CREATE TABLE با ستون geometry(نوع, SRID) بسازید و بعد نمایه مکانی بگذارید. یا نتیجه یک کوئری را با CREATE TABLE AS ذخیره کنید و نوع و SRID ستون هندسه را صریح بنویسید.
-
چطور سیستم مختصات (SRID) یک لایه را به 4326 یا UTM تبدیل کنم؟
با ST_Transform مختصات را تبدیل کنید؛ ST_SetSRID فقط برچسب را عوض میکند و مختصات را تغییر نمیدهد. برای تبدیل دائمی ستون، ALTER TABLE ... TYPE geometry(نوع, SRID) USING ST_Transform(...) بزنید.
-
کوئری مکانی من کند است؛ چطور علتش را پیدا کنم؟
با EXPLAIN ANALYZE ببینید نمایه مکانی استفاده میشود یا نه. معمولاً علت نبود نمایه GiST، آمار قدیمی (ANALYZE) یا تابعی روی ستون هندسه در شرط است. با سلامت داده نمایه و آمار را درست کنید.
-
چطور تعداد نقاط داخل هر چندضلعی را بشمارم (مثلاً مدرسههای هر محله)؟
دو لایه را با ST_Contains یا ST_Intersects به هم join و با GROUP BY بشمارید. یا ابزار آماده «شمارش در چندضلعی» را در بخش تحلیل بزنید.
-
چطور نقشه تراکم ششضلعی (hexbin) از نقطهها بسازم؟
ابزار «نقشه تراکم ششضلعی» در بخش تحلیل روی لایه نقطهای شبکه ششضلعی میسازد و تعداد نقاط هر خانه را میشمارد؛ مناسب نقشه حرارتی. یا با ST_HexagonGrid در SQL.
-
آیا میتوانم سؤال تحلیلی را به فارسی بپرسم تا خودش جدول نتیجه بسازد؟
بله. در بخش «تحلیل» میتوانید با جمله فارسی و انتخاب لایهها پرسش مکانی بپرسید. این قابلیت از کلید API مدل زبانی خودتان استفاده میکند و نتیجه یک جدول جدید در پایگاه داده است.