Answers:
查找空间函数参考,您将看到
Point(x, y)
Constructs a Point using its coordinates
这并不完全正确。所有GIS实现都必须(x,y)
对的投影坐标进行操作 (long,lat)
。但是,在大地坐标系上,关于如何处理存在一些分歧。MySQL(和SQL Server)可以,(lat,long)
但是PostGIS可以在(long,lat)
任何地方维护。
在有关地理信息的OpenGIS®实施标准规范中对此进行了介绍-简单功能访问-第2部分:SQL选项,
- 对于具有椭球二维坐标系的大地测量CRS,二维椭球坐标系轴为大地纬度(正北)和大地经度(正东)。轴方向分别为“北”和“东”。
- 对于具有三维椭球坐标系的大地测量CRS,WKT弦中水平轴的名称和缩写应遵循(ii)中的要求。垂直轴名称应为“椭圆高度”;垂直轴缩写应为“ h”,并且在包括水平轴缩写时也应包括在内。
请注意,以上单词是在地理信息中逐字找到的-坐标参考系统的知名文本表示
空间参照系(也称为坐标系)是地理(纬度-经度),投影(X,Y)或地心(X,Y,Z)坐标系。
就是说,PostGIS和Oracle以及许多第三方库似乎可以维护(x,y,[z])
所有类型的点。这违反了WKT的规范,但却是非常普遍的约定。例如GeoJSON也这样做,
点坐标按x,y顺序排列(投影坐标为东经,北经,地理坐标为经度和纬度)
并且,EPSG为SRSID 4326,明确定义了(长,长)排序。
一种2D或3D坐标系,其位置由地理CRS中使用的大地纬度,大地经度和(在三维情况下)椭圆体高度指定。
您也可以考虑查看Paul Ramsey(PostGIS上尉)的博客,主题为“让我们彻底摆脱困境”。
需要特别说明的是,MySQL带来了两个新功能,
这些功能站在一旁的ST_X()
,并ST_Y()
和需要地理SRS或者抛出异常和错误。
来自文档
在内部,MySQL以与WKT或WKB格式不同的格式存储几何值。(内部格式类似于WKB,但以4个初始字节表示SRID。)
Table 11.1 WKB Components Example
Component Size Value
Byte order 1 byte 01
WKB type 4 bytes 01000000
X coordinate 8 bytes 000000000000F03F
Y coordinate 8 bytes 000000000000F0BF
一种检查订单的简单方法是超出范围纬度:
SELECT ST_Longitude(ST_SRID(POINT(45, 160), 4326));
给出错误3732(22S03):函数st_srid的参数包含一个纬度为160.000000的几何,该几何超出范围。它必须在[-90.000000,90.000000]之内;
请注意,顺序可能会因您使用的功能而异:
SELECT ST_Longitude(ST_SRID(POINT(45, 90), 4326));
SELECT ST_Longitude(ST_GeomFromText('POINT(45 90)', 4326));