在 mysql 数据库中打开 "shape" 属性

open "shape" attribute in mysql database

我在做路网项目。我想获得每个段的 GPS 坐标。我刚刚将形状文件数据转换为 mysql 数据库,并且有一个名为 SHAPE 的属性,它是 "geometry" 类型。我试着

select SHAPE from table

而且输出很乱。

有人知道如何打开这个 "geometry" 类型的 SHAPE 属性吗?

我还想知道形状文件是否适合使用,因为还有另一种数据类型:地理数据库。如果我要提取路网数据,哪个更好

Mysql 支持多种用于编辑和查询空间数据的几何函数。 有关完整列表,请参阅 here

一些例子:

-- show the WKT representation of the geometry
SELECT ST_AsText(SHAPE) FROM table;
-- show the coordinates of start and end point of the lines
SELECT ST_AsText(ST_StartPoint(SHAPE)), ST_AsText(ST_EndPoint(SHAPE)) FROM table;
-- show how many points build the line
SELECT ST_NumPoints(SHAPE)) FROM table;
-- length of the lines
SELECT ST_Length(SHAPE)) FROM table;

如果您需要线条的所有坐标,您可以简单地解析 ST_AsText(SHAPE) 查询的结果。 或者,我会推荐这个工作流程:

1) 用函数ST_NumPoints(SHAPE)

查询每条线的点数

2) 遍历1和点数,用函数ST_X(ST_PointN(SHAPE, n))ST_Y(ST_PointN(SHAPE, n))得到实际点的坐标,其中n是实际点数

迭代可以在 mysql 存储过程或外部程序或脚本中实现。

有关线串特定功能,请参阅 here

地理数据库还是 Shapefile? 您目前既没有使用 shapefile 也没有使用地理数据库,而是 MySql。如果只想导入数据库中的网络数据,shapefile 就可以了。另一方面,使用地理数据库,您可能可以更好地在 ArcGis 中工作,而无需使用外部工具。

如果你想使用外部数据库,我建议你在 PostgreSQL 中导入形状文件而不是 MySql,因为它对空间数据的支持更强大。