【发布时间】:2020-10-03 23:39:46
【问题描述】:
谁能解释一下两者的区别
$table->geometry('positions'); 和 $table->geometryCollection('positions'); 在 laravel 中。
【问题讨论】:
谁能解释一下两者的区别
$table->geometry('positions'); 和 $table->geometryCollection('positions'); 在 laravel 中。
【问题讨论】:
我假设您的数据库是 MySQL。那么请将其作为标签添加到您的帖子中。
根据手册: https://dev.mysql.com/doc/refman/5.7/en/spatial-type-overview.html
一些空间数据类型保存单个几何值:
几何学
GEOMETRY 可以存储任何类型的几何值。其他单值类型(POINT、LINESTRING 和 POLYGON)将它们的值限制为特定的几何类型。
和
其他空间数据类型包含值的集合:
几何集合
GEOMETRYCOLLECTION 可以存储任何类型的对象的集合。其他集合类型(MULTIPOINT、MULTILINESTRING 和 MULTIPOLYGON)将集合成员限制为具有特定几何类型的成员。
不同之处在于最后一个可以在单个列中包含多个实体(坐标/点)。例如,如果您想保存一个需要 4 个点的正方形,这将非常有用。
第一个实际示例是位置(它是一组坐标 (lat+lng))。
很遗憾,我无法为您提供有关如何在 Laravel 中使用它们的更多信息。但是在原始 SQL 中,它基本上是这样的:
-- Add data to a GEOMETRY column
SET @g = 'POINT(1 1)';
INSERT INTO geo VALUES (ST_GeomFromText(@g));
-- Add data to a GEOMETRYCOLLECTION column
SET @g = 'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
INSERT INTO geocol VALUES (ST_GeomFromText(@g));
【讨论】: