sql - 几何和几何集合之间的区别
问题描述
请任何人解释一下 laravel 之间
$table->geometry('positions');
的$table->geometryCollection('positions');
区别。
解决方案
我假设您的数据库是 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));
推荐阅读
- python - 即使其余代码工作正常,我的打印语句也会被忽略
- asp.net-core - 依赖倒置原则。为什么我可以在 ASP.NET Core 5 中访问非直接引用项目的类?
- youtube-api - 如何使用 YouTube Data API v3 启动默认的“Go Live”流
- blockchain - web3.contract.functions.getAmount() 中的差异
- list - Prolog 列表递归的问题不断返回预期的语法错误运算符
- ruby - 为什么 end_game 有 NoMethodError?
- uno-platform - 不起作用的 ListView GetContainerForItemOverride 方法
- python - 修复 Tensorflow Conv-Neural-Network 上的 ValueError 和 Warning
- python - ValueError: rate 必须是标量张量或范围 [0, 1) 内的浮点数,得到 1
- c++ - 如何将具有不同参数的函数放入 C++ 中的映射中?