首页 > 解决方案 > 几何和几何集合之间的区别

问题描述

请任何人解释一下 laravel 之间 $table->geometry('positions');$table->geometryCollection('positions');区别。

标签: sqllaraveleloquent

解决方案


我假设您的数据库是 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));

推荐阅读