【问题标题】:open "shape" attribute in mysql database在mysql数据库中打开“shape”属性
【发布时间】:2015-09-08 08:57:17
【问题描述】:

我正在做一个道路网络项目。我想获得每个路段的 GPS 坐标。我刚刚将形状文件数据转换为 mysql 数据库,并且有一个名为 SHAPE 的属性,它是“几何”类型。我试过了

select SHAPE from table

而且输出很乱。

有谁知道如何打开这个“几何”类型的 SHAPE 属性?

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

【问题讨论】:

    标签: mysql database gis shapefile geo


    【解决方案1】:

    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 也不是地理数据库,而是 MySql。如果只想在数据库中导入网络数据,shapefile 就可以了。另一方面,如果使用地理数据库,您可能会在 ArcGis 中更好地工作,而无需使用外部工具。

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

    【讨论】:

    • 非常感谢托马索!非常有帮助!!请问“线”是指路段吗?为什么一条线上有很多点?它只是为了准确的可视化吗?还是这些点是物理道路交叉口?
    • 或者我应该问如何找到所有路口的gps坐标?
    • 线段是由两个不同端点界定的线的一部分。此外,一条 2 点的线仅由 1 段组成,一条 3 点的线由 2 段组成,依此类推。我不知道您是在单行还是多行甚至多行单行中导入所有段,所以我的回答是通用的。
    猜你喜欢
    • 2011-06-23
    • 2014-06-07
    • 2019-07-12
    • 1970-01-01
    • 2020-07-30
    • 2018-10-08
    • 2013-03-22
    • 2021-04-15
    • 2018-05-09
    相关资源
    最近更新 更多