PostGIS表geometrytype、center、bounds值的设置位置及修改咨询
关于pg_tileserv中geometrytype、center、bounds的设置与修改
这些参数是pg_tileserv自动计算的服务元数据,并非存储在PostGIS系统表中,默认由服务通过PostGIS函数动态生成,但你可以通过自定义方式覆盖或修改这些值。
一、表创建时能否设置?
可以,但不是直接在PostgreSQL表结构中定义,而是通过两种方式指定:
- 添加表级自定义评论:创建表时,用JSON格式的评论嵌入这些参数,示例:
CREATE TABLE your_point_table ( id SERIAL PRIMARY KEY, geom GEOMETRY(Point, 4326) ); COMMENT ON TABLE your_point_table IS '{"geometrytype": "Point", "center": [47.72084999084473, -12.753128051757812], "bounds": [43.54970169067383, 90, 51.891998291015625, -115.50625610351562]}'; - 配置文件预定义:在pg_tileserv的配置文件(如
pg_tileserv.toml)中提前为目标表设置参数,示例:[[table]] name = "your_point_table" geometrytype = "Point" center = [47.72084999084473, -12.753128051757812] bounds = [43.54970169067383, 90, 51.891998291015625, -115.50625610351562]
二、表创建后能否修改?
完全可以,两种修改方式:
- 更新表评论:用
COMMENT ON TABLE语句替换原有评论中的参数值,示例:
修改后需要重启pg_tileserv或刷新服务缓存,让新元数据生效。COMMENT ON TABLE your_point_table IS '{"geometrytype": "Point", "center": [新纬度值, 新经度值], "bounds": [新最小纬度, 新最大纬度, 新最小经度, 新最大经度]}'; - 修改配置文件:直接编辑
pg_tileserv.toml中对应表的配置项,保存后重启服务即可生效,这种方式优先级高于表评论。
三、为什么在PostGIS系统表中找不到这些设置?
因为这些参数不属于PostGIS的核心系统元数据,是pg_tileserv为瓦片服务优化生成的:
- 默认状态下,pg_tileserv会通过
ST_GeometryType、ST_Centroid、ST_Extent等PostGIS函数自动计算几何字段的类型、中心点和边界范围; - 你当前看到的固定值,大概率是之前通过表评论或配置文件手动覆盖过自动计算结果。
内容的提问来源于stack exchange,提问作者Steve Nadraus
相关产品推荐
相关产品推荐

