计数线串上的点a

时间:2019-06-28 06:58:33

标签: sql postgis

我正在尝试计算下表中每一行的行上的点数

CREATE TABLE outils.prod(
pk  INTEGER PRIMARY KEY,
cable VARCHAR (25),
PA  VARCHAR (10),       
Art VARCHAR(7),
FT      Numeric,
BT      Numeric
);

INSERT INTO  outils.prod  (pk)
SELECT id_ftth 
FROM outils.cable
WHERE type_cable = '2' ;

SELECT ADDGEOMETRYCOLUMN('outils','prod','geom',2154,'MultiLineString',2);

我尝试更新行表,但是我无法获取每一行的答案。

UPDATE outils.prod SET FT=(SELECT COUNT( ST_INTERSECTION(outils.prod.geom,outils.ft.geom))
 FROM outils.prod , outils.ft)

使用上面的代码,我设法获得了每条线的相交总数,但是我希望在我的线表中逐行计数。

谢谢, 雨果

1 个答案:

答案 0 :(得分:0)

您必须编写一个子查询才能对每行进行计数。

此外,您无需计算相交(几何),而只需检查它们是否相交即可,这要快得多。

UPDATE outils.prod 
SET FT= sub.cnt
FROM (
 SELECT pk, count(*) as cnt
 FROM outils.ft
 JOIN outils.prod ON ST_INTERSECTS(prod.geom, ft.geom)
)
WHERE prod.pk = sub.pk;