پایگاه داده مکانی
به صورت رایگان پایگاه داده مکانی ایجاد کنید

کوئری‌های مکانی پرکاربرد

بافر، فاصله، تقاطع، نمایه مکانی و چند مثال واقعی

ساخت جدول مکانی

CREATE TABLE schools (
  id    serial PRIMARY KEY,
  name  text NOT NULL,
  geom  geometry(Point, 4326)
);
CREATE INDEX schools_geom_idx ON schools USING gist (geom);

INSERT INTO schools (name, geom)
VALUES ('مدرسه نمونه', ST_SetSRID(ST_MakePoint(51.3890, 35.6892), 4326));

نزدیک‌ترین عوارض به یک نقطه

SELECT name, ST_Distance(geom::geography, ST_MakePoint(51.42, 35.70)::geography) AS meters
FROM schools
ORDER BY geom <-> ST_SetSRID(ST_MakePoint(51.42, 35.70), 4326)
LIMIT 5;

عوارض داخل یک محدوده

SELECT s.name, d.name AS district
FROM schools s
JOIN districts d ON ST_Intersects(s.geom, d.geom);

بافر ۵۰۰ متری

SELECT id, ST_Buffer(geom::geography, 500)::geometry AS buffer_geom FROM schools;
اگر کوئری با خطای statement timeout متوقف شد، اول بررسی کنید نمایه gist ساخته شده باشد، سپس با EXPLAIN مسیر اجرا را ببینید.