我试图在R软件中运行这个模型,它调用GRASS GIS(7.0.2版)和PostgreSQL(9.5版)的函数来完成这个任务。我在PostgreSQL中创建了一个数据库,并创建了一个扩展Postgis,然后使用Postgis shapefile导入器将所需的矢量层导入到数据库中。每次尝试使用R(以管理员身份运行)运行时,都会返回如下错误:
获取时出错(dbSendQuery(con,q,n=-1)):
为函数“fetch”选择方法时计算参数“res”时出错:postgresqlExecStatement(conn,statement,…)中有错误:
RS- DBI驱动程序:(无法检索结果:错误:列MM.GEOM不存在
第5行:(st_dump(st_intersection(r.geom,mm.geom))。geom作为geom,
^
提示:也许您是想引用“r.geom”列。
查询:
insert into m_rays
with os as (
select r.ray, st_endpoint(r.geom) as s,
(st_dump(st_intersection(r.geom, mm.geom))).geom as geom,
mm.legend, mm.hgt as hgt, r.totlen
from rays as r,bh_gd_ne_clip as mm
where st_intersects(r.geom, mm.geom)
)
select os.ray, os.geom, os.hgt, l.absorb, l.barrier, os.totlen,
st_length(os.geom) as shape_length, st_distance(os.s, st_endpoint(os.geom)) as near_dist
from os left join lut as l
on os.legend = l.legend
CONTEXT:PL/pgSQL函数do_crtn(text,text,text)第30行执行时
我已经反复检查过,PostgreSQL中的schema >公共>视图中存在列几何。关于如何解决这个错误有什么建议吗?
最佳答案
添加引号,然后使用r."geom"
代替r.geom
关于sql - 错误:使用R的PostgreSQL执行中不存在mm.geom列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34953076/