Google bigquery 从Bigquery中提取的美国和俄罗斯几何体存在视觉失真

Google bigquery 从Bigquery中提取的美国和俄罗斯几何体存在视觉失真,google-bigquery,gis,Google Bigquery,Gis,我使用这个查询来提取使用BigQuery公共数据集的所有国家的几何图形,请参见这里的问题 我用R来画结果 我尝试了Kepler.GL,得到了同样的结果 俄罗斯和美国出了点问题我对R可视化知之甚少,但可能发生的事情是从BigQuery获取WKT文本,并将其提供给R,R有不同的假设 问题是您的R包可能会以不同于BigQuery的方式对待WKT。WKT语义取决于所使用的空间参考系(SRS),它可以是地理的(非投影的,使用球体或椭球体)或投影的(平面地图)。BigQuery使用地理系统,因此点A和点

我使用这个查询来提取使用BigQuery公共数据集的所有国家的几何图形,请参见这里的问题

我用R来画结果 我尝试了Kepler.GL,得到了同样的结果


俄罗斯和美国出了点问题

我对R可视化知之甚少,但可能发生的事情是从BigQuery获取WKT文本,并将其提供给R,R有不同的假设

问题是您的R包可能会以不同于BigQuery的方式对待WKT。WKT语义取决于所使用的空间参考系(SRS),它可以是地理的(非投影的,使用球体或椭球体)或投影的(平面地图)。BigQuery使用地理系统,因此点A和点B之间的边是最短的测地路径。大多数可视化系统使用投影坐标,并采用平面地图。A和B之间的边是平面地图上最短的直线

虽然这在很多情况下并不重要,但当您有长边时,它仍然会影响精度。但当一条边穿过反子午线(180度子午线)时,你们会遇到大问题。在(-169,66)(俄罗斯东部边缘)和say(176,70)(楚科奇海附近的一个点)之间的边缘在球体上相对较短,它穿过反子午线,跨越15度经度。但平面地图上的同一条边横跨145度经度,并且横穿了大部分地图!这些是您看到的接近水平的长线条

你该怎么办

  • 如果R有一个支持地理SRS的数据包(有时可以选择使用测地边),您可以试试
  • 或者您也可以让BigQuery使用
    ST_AsGeoJson
    函数将地理从地理SRS转换为平面地图,R会理解这一点。GeoJson是在平面地图上定义的,因此BigQuery
    ST_AsGeoJson
    将语义从地理SRS转换为平面地图SRS。然后在R中可视化GeoJson字符串而不是WKT字符串
ST_AsGeoJson
做了大量工作,使结果符合GeoJson规范和平面图。它将位于反子午线以东和以西的部分地理区域分割开来,所以不会有穿过它的边缘。它还使用平面贴图边近似测地线边。但它使可视化系统更容易