Постгис геометрия, где условие - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть таблица:

create table if not exists places(
id bigserial not null constraint places_pkey primary key,
location geography(Point,4326));

С одним рядом:

INSERT INTO places (id, location) VALUES
  (1, Geography(ST_MakePoint(14.582045, 46.08060333)));

Я бы хотел запросить у таблицы точное местоположение. Я могу сделать это как:

select * from places where ST_DWithin(Geography(ST_MakePoint(14.582045, 46.08060333)), location, 0);

Но, безусловно, есть более лаконичный способ сделать это, например:

select *
from places
where location = Geography(ST_MakePoint(14.582045, 46.08060333))

Может быть ST_Equals или какая-нибудь другая функция postgis?

1 Ответ

0 голосов
/ 08 сентября 2018

Во-первых, вам не нужно переносить ST_MakePoint() в Geometry(), это по умолчанию.

Есть две вещи, которые вы можете сделать,

  1. Проверьте, существует ли точка ,
  2. Проверьте, существует ли точка a в пределах диапазона.

Если вы хотите сделать последнее, ST_DWithin это супер кратко. Он создает ошибку вокруг первого ввода и ищет все, что ST_Within второго ввода.

ST_DWithin(geom, geom, radius);

Что еще можно хотеть?

С равенством, если вы хотите проверить бинарное равенство = работает нормально. Тем не менее, вы подвержены ошибкам округления, и вы должны быть одинаково точны с ними обоими, чтобы получить одинаковый EKWT.

...