You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

QGIS中为PostgreSQL导入的无几何表添加几何并生成点图层问询

嘿,我之前也遇到过完全一样的问题——PostgreSQL表里只有X/Y坐标字段,没有几何列,导入QGIS只能看到属性表。别慌,有两种简单的方法能把这些坐标转成点图层,看你需求选:

方法一:在QGIS中直接转换(快速临时方案)

这个方法不用动数据库,适合一次性使用:

  • 右键你已经导入的纯属性表图层 → 选择「Export」→「Save Features As...」
  • 在弹出的保存窗口里:
    • 「Format」选你喜欢的格式(推荐GeoPackage,比Shapefile更稳定)
    • 找到「Geometry」选项,勾选后在下拉菜单里选「Point」
    • 「X field」选你的X坐标字段,「Y field」选你的Y坐标字段
    • 关键一步:在「CRS」里手动选择EPSG:21781 (CH1903 / LV03),必须和你的坐标系统完全匹配
    • 设置好保存路径和文件名,点击「OK」,生成的新图层就是带点几何的图层了
方法二:在PostgreSQL中创建带几何的视图(持久化方案)

如果以后还要频繁用这个数据,直接在数据库里生成带几何列的视图更方便,下次导入QGIS直接就能看到点图层:

  • 打开QGIS顶部菜单的「Database」→「DB Manager」,连接到你的PostgreSQL数据库
  • 找到目标表,打开SQL编辑器,输入下面的SQL(替换your_tablex_coly_col为你的实际表名和字段名):
CREATE OR REPLACE VIEW your_table_with_geometry AS
SELECT *, ST_SetSRID(ST_MakePoint(x_col, y_col), 21781) AS geom
FROM your_table;
  • 执行SQL后,回到「Add PostGIS Layer」工具,不用勾选「Also list tables with no geometry」就能找到这个新视图,导入后直接就是正确的点图层
小提醒
  • 确保你的X/Y字段是数值类型(比如floatnumeric),如果是文本类型,得先转成数值,把SQL里的x_col改成CAST(x_col AS float)就行
  • 如果生成的点位置完全不对,先检查CRS是不是选错了——EPSG:21781是瑞士专用的坐标系,别和EPSG:4326(WGS84)搞混哦

内容的提问来源于stack exchange,提问作者Will

火山引擎 最新活动