В идеале было бы что-то вроде этого, но у WKT нет кругового типа.
ST_GeomFromText('CIRCLE(10 20, 10)',4326)
Хотя круговой тип перечислен среди геометрических типов,
circle <(x,y),r> (center point and radius)
Интересно, можно ли использовать тип круга непосредственно в sql:
update <table>
set the_geom = circle '((10, 20),10)'::geometry
where id = <id>;
Но там написано SQL Error [42846]: ERROR: cannot cast type circle to geometry
.
Использование ST_Buffer для хранения кругов — это кладж, поэтому я не хочу его использовать.
Альтернативным решением может быть jsonb + geojson, но оно также не поддерживает круги.
UPD: Вот моя структура таблицы. В настоящее время я использую долготу/широту/радиус, но я хотел бы использовать либо geo_json, либо the_geom. Как GeoJSON и WKT могли не поддерживать круг?
CREATE SEQUENCE my_table_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
CREATE TABLE my_table (
id INT NOT NULL,
longitude NUMERIC(10, 7) DEFAULT NULL,
latitude NUMERIC(10, 7) DEFAULT NULL,
radius INT DEFAULT NULL,
geo_json JSONB,
the_geom Geometry DEFAULT NULL, PRIMARY KEY(id)
);
circle
— это встроенный тип PostgreSQL, основанный на геометрии, а не на пространстве. Эти типы имеют мало общего с PostGIS. - person pozs   schedule 28.04.2017geometry
взят из PostGIS. Который не поддерживает круги. Связанный вопрос содержит всю доступную информацию по этому вопросу. - person pozs   schedule 28.04.2017