理想情况下会是这样,但 WKT 没有圆形类型。
ST_GeomFromText('CIRCLE(10 20, 10)',4326)
虽然,圆形类型列在几何类型中,
circle <(x,y),r> (center point and radius)
我想知道是否可以直接在sql中使用circle类型:
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)
);