【发布时间】:2018-12-11 18:36:23
【问题描述】:
我正在尝试使用 openlayers(版本 >= 3)存储一个“空”功能,如下所示:
let defaultFeature = new ol.Feature({
geometry: new ol.geom.MultiLineString([]),
});
如您所见,它只是一个空的多行字符串,等待被行填充。
我有一个这样构建的数据库表:
CREATE TABLE md (
id SERIAL PRIMARY KEY NOT NULL,
name varchar(40) NOT NULL,
geometry geometry(MULTILINESTRING, 3857)
);
然后我将功能发送到 tinyows 进行存储,(此处为有效负载)
<Transaction
xmlns="http://www.opengis.net/wfs" service="WFS" version="1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
<Insert>
<md
xmlns="http://www.tinyows.org/">
<geometry>
<MultiLineString
xmlns="http://www.opengis.net/gml" srsName="EPSG:3857"/>
</geometry>
</md>
</Insert>
</Transaction>
但数据库返回错误:
Geometry has Z dimension but column does not
收到该错误后,我尝试像这样使用参数“opt_layout”(http://openlayers.org/en/latest/apidoc/module-ol_geom_MultiLineString-MultiLineString.html):
let defaultMdFeature = new ol.Feature({
geometry: new ol.geom.MultiLineString([], 'XY'),
});
和有效载荷:
<Transaction
xmlns="http://www.opengis.net/wfs" service="WFS" version="1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
<Insert>
<md
xmlns="http://www.tinyows.org/">
<geometry>
<MultiLineString
xmlns="http://www.opengis.net/gml" srsName="EPSG:3857"/>
</geometry>
</md>
</Insert>
</Transaction>
遗憾的是,即使指定布局,我也会遇到同样的错误。
我的问题是:有没有办法将一个空的 2d 多行字符串存储到 postgis 中?
提前感谢您的支持,
G.R.
【问题讨论】:
-
你能在 postgresql 日志文件中检查哪个 sql 语句被发送到数据库吗?
-
顺便说一句,如果它适用于您的几何图形,您是否尝试过使用
geometry geometry(MULTILINESTRINGZ, 3857)而不是geometry geometry(MULTILINESTRING, 3857)? -
嗨,吉姆,我也尝试了
geometry(MULTILINESTRINGZ, 3857),但是当我使用 2d 线串时,当我尝试更新多线串时出现另一个错误2018-07-03 14:38:30.501 CEST [17816] ERREUR: Column has Z dimension but geometry does not -
我不知道它是否有帮助,我检查了 postgresql 日志并看到了这个:
2018-07-03 14:12:25.315 CEST [9372] ERREUR: Geometry has Z dimension but column does not 2018-07-03 14:12:25.315 CEST [9372] INSTRUCTION : INSERT INTO "public"."md" ("id","geometry") VALUES ('1','01050000A0110F000000000000') -
您的代码正在生成一个
MULTILINESTRING Z EMPTY,它与您的表结构不匹配 -> 检查:select st_astext('01050000A0110F000000000000') as z,st_astext('010500000000000000') as notz
标签: postgresql openlayers postgis web-feature-service