new*_*bie 5 spatial geometry mysql-8.0
我正在 mysql 8 上尝试以下插入查询。
Insert Into fence Set
fenceName='aa',
radius=2,
fenceGeometry=ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)
Run Code Online (Sandbox Code Playgroud)
它在 mysql 5.7 上完美运行,但在 mysql 8 中我得到了这个 error Latitude 102.189331 is out of range in function st_geomfromtext. It must be within [-90.000000, 90.000000].
根据一些建议,我也这样做了。
ALTER TABLE fence MODIFY fenceGeometry geometry NOT NULL SRID 4326;
Run Code Online (Sandbox Code Playgroud)
但是它给了我相同的结果。
那是因为在 MySQL 8 上,他们做了不可思议的事情并实现了做地理坐标的愚蠢方法(如 MySQL)。这打破了向后兼容性。
有趣的是,拥有 MySQL 的 Oracle 在 Oracle Spatial 上没有这样做。Oracle Spatial 和 PostGIS 是一致的 (long,lat)`。要解决此切换顺序,而不是
ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)
Run Code Online (Sandbox Code Playgroud)
但是这个,
ST_GeomFromText('POINT(3.880696482497261 102.1893310546875)', 4326)
Run Code Online (Sandbox Code Playgroud)
在 MySQL 5.x 中没有真正的地理坐标系。
如果您有可以使用的积分,则不应为此使用 WKT Point(),并且ST_SRID(pt,SRID)
ST_SRID(Point(3.880696482497261, 102.1893310546875), 4326)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,另请参阅,
| 归档时间: |
|
| 查看次数: |
1518 次 |
| 最近记录: |