问题标签 [mysql-spatial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
585 浏览

php - MySQL ST_Buffer 最小半径

我有一系列存储在 MySQL 表中的多边形,我需要将其作为分解的多边形返回,这些多边形与原始多边形的距离最小。

ST_Buffer函数执行与我所追求的非常相似的功能,但是该多边形与原始多边形之间的距离必须至少是指定的距离值。

手册指出

ST_Buffer 返回一个几何,该几何表示与几何值 g 的距离小于或等于距离 d 的所有点

我面临的问题是 ST_Buffer 函数返回的多边形仅在某些地方爆炸了 2.6nm,而不是我设置的最小距离 3nm

是否有类似的功能可以保证最小距离?越过少量也没关系,但必须不小于指定的距离。

编辑/解决方案:我最终创建了一个 Postgres 数据库来使用 PostGIS 库和地理数据类型来解决这个问题。只为单个表和查询运行它感觉有点矫枉过正,但 MySQL 库缺乏所需的功能。

0 投票
1 回答
39 浏览

mysql - 如何正确设置 MySql 数据库中具有类型点的字段的值?

我不太喜欢地理空间数据,我有以下问题。我正在使用MySql ,并且在尝试在此表行中添加具有作为类型的字段的值时发现了一些困难。

我有一张这样的桌子:

如您所见,此表包含类型为point的gps字段。在我看来,这种数据类型最适合存储一个点的 GPS 坐标。

我尝试使用 IDE 插入该字段的值,但它不起作用……使用我的 IDE,我可以插入所有其他字段值,但不能插入gps字段值。

我该如何尝试手动操作?例如我插入了这条记录:

如何正确创建更新SQL 查询来更新此记录,并使用这些坐标设置gps字段?:

我正在尝试这样的事情,但它不起作用:

我收到此错误消息:

怎么了?我错过了什么?我该如何解决这个问题?

0 投票
2 回答
429 浏览

mysql - 将点字段作为参数的 X() 和 Y() MySql 函数返回什么类型的数据

我不是很喜欢数据库。在地理空间查询中,我有这样的事情:

gps字段指向类型的位置。

它返回的值如下:

我的疑问是:前面的X()Y()函数返回的确切数据类型是什么?

0 投票
0 回答
168 浏览

sql - 使用空间 SQL 的路由算法

目前,我正在寻找一种解决方案来加速我的代码。我有一个具有不同几何组件(点、多边形)的数据库。每个结构都由多个属性给出,称为 Con_Number(默认值:0)、LayerName、单个索引 (ObjectIndex)。因此每个实例的 Con_Number 应该是相同的值...

  • 在同一层上重叠的结构。
  • 在相邻层上重叠的结构。

我使用 STIntersects 命令获取重叠实例。

sqlString := 'declare @g geometry select @g = Geom from obj where ObjectIndex = :index select ObjectIndex, Con_Number from obj WITH(index(idx_Spatial)) where Geom.STIntersects(@g) = 1 and ObjectLayerName in (' + QuotedStrList(neighbourLayers) + ')';

我试图在遍历某一层的所有元素的并行循环中执行此算法。之后,我在单独的连接/查询上为每个实例运行 SqlCommand。结果将根据不同 con_number 的数量进行不同的处理。最后但同样重要的是,重叠结构的 Con_number 将被更新。

  1. 步骤:找到所有重叠的元素!
  2. 步骤:更新重叠元素的 Con_Number!

    /li>

目前,我试图获得更好的表现。此外,线程在一段时间(几个小时)后崩溃。你认为多线程适合我的应用吗?你有其他改进的想法吗?

0 投票
2 回答
235 浏览

mysql - Mysql:在一定半径内查找多边形

在我的数据库中,我存储了多边形。现在我需要搜索一定半径内的所有多边形。即使多边形只是区域内的一小部分,那么它也应该包含在结果中(所以一旦有最小匹配,就会有匹配)。

做这个的最好方式是什么?我一直在考虑创建另一个多边形并搜索与之相交的所有内容,但不知道这是否是一种有效的方法?

0 投票
1 回答
4679 浏览

mysql - 如何在 mySQL 表中插入点

我收到一条 mySQL 错误,提示“ADDRESS_LONGI_LATIT_LOCATION”不能为空。'geomfromtext/pointfromtext' 可能返回 null。这里有什么问题?任何帮助表示赞赏。

另一种方式

0 投票
1 回答
1047 浏览

php - 如何在 PHP 中解压 MySQL 多点几何数据?

好的,所以我想我已经接近了,但是我对二进制数据的理解遇到了限制。

我正在解析一些作为几何类型插入的 MySQL 数据,使用 PHPunpack()作为我的解析器,一切都很顺利,直到我开始尝试解压缩复杂的几何类型(例如MULTIPOINT)。

对于一种POINT数据类型,我使用一种简单地忽略第一个块然后给我一个关联数组 , 和 的解包模式取得了type很好orderlat成功lon

自然地,将完全相同的模式应用于MULTIPOINT几何图形并不会产生相同的效果。它得到orderandtype变成 4,但是latand的值lon根本不是我所期望的。所以,好奇地想看看整个东西是什么样子的,我改变了模式,把它全部吐出来作为“双(机器依赖的大小和表示)”类型:

解包的内容实际上包括五个额外的数组项,而不是我期望的具有两个点 (2x2) 的多点的 4 个,并且这些值完全是古怪的。例如,我希望在 40-something-point-whatever 范围内的某个值看起来像是-1.0977282851114052e-218.

打开包装的正确方法是MULTIPOINT什么?我的直觉告诉我,我正在对不应该的字节进行切片,或者将它们转换为不合适的类型,但我不确定那些应该是什么。

0 投票
1 回答
1778 浏览

php - 学说querybuilder语法错误预期=,<,<=,<>,>,>=,!=,字符串结尾

出现以下错误:

“[语法错误] 第 0 行,列 -1:错误:预期 =、<、<=、<>、>、>=、!=,字符串结尾。”

使用学说 querybuiler 构建此查询:

(Sf4 和教义 2.6)

Orm 配置:

STGeoFromText 类:

查询的构建:

同样的错误:

注意没有符号 ' 包裹 :point 参数。

0 投票
2 回答
1172 浏览

mysql - Mysql:带边框的ST_Contains检测多面体是否包含点

我使用 mysql 空间函数。

我必须了解点是否位于多面体中。
最初我使用MBRContains但它以一种奇怪的方式工作,所以我遇到了以下错误:Mysql function MBRContains is not accuracy

在此处输入图像描述

我的下一步是切换到功能ST_Contains。但我发现如果我使用多边形(来自多面体)顶点作为参数 - 函数返回 false 但我想排除所有多面体边界。

附言

我发现功能在哪里:

ST_Touches(g1, g2)

如果两个几何内部不相交,则两个几何在空间上接触,但其中一个几何的边界与另一个几何的边界或内部相交

看起来它像我想要的那样工作(在OR条件下ST_contains),但文档对我来说并不清楚。你能解释一下 2 个条件如何一起成为真理
1. 内部不相交
2. 边界与内部相交。

?

问题:

我怎样才能实现我想要的行为?

0 投票
0 回答
133 浏览

mysql - MySql 空间:`ST_Contains(g1,g2) || ST_Touches(g1, g2)` 与`ST_distance(g1,g2)=0`

我使用 mysql 空间函数。

我必须了解点是否位于多面体中。必须包括Birder。

我的实验表明ST_Contains不包括多面体的边界

所以现在我有 2 个看起来可行的解决方案:
1. ST_Contains(g1,g2) || ST_Touches(g1, g2)
2.ST_distance(g1,g2)=0

这些解决方案是否等效?