离线搭建OSM瓦片服务器运行get-external-data.py报Postgres访问错误
第一步:获取ogr2ogr的具体错误信息
你当前脚本里的错误捕获逻辑没有打印ogr2ogr的真实报错,只输出了返回码。把catch块里的logging.critical("Output was\n{}".format(e.output))改成logging.critical("Output was\n{}".format(e.stderr)),重新运行就能拿到具体的失败原因,这是最高效的排查入口。
第二步:排查数据库权限与配置问题
如果报错指向数据库访问问题,按以下顺序验证:
- 手动测试数据库连接:执行
psql -d gis -U ubuadmin -h localhost -p 5432,输入密码后看能否正常登录 - 确认gis库已启用PostGIS扩展:登录数据库后执行
SELECT postgis_version();,如果报错就先执行CREATE EXTENSION postgis; - 确认临时schema存在:执行
SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'loading';,如果不存在先执行CREATE SCHEMA loading; - 确认用户有对应权限:执行
GRANT ALL PRIVILEGES ON SCHEMA loading TO ubuadmin;和GRANT ALL PRIVILEGES ON DATABASE gis TO ubuadmin;
第三步:排查文件路径与权限问题
- 验证shapefile路径是否存在:执行
ls data/simplified_water_polygons/simplified-water-polygons-split-3857/simplified_water_polygons.shp看文件是否存在 - 验证文件读取权限:因为你用sudo执行脚本,解压出来的文件所有者为root,执行
sudo ls 上述shp路径确认可读 - 核对
external-data.yml里source["file"]的配置是否和实际解压后的文件路径完全匹配
第四步:排查shapefile完整性
执行ogrinfo data/simplified_water_polygons/simplified-water-polygons-split-3857/simplified_water_polygons.shp,如果返回报错说明压缩包下载过程中损坏,重新下载对应文件即可。
内容的提问来源于stack exchange,提问作者lorca
相关产品推荐
相关产品推荐

