0

我有一个 Shapefile 从中提取几何列并将其存储到表中。这是存储在具有 432 个点的几何列中的示例数据。

0x000000000104AC010000AB3E57ABBBC4384127A08938705B57414F401361C3C43841C9E53F846C5B574190A0F8E1F6C438410F0BB5766E....

现在我想从几何列中提取每个点,即 432 个点并将其存储到另一个表中。为此,我正在使用ST_PointN列,但它一次只能给我 1 分。ST_NumPoint会给我 432 个数字,但不是所有的分数。

如何从几何列中提取每个点并将其存储到数据库中?

干杯,

4

1 回答 1

2

查看 ST_PointN 文档的第一个示例: https ://postgis.net/docs/ST_PointN.html 并注意 generate_series 部分。

看来,您的几何图形是线串?假设,您的几何图形在“线”表中,并且您想创建“点”表,这样的东西应该可以工作:

SELECT ST_PointN(a.the_geom, generate_series(1, ST_NPoints(a.the_geom)))
INTO points
FROM lines a;

如果您的原始几何图形是多边形,则必须稍微调整该查询,因为 ST_PointN 将线串作为参数:

SELECT ST_PointN(
    ST_ExteriorRing(a.the_geom), 
    generate_series(1, ST_NPoints(a.the_geom) - 1)
)
INTO points
FROM lines a;

多边形的 ExteriorRing 中的第一个点和最后一个点将相同。这取决于您的需求,无论您使用ST_NPoints(a.the_geom) - 1还是ST_NPoints(a.the_geom). 在第一种情况下,第一个点也将作为最后一个点出现。

于 2012-10-22T09:41:16.150 回答