使用osm2pgsql导入数据时Lua元方法报错:未知字段'as_point'
解决osm2pgsql Lua脚本中'as_point'未知字段错误
这个错误和你怀疑的内存限制没关系,1GB内存处理小体积osm.pbf完全够用,问题出在Lua脚本的API使用上,以下是具体排查方向:
可能的原因及解决办法:
osm2pgsql版本不兼容
as_point()是osm2pgsql Lua API里节点对象(Node)专属的方法,但不同版本的osm2pgsql对API命名有调整:- 先查版本:执行
osm2pgsql --version - 如果版本低于1.4.0,把
object:as_point()改成object:point()——旧版本里这个方法叫point() - 如果版本是1.4.0及以上,确认你处理的对象确实是Node类型:只有节点才有
as_point()方法,要是把Way或Relation对象传到了节点处理函数里,肯定会报错。
- 先查版本:执行
缺少对象类型判断
在调用as_point()前,先加个类型校验,避免非节点对象触发错误:if object:type() == 'node' then local geom = object:as_point() tables.node:insert({geom = geom, tags = object.tags}) end脚本变量赋值错误
检查test.lua第183行附近的代码,确认object变量是从osm2pgsql.process_node回调里传入的正确节点对象,别被误改成了其他类型的元素。
内容的提问来源于stack exchange,提问作者evan
相关产品推荐
相关产品推荐

