如何在deck.gl

问题描述

超集具有deck.gl polygon可视化类型。

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

我的数据库查询如下:

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行编码(与polyline或Geohash相对)。选择度量标准并将视口坐标居中到正确的地理范围之后,我运行了查询,但是看不到图表中显示的空间信息,只有图例显示了所选度量标准的中断。

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

是否有任何有关如何使该插件正常工作以及它预期数据采用哪种格式的指针?

总的来说,我正在努力寻找有关如何使用JSON superset插件的任何文档:任何可能有用的示例或文档?

解决方法

对于遇到相同问题的其他人,这正是我的情况的结果:

使用postGIS函数从ST_AsGeoJSON返回的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 *,ST_AsGeoJSON(ST_Transform((ST_DUMP(geom)).geom::geometry(Polygon,27700),4326))::json)::text as geoJSON
FROM <my-schema>.<my-table>;

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