PostGIS中如何插入geography[]类型数据?
向geography[]类型列插入数据的正确方法
你之前的错误在于用字符串字面量包裹函数调用的方式,PostgreSQL无法直接解析这种格式里的ST_Point函数,需要先构造单个geography对象,再组合成数组。以下是几种可行的插入方式:
使用ARRAY构造函数(推荐)
直接将多个转换好的geography对象传入ARRAY函数,这是最直观且不易出错的方式:-- 插入单个元素的数组 INSERT INTO bar (position_array) VALUES (ARRAY[ST_Point(30, 45)::geography]); -- 插入多个元素的数组 INSERT INTO bar (position_array) VALUES (ARRAY[ST_Point(30, 45)::geography, ST_Point(120, 30)::geography]);使用标准地理文本格式的数组字面量
如果想用字符串形式的数组字面量,需要先将geography对象转为标准的文本表示(比如WKT或WKB),再用数组语法包裹:-- 示例:使用WKT格式 INSERT INTO bar (position_array) VALUES ('{"SRID=4326;POINT(30 45)", "SRID=4326;POINT(120 30)"}'::geography[]);这种方式需要手动处理地理对象的文本格式,不如ARRAY构造函数便捷。
注意:PostgreSQL解析数组字面量时,只会识别符合
geography类型标准格式的文本,无法解析其中的函数调用,这就是你之前报错的核心原因。
内容的提问来源于stack exchange,提问作者Umberto Fontanazza
相关产品推荐
相关产品推荐

