从GEO数据库中查询地理空间数据可以使用MySQL的地理空间函数。以下是一些常用的地理空间函数:
将文本表示形式转换为地理空间对象。
SELECT ST_GeomFromText('POINT(1 1)');
将地理空间对象转换为文本表示形式。
SELECT ST_AsText(point) FROM locations;
计算两个地理空间点之间的球面距离。
SELECT ST_Distance_Sphere(POINT(1 1), POINT(2 2));
检查一个地理空间对象是否在另一个地理空间对象内部。
SELECT ST_Within(POINT(1 1), POLYGON((0 0, 0 2, 2 2, 2 0, 0 0)));
检查两个地理空间对象是否相交。
SELECT ST_Intersects(POINT(1 1), LINESTRING(0 0, 2 2));
检查一个地理空间对象是否包含另一个地理空间对象。
SELECT ST_Contains(POLYGON((0 0, 0 2, 2 2, 2 0, 0 0)), POINT(1 1));
创建一个地理空间对象的缓冲区。
SELECT ST_Buffer(POINT(1 1), 100);
通过使用这些地理空间函数,您可以从GEO数据库中查询地理空间数据。例如,要查询距离纽约市100公里内的所有位置,可以使用以下SQL语句:
SELECT name, ST_AsText(point)
FROM locations
WHERE ST_Distance_Sphere(point, ST_GeomFromText('POINT(-74.0060 40.7128)')) <= 100000;
在这个例子中,我们使用ST_Distance_Sphere函数计算两个点之间的球面距离,并使用ST_AsText函数将地理空间点转换为文本格式。