Postgresql 使用openlayers将空多行线保存到postgis中

Postgresql 使用openlayers将空多行线保存到postgis中,postgresql,openlayers,postgis,web-feature-service,Postgresql,Openlayers,Postgis,Web Feature Service,我正在尝试使用openlayers(版本>=3)存储一个“空”功能,如下所示: 让defaultFeature=新的ol.功能({ 几何体:新的ol.geom.MultileString([]), }); 正如您所看到的,这只是一条等待用线填充的空多行线 我有一个这样构建的数据库表: 创建表md( id序列主键不为空, 名称varchar(40)不为空, 几何图形(多行线,3857) ); 然后,我将该功能发送到tinyows进行存储(这里是有效负载) 但数据库返回一个错误: Geome

我正在尝试使用openlayers(版本>=3)存储一个“空”功能,如下所示:

让defaultFeature=新的ol.功能({
几何体:新的ol.geom.MultileString([]),
});
正如您所看到的,这只是一条等待用线填充的空多行线

我有一个这样构建的数据库表:

创建表md(
id序列主键不为空,
名称varchar(40)不为空,
几何图形(多行线,3857)
);
然后,我将该功能发送到tinyows进行存储(这里是有效负载)


但数据库返回一个错误:

Geometry has Z dimension but column does not
在得到该错误后,我尝试使用参数“opt_layout”()如下:

让defaultMdFeature=new ol.Feature({
几何图形:新的ol.geom.MultiLineString([],'XY'),
});
和有效载荷:


遗憾的是,即使指定布局,我也会遇到同样的错误

我的问题是:有没有一种方法可以将空的2d多行线存储到postgis中

提前感谢您的支持


G.R.

我试过以下方法:

//多重字符串接受数组的数组(或者构造函数没有收到有效的输入)
var defaultMdFeature=新的ol.Feature({
几何体:新的ol.geom.MultileString([]]),
});
var wfs=new ol.format.wfs();
var transaction=wfs.writeTransaction([defaultMdFeature],null,null{
特写:'http://www.tinyows.org/',
featureType:'md',
hasZ:false,//确保只有两个维度
G发展:{
srsName:'EPSG:3857'
}
})
var s=新的XMLSerializer();
var str=s.serializeToString(事务);
console.log(str);
console.log(str)
返回以下内容:



您可能希望尝试这种方法,因为您可以看到XML不同于
LineString
标记包含

您可以在postgresql日志文件中检查哪个sql语句被发送到db吗?顺便问一下,如果它适用于您的几何体,您是否尝试使用
几何体(MULTILINESTRINGZ,3857)
而不是
几何图形(MULTILINESTRING,3857)
?嗨,吉姆,我也尝试了
几何图形(MULTILINESTRINGZ,3857)
,但是当我在处理2d线串时,当我尝试更新MULTILINESTRING时,我遇到了另一个错误
2018-07-03 14:38:30.501 CEST[17816]错误:列有Z维度,但几何体没有
我不知道它是否有帮助,我检查了postgresql日志并看到:
2018-07-03 14:12:25.315 CEST[9372]错误:几何体有Z维度,但列没有2018-07-03 14:12:25.315 CEST[9372]说明:插入“public”。“md”(“id”,“geometry”)值('1','01050000A0110F000000000000')
您的代码正在生成一个
多行Z空
,它与您的表结构不匹配->检查:
选择st_astext('01050000A0110F000000000000')作为Z,st_astext('010500000000000000')作为notz