另一个向PostGIS表中的多个记录添加数据

时间:2010-10-26 02:18:22

标签: gis postgis

尼克拉斯,感谢我对上一个问题的回答......

请原谅我的无知,并询问可能会变成相当简单的问题,但数据库不是我的专业领域。

select语句,它给出了每个percinct中的崩溃次数: SELECT P.precinct,count(C)FROM nycpp P,nyccrash C WHERE _st_contains(P.the_geom,C.crashpoint)GROUP BY P.precinct ORDER BY P.precinct;

我想将计数添加到我的nycpp表中,保存计数的变量是number_of崩溃....

再次感谢您的帮助

克里斯

1 个答案:

答案 0 :(得分:1)

我认为区域是nycpp中的唯一ID,然后你可以尝试:

update nycpp set number_of crashes=a.n_crashes from 
(SELECT P.precinct, count(C) as n_crashes FROM nycpp P, nyccrash C 
WHERE _st_contains(P.the_geom, C.crashpoint) 
GROUP BY P.precinct 
ORDER BY P.precinct) a
where nycpp.precinct=a.precinct;

但为什么要使用_st_contains而不是st_contains

下划线版本不会使用您的空间索引,但是st_contains会在运行theunderscore版本之前执行第一次indexscan查找相交的布局框。

所以,你可能绝对想要使用st_contains而不是contains。如果您的表足够大以至于需要索引:在此查询中,空间索引对于两个表和区域上的索引都很重要。在创建索引之后,不要忘记分析表,以使它们工作。

顺便说一句,如果您对答案感到满意,我认为您应该将问题标记为已回答,以便其他人不必尝试回答这些问题。

HTH 尼克拉斯