【问题标题】:Create MySQL spatial column - Point Data type with lat long without using Alter table创建 MySQL 空间列 - 具有 lat long 的点数据类型而不使用 Alter 表
【发布时间】:2017-01-29 11:39:33
【问题描述】:

如何使用 CREATE 语句使用纬度和经度创建具有“点”数据类型的 MySQL 空间列。 (不使用Alter)

我是否还需要存储纬度和经度,或者我可以将这两个值都插入到 Point(x,y) 字段中并去掉​​纬度/经度列?到目前为止,我阅读的示例保留了 lat long 字段。

请分享一些例子。

【问题讨论】:

    标签: mysql spatial


    【解决方案1】:

    点字段中存储了纬度和经度数据,如果需要,可以很容易地检索它们。假设您的点字段是名称 pt,以下查询会提供此信息。

    SELECT ST_Y(pt), ST_X(pt) FROM my_spatial_table;
    

    这和做的一模一样

    SELECT Y(pt), X(pt) FROM my_spatial_table;
    

    因为X and ST_X 是别名。所以简而言之,你只需要点场。

    您可以按如下方式添加您的 pt 字段:

    ALTER TABLE my_table ADD COLUMN GEOMETRY;
    

    然后您可以从现有的纬度和经度列中移动数据,如下所示:

    UPDATE my_table SET pt = PointFromText(CONCAT('POINT(',longitude,' ',latitude,')'))
    

    更多详情请见:https://stackoverflow.com/a/7135890/267540
    http://dev.mysql.com/doc/refman/5.7/en/populating-spatial-columns.html

    【讨论】:

    • 如何创建这样的表?创建 mytable(点)?以及如何将值插入此表中?
    • 不,我没有。我仍在解决我的代码中的其他一些问题。
    • 请帮我把这些语句合并成一个create语句。如何在 create 语句中实现以下目标? - UPDATE mytable SET mycol= Point(lon, lat);
    • 答案是您不能将 DDL 和 DML 查询合并到一个语句中。它们总是必须分开执行(无论是否使用地理空间数据)
    猜你喜欢
    • 2010-11-12
    • 2017-10-02
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    相关资源
    最近更新 更多