如何将带有 POLYGON 的字符串类型转换为地理类型 - BigQuery
Posted
技术标签:
【中文标题】如何将带有 POLYGON 的字符串类型转换为地理类型 - BigQuery【英文标题】:How to convert a string type with a POLYGON to a Geography type- BigQuery 【发布时间】:2019-08-31 09:16:35 【问题描述】:我正在尝试将 STRING 数据类型转换为 GEOGRAPHY 重复类型,以便在 Bigquery 中连接两个表。我对 Bigquery 不是很熟悉,因此我们将不胜感激任何帮助。
我的第一个表称为 DealerInfo,具有以下数据类型:
-
DealerId - 字符串
地理 - 地理
我的第二张桌子被称为城市:
-
城市名称-STRING
几何 - 字符串
几何字符串看起来像这样:
POLYGON ((-28.855180740356388 -20.470634460449162,-28.855382919311467
-20.470634460449162,-28.855499267578125 -20.470554351806527,
-28.855585098266545 -20.470428466796818,-28.855623245239258
-20.470342636108398,-28.855686187744141 -20.470207214355469,
-28.855756759643498 -20.470096588134766,-28.855855941772404
-20.470016479492188,-28.856058120727482 -20.469953536987305,
-28.856224060058594 -20.469875335693303,-28.856462478637695
-20.469699859619141,-28.856561660766602 -20.46949577331543,
-28.856527328491154 -20.469383239746037,-28.856527328491154
-20.469097137451115,-28.856479644775334 -20.468908309936523,
-28.856412887573185 -20.468816757202148,-28.856327056884766
-20.468719482421818,-28.856176376342773 -20.468656539916935,
-28.855871200561467 -20.46859169006342,-28.855756759643498
-20.46859169006342,-28.855636596679574 -20.468561172485295,
-28.855499267578125 -20.468547821044808,-28.855382919311467
-20.468450546264648,-28.855401992797852 -20.468360900878793,
-28.855417251586914 -20.468278884887638,-28.8554668426513…
虽然 Geographies 变量看起来完全相同,但它是 GEOGRAPHY 数据类型,所以我无法加入表格。
任何建议/代码将不胜感激!
这是我用来尝试将 STRING 转换为 GEOGRAPHY 以连接两个表的代码:
SELECT
ST_MAKEPOLYGON(geometry) AS NEW_GEO
FROM `DWH.CASE1.BrazilCitiesGeographies`
LIMIT 1000
【问题讨论】:
【参考方案1】:要将带有 POLYGON 的字符串类型转换为 BigQuery 地理类型,您应该使用 ST_GEOGFROMTEXT() 函数,如下例所示
SELECT
ST_GEOGFROMTEXT(geometry) AS NEW_GEO
FROM `DWH.CASE1.BrazilCitiesGeographies`
LIMIT 1000
【讨论】:
您好,感谢您提供上述解决方案,但我在尝试时收到以下错误:ST_GeogFromText 失败:无效的多边形循环:边 103 与边 125 有重复的顶点。不知道这意味着什么?我需要进行其他类型的转换吗?以上是关于如何将带有 POLYGON 的字符串类型转换为地理类型 - BigQuery的主要内容,如果未能解决你的问题,请参考以下文章
如何将 boost::polygon 中的多边形集数据转换为多边形数据?
MySQL POLYGON ←→ Jts Polygon with JOOQ (as WKT)
在arcgis9.3中,如何将一个包含高程信息的面图层(Polygon ZM)转换为不包含高程的面图层(Polygon)