@sha-man

Как найти геометрические объекты в заданной области по координатам?

Добрый день, уважаемые.
Я новичок в гео и в PostGis.
Необходимо в базе (Postgres + PostGis) хранить объекты с различной геометрией, то есть может быть точка, линия, многоугольник. Коорд. в формате долготы и широты. Как я понимаю, одна колонка может содержать только один тип фигуры.
Я создал таблицу следующим запросом:
CREATE TABLE geom (
"id" serial primary key,
"name" varchar(255),
"type" smallint,
"pt" geometry(POINT, 4326),
"line" geometry(LINESTRING, 4326),
"polygon" geometry(POLYGON, 4326)
);

type - какой тип хранит запись, и соотв. в какой колонке лежит описание объекта
typ=0, колонка pt - точка,
typ=1, колонка line - линия,
typ=2, колонка polygon - многоугольник,

Вопросы:
1. Можно ли в одной колонке хранить различные типы геометрий (точка, линия, многоугольник) или верно делать по разным колонкам?
2. Задача извлечь из базы объекты, которые попадают в заданную область. Допустим это квадрат с известными координатами углов. Как найти попадание объекта в заданную область по известным координатам? С помощью каких функций? Это функция одинаково подходит для любого типа объектов, либо же для различных геометрий свои функции?
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
1. Можно, но обычно это не практикуется. Потому что часто семантика объекта уже определяет тип геометрии.
postgis.net/workshops/postgis-intro/geometries.html
2. postgis.net/docs/manual-2.0/ST_Contains.html
postgis.net/docs/manual-2.0/ST_Within.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы