gpt4 book ai didi

primary-key - GeoServer:使用 PostGIS 存储为 pk 分配配置主键元数据表

转载 作者:行者123 更新时间:2023-12-04 18:00:46 27 4
gpt4 key购买 nike

问题

我遵循指示 in the GeoServer docs关于创建主键元数据表,但我无法使用属性值分配我的地理特征(存储在 PostGIS 存储中)的主键在 WFS-t 请求中使用相同的名称。

具体来说,我正在创建一个 UUID 客户端(这是必需的),然后将其作为 WFS-t 请求 XML 的“uuid”属性发送到 GeoServer。一旦在 GeoServer 手中,我希望将该 UUID 插入到几何表的主键列中,也命名为“uuid”。相反,GeoServer 会自动创建自己的主键,如下所示:

fid--46a202d5_153205205​​51_-7ffe

背景

这是我的几何表 SQL:

CREATE TABLE test_points (uuid VARCHAR(60) PRIMARY KEY NOT NULL);
ALTER TABLE test_points ADD COLUMN title VARCHAR(30) NOT NULL;
ALTER TABLE test_points ADD COLUMN body TEXT NOT NULL;
SELECT AddGeometryColumn('public', 'test_points', 'geometry', '4326', 'POINT', 2);

这是我的主键元数据表 SQL,与文档中的基本相同:

CREATE TABLE public.gt_pk_metadata_table (
table_schema VARCHAR(32) NOT NULL,
table_name VARCHAR(32) NOT NULL,
pk_column VARCHAR(32) NOT NULL,
pk_column_idx INTEGER,
pk_policy VARCHAR(32),
pk_sequence VARCHAR(64),
unique (table_schema, table_name, pk_column),
check (pk_policy in ('sequence', 'assigned', 'autoincrement'))
);

INSERT INTO gt_pk_metadata_table (
table_schema,
table_name,
pk_column,
pk_policy
) VALUES (
'public',
'test_points',
'uuid',
'assigned'
);

我已经让 WFS-t 插入操作正常工作(没有主键分配),但这里是我的 WFS-t 请求 XML 的代表性示例,以防它有帮助:

<Transaction xmlns="http://www.opengis.net/wfs" service="WFS" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Insert>
<test_points xmlns="my points">
<geometry>
<Point xmlns="http://www.opengis.net/gml" srsName="EPSG:3857">
<pos>-11828783.001187595 4559315.863154193</pos>
</Point>
</geometry>
<uuid>18984168-27cc-4fc8-8dea-bfbd39c42b22</uuid>
<title>A Perfect Example</title>
<body>Here's my body.</body>
</test_points>
</Insert>
</Transaction>

就我的 GeoServer 配置而言,在我使用的数据存储的配置页面上,我启用了“公开主键”标志,主键元数据表参数的值为留空(见下文我尝试过的其他值)

失败的尝试

这是我尝试过的其他事情的列表:

  • 创建几何表设置 PRIMARY KEY
  • 创建主键列类型为 UUID 的几何表
  • 在“公共(public)”模式以外的模式中创建几何表,将主键元数据表保留在“公共(public)”模式中
  • 在“public”以外的模式中创建几何表和公钥元数据表
  • 更改主键元数据表中的记录,使 pk_column_idx 列中的值为 0
  • 更改主键元数据表中的记录,使 pk_column_idx 列中的值为 1
  • 在商店配置中禁用“公开主键”标志
  • 将存储配置中“主键元数据表”参数的值更改为元数据表的架构限定名称
  • 将存储配置中“主键元数据表”参数的值更改为元数据表的NON-schema 限定名称

每次更改后,我都删除了 test_points 图层,然后重新发布它。此外,我曾多次尝试删除并重新创建商店。

如您所见,我有点绝望了。任何帮助将不胜感激!

更新:GeoServer 插入日志

好主意,我相信这会有所帮助!这是 GeoServer 在插入期间记录的内容的示例。除了 idgen 设置为 GenerateNew 之外,我认为这表明 GeoServer 认为它应该生成一个新的 pk,在我看来一切都很好。 但是,这是我使用 GeoServer 的第一个项目,所以这可能意义不大。注意:UUID、标题、正文和几何图形与上面的 XML 示例不同。

2016-03-01 16:14:29,755 INFO [geoserver.gwc] - DataStoreChange:{/mypoints}test_points PreInsert
2016-03-01 16:14:29,760 INFO [geoserver.gwc] - DataStoreChange: {/mypoints}test_points PostInsert
2016-03-01 16:14:29,763 INFO [geoserver.wfs] -
Request: transaction
service = WFS
version = 1.1.0
baseUrl = http://127.0.0.1:8080/geoserver/
group[0] = wfs:insert=net.opengis.wfs.impl.InsertElementTypeImpl@5b886147 (feature: [SimpleFeatureImpl:test_points=[SimpleFeatureImpl.Attribute: uuid<uuid id=fid-4f745b22_1532fc9fb1c_-7ffa>=853596f8-9de1-477a-b287-f3cd114db90a, SimpleFeatureImpl.Attribute: title<title id=fid-4f745b22_1532fc9fb1c_-7ffa>=Another Test, SimpleFeatureImpl.Attribute: body<body id=fid-4f745b22_1532fc9fb1c_-7ffa>=For you!, SimpleFeatureImpl.Attribute: geometry<geometry id=fid-4f745b22_1532fc9fb1c_-7ffa>=POINT (-12044029.67283865 4265797.674539117)]], handle: null, idgen: <unset>, inputFormat: <unset>, srsName: null)
insert[0]:
feature[0] = SimpleFeatureImpl:test_points=[SimpleFeatureImpl.Attribute: uuid<uuid id=fid-4f745b22_1532fc9fb1c_-7ffa>=853596f8-9de1-477a-b287-f3cd114db90a, SimpleFeatureImpl.Attribute: title<title id=fid-4f745b22_1532fc9fb1c_-7ffa>=Another Test, SimpleFeatureImpl.Attribute: body<body id=fid-4f745b22_1532fc9fb1c_-7ffa>=For you!, SimpleFeatureImpl.Attribute: geometry<geometry id=fid-4f745b22_1532fc9fb1c_-7ffa>=POINT (-12044029.67283865 4265797.674539117)]
idgen = GenerateNew
inputFormat = text/xml; subtype=gml/3.1.1
releaseAction = ALL

最佳答案

fid="your_target_id" 属性添加到功能并将 idgen="UseExisting" 属性添加到 wfs:Insert 允许我分配一个 uuid。

Here's我能在 idgen 上找到的最好的文档。我不清楚它在 WFS 1.0.0 和 2.0.0 中的类似物。

关于primary-key - GeoServer:使用 PostGIS 存储为 pk 分配配置主键元数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713831/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com