【问题标题】:Bigquery GIS , how to group coordinates per country using Openstreetmap datasetBigquery GIS,如何使用 Openstreetmap 数据集对每个国家/地区的坐标进行分组
【发布时间】:2020-04-10 14:33:43
【问题描述】:

我正在使用 Bigquery 中的 openstreetmap 数据集,我做了一个查询,返回这样的列表

这是我正在使用的查询

SELECT
  ar.key,
  ar.value,
  osm_id,
  osm_way_id,
  ST_CENTROID(geometry) AS center_location
FROM
  `bigquery-public-data.geo_openstreetmap.planet_features`,
  UNNEST(all_tags) AS ar
WHERE
 ('amenity') in (
  SELECT
    (key)
  FROM
    UNNEST(all_tags))
    or
     (('suburb') in (
  SELECT
    (value)
  FROM
    UNNEST(all_tags)) or
    ('city') in (
  SELECT
    (value)
  FROM
    UNNEST(all_tags))
    or ('town') in (
  SELECT
    (value)
  FROM
    UNNEST(all_tags))
or ('village') in (
  SELECT
    (value)
  FROM
    UNNEST(all_tags)))

我的问题是假设我有另一个表格,国家/地区,几何为多边形

我如何加入字段中心位置以返回名称国家(如果该点在多边形内,则它属于一个国家)

【问题讨论】:

  • 你的预期结果是什么 - 至少给出一个简单的例子
  • 我添加了我正在使用的查询
  • 我还是不明白查询的当前输出是什么,预期的输出是什么。
  • 抱歉添加了更多上下文
  • 你的问题到底是什么?如何做 JOIN 或什么?你能澄清一下吗

标签: google-bigquery gis openstreetmap


【解决方案1】:

假设我有另一个表格,国家/地区,几何作为多边形 我如何加入现场中心位置以返回名称国家(如果该点在多边形内,则它属于一个国家)

空间连接是两个表的连接,在 WHERE 子句中使用谓词地理函数。例如:

-- how many stations within 1 mile range of each zip code?
SELECT
  zip_code AS zip,
  ANY_VALUE(zip_code_geom) AS polygon,
  COUNT(*) AS bike_stations
FROM
  `bigquery-public-data.new_york.citibike_stations` AS bike_stations,
  `bigquery-public-data.geo_us_boundaries.zip_codes` AS zip_codes
WHERE ST_DWithin(
  zip_codes.zip_code_geom,
  ST_GeogPoint(bike_stations.longitude, bike_stations.latitude),
  1609.34)
GROUP BY zip
ORDER BY bike_stations DESC   

你可以在这里看到更多 - Using JOINs with spatial data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多