Mariadb

特定類型的 WKT 建構子的功能與 ST_GeomFromText 是否不同?

  • January 21, 2019

來自 MariaDB 上的文件,對於ST_LineStringFromText

LINESTRING使用其 WKT 表示和 SRID構造一個****值。

ST_LineFromText(), ST_LineStringFromText(),ST_LineFromText()ST_LineStringFromText()都是同義詞。

不過,這似乎在技術上是不正確的,例如在這裡我們使用 , 構造一個點和一個多邊形ST_LineStringFromText()

WITH t(geom) AS ( VALUES
 (ST_LineStringFromText('POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))')),
 (ST_LineStringFromText('POINT( 0 0 )')),
 (ST_LineStringFromText('LINESTRING( 0 0, 1 1 )'))
)
SELECT ST_AsText(geom)
FROM t;

退貨..

POLYGON((35 10,45 45,15 40,10 20,35 10),(20 30,35 35,30 20,20 30))
POINT(0 0)
LINESTRING(0 0,1 1)

Polygon 函式的文件同樣令人困惑,

POLYGON使用其 WKT 表示和 SRID構造一個****值。

ST_PolyFromText(), ST_PolygonFromText(),PolyFromText()ST_PolygonFromText()都是同義詞。

但是您可以替換ST_LineStringFromTextST_PolyFromText,它們的工作方式相同。

MySQL 行為

使用 MySQL 8,您似乎在上述構造中遇到錯誤,

WKT 值是一個意外類型的POINT幾何圖形st_linestringfromtext

無論多麼可愛和無證,所有這些函式都在內部映射到Create_func_geometry_from_textin item_create.cc, . 出於這個原因,我建議使用ST_GeomFromText()哪個最能反映這一點。

GEOMCOLLFROMTEXT
GEOMETRYCOLLECTIONFROMTEXT
GEOMETRYFROMTEXT
GEOMFROMTEXT
LINEFROMTEXT
LINESTRINGFROMTEXT
MLINEFROMTEXT
MPOINTFROMTEXT
MPOLYFROMTEXT
MULTILINESTRINGFROMTEXT
MULTIPOINTFROMTEXT
MULTIPOLYGONFROMTEXT
POINTFROMTEXT
POLYFROMTEXT
POLYGONFROMTEXT
ST_GEOMCOLLFROMTEXT
ST_GEOMETRYCOLLECTIONFROMTEXT
ST_GEOMETRYFROMTEXT
ST_GEOMFROMTEXT
ST_LINEFROMTEXT
ST_LINESTRINGFROMTEXT
ST_MLINEFROMTEXT
ST_MPOINTFROMTEXT
ST_MPOLYFROMTEXT
ST_MULTILINESTRINGFROMTEXT
ST_MULTIPOINTFROMTEXT
ST_MULTIPOLYGONFROMTEXT
ST_POINTFROMTEXT
ST_POLYFROMTEXT
ST_POLYGONFROMTEXT

引用自:https://dba.stackexchange.com/questions/227715