在 BigQuery 中获取给定国家/地区的质心坐标

Get centroid coordinates of a given country in BigQuery

在 BigQuery 中,给定一个 ISO-2 代码中的国家/地区,我需要获取其质心坐标(纬度和经度)。 有办法做到这一点吗? 查了BQ的geography functions没找到方法

您可以使用 BigQuery public 数据集中的 bigquery-public-data.geo_openstreetmap.planet_features table 来计算国家/地区的质心。内部查询基于 Stack Overflow 中的 。考虑以下查询和输出。

SELECT -- Extract country code, lat and long
 CountryISO2Code,
 ST_X(centroid) AS longitude,
 ST_Y(centroid) AS latitude
FROM (SELECT (SELECT value FROM UNNEST(all_tags)
   WHERE key = 'ISO3166-1:alpha2') AS CountryISO2Code,
     ST_CENTROID(geometry) centroid -- calculate the centroid with the geometry values
   FROM `bigquery-public-data.geo_openstreetmap.planet_features`
   WHERE EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='boundary' AND value= 'administrative')
     AND EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='admin_level' AND value = '2')
     AND EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='ISO3166-1:alpha2'))
WHERE CountryISO2Code="IN" -- country code to filter the output

上述查询的输出

请注意 table 中有一些国家代码不可用。此外,OSM dataset in BigQuery 本身是由志愿者制作的 public 商品,数据质量无法保证。

我还从 Github 中找到了一些 community-maintained 数据,例如 this one 可以导入 BigQuery 并且是 ready-to-use.