【问题标题】:How to display Superset data as polygons in deck.gl如何在 deck.gl 中将超集数据显示为多边形
【发布时间】:2021-02-21 19:31:39
【问题描述】:

Superset 有一个 deck.gl Polygon 可视化类型。

我正在尝试使用这种类型的图表来显示从PostGIS 启用的postgres 数据库中获取的多边形;但是,除了图例之外没有显示任何视觉信息。

我的数据库查询如下:

SELECT *, ST_AsGeoJSON(ST_Transform((ST_DUMP(geom)).geom::geometry(Polygon, 27700), 4326)) as geom
  FROM <my-schema>.<my-table>;

这会返回 geojson Polygon 记录,如下所示:

{
  "type": "Polygon",
  "coordinates": [[
    [-0.029742716, 51.492925448],
    [-0.028980512, 51.491626654],
    [-0.027819506, 51.490055839],
    ...

我已在QGIS 中验证查询有效,并且geoJSON 信息显示正确。

但是,这在superset 中似乎不起作用:我创建了一个deck.gl Polygon 图表,我选择了JSON 行编码(而不是折线或Geohash)。在选择一个度量并将视口坐标居中到正确的地理范围后,我运行了查询,但在图表中看不到空间信息,只有一个显示所选度量中断的图例。

虽然地图是空的,但用于将数据下载为 CSV 或 JSON 的相邻按钮会返回完整的数据,所以我倾向于认为我误解了其中一个设置或我在格式不正确。

关于如何让这个插件工作以及它可能期望数据采用什么格式的任何指示?

一般来说,我很难找到任何关于如何使用 superset deck.gl 插件的文档:任何可能有用的示例或文档?

【问题讨论】:

    标签: postgis apache-superset superset deck.gl


    【解决方案1】:

    对于遇到同样问题的其他人来说,这就是我的方案的最终结果:

    使用ST_AsGeoJSON 函数从postGIS 返回的JSON 字符串仅包含geoJSON 规范的几何组件。这意味着有必要在deck.gl 识别之前将这些几何图形包装在一个成熟的geoJSON 对象中。

    例如:

    SELECT *, json_build_object(
      'type',       'Polygon',
      'geometry',   ST_AsGeoJSON(ST_Transform(geom, 4326))::json)::text as geoJSON
    FROM <my-schema>.<my-table>;
    

    如果您使用的是 MultiPolygons,那么您需要先提取一个多边形:

    SELECT *, json_build_object(
      'type',       'Polygon',
      'geometry',   ST_AsGeoJSON(ST_Transform((ST_DUMP(geom)).geom::geometry(Polygon, 27700), 4326))::json)::text as geoJSON
    FROM <my-schema>.<my-table>;
    

    请注意,在这两种情况下,geoJSON 结果都必须转换为文本类型,否则超集在运行内部查询时会出现问题,否则如果使用 JSON,则无法对结果进行排序(重复检查?)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-02
      • 2016-09-11
      • 2020-04-19
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多