在 QGIS 中,我有一个点表和一个区域表。当我在一个区域中放置一个点时,我需要发生以下事情。获取要放置新点的区域(称为 plat_page)的 ID。然后我想根据该区域中已经存在的点将序列中的下一个值插入到名为“node_id”的列中的新条目中。我的问题是序列是字母数字,其中前 4 个字符是 plat_page,后三个字符是序列。同样,我不确定如何辨别我放置新点的区域。“node_id”看起来像这样:
510C101
510C
plat_page在哪里,101
是我需要排序的数字。
这是一个示例,我在 plat_page 的区域中放置了一个点610C
。我想获取 plat_page,然后检查现有序列中的最大值是什么,比如说100
。然后我想生成序列中的下一个值610C101
并将其插入名为“node_id”的列中。
到目前为止,我有一种方法可以获取给定 plat_page 序列中的最高数字,但我想通过让插入点决定该 plat 页面是什么来自动化这个过程。同样,我不确定如何对最后一个数字进行排序,然后将其附加到 plat_page 值以生成“node_id”。下面是我所拥有的代码。
SELECT MAX(RIGHT ("node_id",3)::numeric) from sewers.structures
WHERE(
ST_WITHIN(
ST_CENTROID((ST_SetSRID(structures.geom, 4326))),
ST_SetSRID((SELECT geom FROM sewers."Qrtr_Qrtr_Sections" WHERE "plat_page" = '510D'),4326)) ) and "node_id" != 'PRIVATE'
我还附上了这个小提琴样本数据以帮助理解。