【问题标题】:Load geojson in bigquery在 bigquery 中加载 geojson
【发布时间】:2014-08-06 00:06:33
【问题描述】:

在 Google Big Query 中加载以下 geojson 文件的最佳方式是什么?

http://storage.googleapis.com/velibs/stations/test.json

我在 Google 存储中有很多这样的 json 文件(大得多),我无法全部下载/修改/上传它们(这将需要很长时间)。注意文件不是换行符,所以我猜需要在线修改。

谢谢大家。

【问题讨论】:

    标签: json load google-bigquery geojson


    【解决方案1】:

    2019 年一步一步:

    如果您收到错误“读取数据时出错,错误消息:从位置 0 开始的行中的 JSON 解析错误:不允许嵌套数组。”,您可能有一个 GeoJSON 文件。

    将 GeoJSON 转换为带有 jq 的换行符分隔的 JSON,以 CSV 格式加载到 BigQuery:

    jq -c .features[] \
      san_francisco_censustracts.json > sf_censustracts_201905.json
    
    bq load --source_format=CSV \
      --quote='' --field_delimiter='|' \
      fh-bigquery:deleting.sf_censustracts_201905 \
      sf_censustracts_201905.json row
    

    在 BigQuery 中解析加载的文件:

    CREATE OR REPLACE TABLE `fh-bigquery.uber_201905.sf_censustracts`
    AS
    SELECT FORMAT('%f,%f', ST_Y(centroid), ST_X(centroid)) lat_lon, *
    FROM (
      SELECT *, ST_CENTROID(geometry) centroid
      FROM (
        SELECT 
          CAST(JSON_EXTRACT_SCALAR(row, '$.properties.MOVEMENT_ID') AS INT64) movement_id
          , JSON_EXTRACT_SCALAR(row, '$.properties.DISPLAY_NAME') display_name
          , ST_GeogFromGeoJson(JSON_EXTRACT(row, '$.geometry')) geometry
        FROM `fh-bigquery.deleting.sf_censustracts_201905` 
      )
    )
    

    替代方法:

    【讨论】:

      【解决方案2】:

      问题中的桶已不存在....然而五年后有一个新的答案。 2018 年 7 月,Google announced BigQuery GIS 的 alpha(现为 beta)。 docs 突出了一个限制

      BigQuery GIS 仅支持 GeoJSON 中的单个几何对象。 BigQuery GIS 目前不支持 GeoJSON 要素对象, 特征集合,或 GeoJSON 文件格式。

      这意味着特征集合属性的任何特征都需要添加到单独的列中,并使用地理列来保存 geojson 地理。

      在 Google 培训师的 tutorial 中,使用 gdal 将 shape 文件中的多边形转换为 CSV 文件行内的 geojson 字符串。

      ogr2ogr -f csv -dialect sqlite -sql "select AsGeoJSON(geometry) AS geom, * from LAYER_NAME" output.csv inputfilename.shp
      

      您希望得到一列包含这样的几何内容

      {"type":"Polygon","coordinates":[[....]]}
      

      其他列可能包含特征属性。

      然后可以将 CSV 导入 BQ。然后可以在BigQuery Geo Viz 中查看对表的查询。您需要告诉它哪一列包含几何图形。

      【讨论】:

        猜你喜欢
        • 2017-07-24
        • 1970-01-01
        • 1970-01-01
        • 2015-02-18
        • 1970-01-01
        • 1970-01-01
        • 2020-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多