如何用BigQuery Geo Viz在同一地图同时可视化多边形与质心?
在BigQuery Geo Viz中同时可视化多边形和质心的方法
我明白你想在BigQuery Geo Viz里同时展示多边形和它的质心,用ST_UNION没成功的问题——其实是因为ST_UNION会把两个几何对象合并成一个单一的GEOGRAPHY集合,这样Geo Viz没法区分两者来设置不同样式,甚至可能展示效果不符合预期。
这里有个更合适的解决方案,通过UNION ALL把多边形和质心作为独立的行返回,让Geo Viz能识别两个分开的地理对象:
示例SQL查询
WITH geo_data AS ( -- 定义多边形数据 SELECT ST_GeogFromText('POLYGON((-95.7082555 29.9212101, -95.665885 29.907145, -95.7742806214083 29.82947355, -95.7303605 29.8538605, -95.659484 29.901497, -95.662932 29.894958, -95.8441482 29.7265376, -95.646749 29.905534, -95.810012 29.719363, -95.664174 29.883618, -95.639718 29.910045, -95.652796 29.89204, -95.649915 29.886317, -95.650089 29.881912, -95.641443 29.897741, -95.632912 29.911674, -95.653458 29.864561, -95.635056 29.864431, -95.636533 29.757219, -95.623339 29.903466, -95.597235 29.75367, -95.3636989932886 29.8063167449664, -95.575123 29.920295, -95.3944858832763 29.94248964622, -95.147033 30.013214, -95.586588 29.947706, -95.456723 31.3287239, -95.69717 29.96911, -95.674433 29.943844, -95.678203 29.935184, -95.7082555 29.9212101))') AS geom, 'polygon' AS geo_type UNION ALL -- 定义质心点数据 SELECT ST_GeogFromText('POINT(-95.5606651932764 30.2307053050834)') AS geom, 'centroid' AS geo_type ) SELECT geom, geo_type FROM geo_data
为什么这个方法有效?
- 这个查询生成了一个包含两行数据的结果集:一行是多边形,一行是质心,同时用
geo_type字段明确区分了两者的类型。 - 在BigQuery Geo Viz中,你可以基于
geo_type字段为两个对象设置不同的可视化样式:比如给多边形设置填充颜色和边框,给质心设置醒目的点标记,让两者清晰区分。
关于ST_UNION的补充说明
ST_UNION确实可以把多边形和点合并成一个GEOGRAPHY对象,但合并后Geo Viz会把它当作一个整体展示,无法单独调整两者的样式,这也是它不符合你需求的原因。
内容的提问来源于stack exchange,提问作者ronencozen
相关产品推荐
相关产品推荐

