【问题标题】:Convert the result of a Google BigQuery query to valid GeoJSON将 Google BigQuery 查询的结果转换为有效的 GeoJSON
【发布时间】:2020-11-03 23:27:50
【问题描述】:

我有这个问题:

SELECT ST_BOUNDARY(ST_UNION_AGG(ST_SIMPLIFY(geo.polygon,5000))) as feature,
   zr.region_id
   from `tl_2019_us_zcta510_geom` geo
INNER JOIN `zip-regions` zr
ON geo.ZCTA5CE10 = zr.zip5
GROUP BY zr.region_id

结果是featureGEOGRAPHY 类型。


现在,我要做的就是获得完整有效的 GeoJSON 格式的结果。

我试过像这样玩ST_TOGEOJSON

SELECT ST_TOGEOJSON(ST_BOUNDARY(ST_UNION_AGG(ST_SIMPLIFY(geo.polygon,5000)))) as feature,
   zr.region_id
   from `tl_2019_us_zcta510_geom` geo
INNER JOIN `zip-regions` zr
ON geo.ZCTA5CE10 = zr.zip5
GROUP BY zr.region_id

...但这给了我作为 GeoJSON 的每个功能。

我的问题是:如果 BigQuery 可以逐行创建 GeoJSON 输出,那么它是否可以将其扩展为将我的整个输出作为一个有效的 GeoJSON 文件提供给我?

【问题讨论】:

    标签: sql google-cloud-platform google-bigquery gis geojson


    【解决方案1】:

    首先,该查询结果并不完全是“每个特征都像 GeoJson”。您将每个地理都作为 GeoJson 获取,但 GeoJson 中的功能具有特殊格式 - 地理应该是一个名为 geometry 的字段,而在您的情况下,所有其他属性(如 region_id)应该嵌套在一个名为 properties 的字段中。

    所以你需要以下转换:

    • 将所有其他属性嵌套到properties 字段中,
    • 每行创建 Feature 对象,
    • propertiesgeomerties 字段添加到Feature 对象。
    • 添加顶级FeatureCollection 对象(如果您想要“普通”GeoJson,而不是换行分隔的GeoJson 格式)

    BigQuery 本身无法做到这一点,这很简单,例如这是一个简短的node.js 代码,它对 BigQuery 生成的换行符分隔的 JSON 文件执行此转换:

    https://github.com/mentin/geoscripts/tree/master/bq2geojson

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2019-12-29
      相关资源
      最近更新 更多