如何在 Deck.gl 中将 Superset 数据显示为多边形

son*_*olo 6 postgis deck.gl apache-superset

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>;
Run Code Online (Sandbox Code Playgroud)

这会返回geojson Polygon这样的记录:

{
  "type": "Polygon",
  "coordinates": [[
    [-0.029742716, 51.492925448],
    [-0.028980512, 51.491626654],
    [-0.027819506, 51.490055839],
    ...
Run Code Online (Sandbox Code Playgroud)

我已经验证QGIS查询是否有效并且geoJSON信息显示正确。

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

尽管地图是空的,但用于将数据下载为 CSV 或 JSON 的相邻按钮会返回完整的数据,因此我倾向于认为我误解了其中一项设置,或者我以不正确的格式提供了数据。

有关如何使该插件工作以及它可能期望数据采用什么格式的任何指示?

一般来说,我正在努力寻找有关如何使用该superset deck.gl插件的任何文档:任何可能有用的示例或文档?

son*_*olo 9

对于遇到同样问题的其他人来说,这就是最终适合我的场景的方法:

postGIS使用该函数返回的 JSON 字符串ST_AsGeoJSON仅包含 geoJSON 规范的几何组件。这意味着必须将这些几何图形包装在成熟的 geoJSON 对象中deck.gl才能识别它。

例如:

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

如果您正在使用多重多边形,那么您需要首先提取多边形:

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>;
Run Code Online (Sandbox Code Playgroud)

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