【问题标题】:Spatial Index in MySQL - ERROR - Cannot get geometry object from data you send to the GEOMETRY fieldMySQL 中的空间索引 - 错误 - 无法从您发送到 GEOMETRY 字段的数据中获取几何对象
【发布时间】:2011-08-18 00:49:36
【问题描述】:

我不熟悉整个“空间索引”,但它似乎是基于纬度/经度进行过滤的最佳解决方案。所以我在表中添加了一列:

所以我创建了一个geometry 字段:

  ALTER TABLE `addresses` ADD `point` POINT NOT NULL 

然后我尝试添加一个索引:

  ALTER TABLE `addresses` ADD SPATIAL INDEX ( `point` ) 

但我得到一个错误:

  #1416 - Cannot get geometry object from data you send to the GEOMETRY field

我在这里做错了什么?

【问题讨论】:

    标签: mysql geometry geolocation spatial-index mysql-error-1416


    【解决方案1】:

    好的,我找到了解决方案:如果某些列字段不包含数据,则无法创建空间索引。运行后

      UPDATE `addresses` SET `point` = POINT( lng, lat )
    

    一切正常。

    【讨论】:

    • 我现在看到你的答案和我的一样,我试图逐字复制,它抱怨 lat 和 long 未定义:P ...
    • POINT的顺序是lng, lat为POINT(lng, lat),请改一下答案,以免以后出错。
    • @RamsésFernández 这不是真的 根据this answer。 MySQL 处理它的方式与 PostGIS 不同
    【解决方案2】:

    我遇到了同样的错误(无法从您发送到 GEOMETRY 字段的数据中获取几何对象),但是在尝试从 mysql 转储中导入空间数据时。 我发现有些行有“null”(X 为 null 或 Y 为 null)空间数据,即使该列是“NOT NULL”..

    检查您是否遇到与我使用此 SQL 描述的相同的问题:

    从 X(坐标)为 NULL 或 Y(坐标)为 NULL 的位置中选择 id;

    如果你有一些行,那么这对我有用:

    更新位置 SET 坐标 = POINT(0,0) WHERE X(coordinates) IS NULL OR Y(coordinates) IS NULL;

    然后尝试您的 mysqldump(或从 phpmyadmin)并再次导入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-22
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 2023-04-02
      • 2019-06-08
      • 1970-01-01
      相关资源
      最近更新 更多