如何在Apache Superset的Mapbox视图中使用PostGIS点格式经纬度?
在Apache Superset中用PostGIS函数配置Mapbox视图
我之前也碰到过一模一样的问题!Superset的Mapbox图表确实要求单独的纬度和经度字段,而PostGIS的location列是几何类型,得拆成两个字段才行,下面两种方法都能解决:
方法一:创建PostGIS视图(推荐,可复用)
如果这个数据集你会经常用到,最好先在PostgreSQL里创建一个带拆分后坐标的视图,这样后续在Superset里用起来更方便:
CREATE VIEW address_with_coords AS SELECT *, -- 保留原表所有字段,按需调整 ST_Y(location) AS latitude, -- ST_Y提取纬度(对应地图Y轴) ST_X(location) AS longitude -- ST_X提取经度(对应地图X轴) FROM Address;
创建完视图后,回到Superset刷新你的数据源列表,找到这个新的address_with_coords视图并添加为数据集。之后配置Mapbox图表时,直接把latitude选作纬度列,longitude选作经度列就搞定了。
方法二:在Superset里直接用自定义SQL
如果只是临时用一次,不用创建视图,直接在Superset的SQL Lab里写查询就行:
SELECT id, name, -- 替换成你需要展示的其他业务字段 ST_Y(location) AS latitude, ST_X(location) AS longitude FROM Address;
写完后点击「Save as Dataset」把这个查询存成一个新数据集,然后创建Mapbox图表时选择这个数据集,同样对应好纬度和经度字段即可。
重要提醒!
别搞反ST_X和ST_Y!很多人会在这里出错:ST_X返回的是经度(地图的X轴),ST_Y返回的是纬度(地图的Y轴),一定要对应正确,不然地图上的点会跑到完全错误的位置。另外还要确保你的PostgreSQL数据库已经安装了PostGIS扩展(没装的话执行CREATE EXTENSION postgis;就行),并且Superset连接的数据库用户有执行这些空间函数的权限。
内容的提问来源于stack exchange,提问作者fares
相关产品推荐
相关产品推荐

