【问题标题】:how do i create a circle Geometry with a radius and co-ordinates of center, using MySQL Spatial Extensions?如何使用 MySQL 空间扩展创建具有半径和中心坐标的圆形几何?
【发布时间】:2013-06-06 11:26:14
【问题描述】:

我正在尝试使用中心坐标和半径在 MySQL 中创建圆形几何图形。我到处搜索……我在网站上的 MySQL 文档中能找到的都是多边形。可能是我找错地方了。任何人都可以帮助我使用适当的 SQL 来帮助我创建一个将该圆形几何图形存储为表中的列之一的表吗? 另外,我什至不确定在 MySQL 中是否有办法这样做?..我使用的版本是 MySQL 5.6。

提前致谢。

【问题讨论】:

    标签: mysql spatial spatial-query


    【解决方案1】:

    从 MySQL v5.6.1 开始,您可以使用Buffer(<em>g</em>, <em>d</em>):

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

    显然,在您的情况下,g 应该是圆心的点,d 应该是它的半径。

    【讨论】:

    • 太棒了。谢谢你帮我看到这个。我不知何故忽略了这一点。另一件事。这是否仅在 5.6.1 中可用...在以前的版本中是否有类似的东西。圆形几何似乎是一种基本情况,但这种几何不被支持似乎很奇怪。
    • @user2052129:不,在早期版本中没有类似的东西 - 你必须手动构建一个足够分辨率的多边形。
    • 谢谢...确实有什么指标?...是英里还是米...?我们可以在哪里以及如何设置它。
    • 抱歉打错了。我的意思是 Buffer 函数 Buffer (g, d) 中的距离 D .. 我正在尝试获取该指标。我正在使用地球的纬度和经度。那么有没有办法知道那个指标。谢谢
    • 如果您将latlong 作为两列,那么设置此sql 语句的正确方法是什么?我正在为此苦苦挣扎。
    【解决方案2】:

    有两个部分: A.对于给定的测试点,您必须检查它们与给定圆的关系。 B.您想在给定圆的圆周上生成点。

    A.是的,首先取给定点(测试点)与圆心点之间的距离。这两个点都在纬度和经度中定义。两点 (x1,y1) 和 (x2,y2) 之间的距离公式是距离 d= sqrt[ (x2-x1)^2 + (y2-y1)^2 ]。 现在,

    1. 如果此距离小于圆的半径,则您的测试点在您的圆内。
    2. 如果此距离大于半径,则测试点位于圆外。
    3. 如果这个计算的距离等于圆的半径,那么这个测试点就在你的圆上,即在你的圆的圆周上。

    B.在一个圆圈中,总角度 theta 是 360 度或 2*Pi 的弧度。 对于给定的圆,其中心为 (x1, y1),半径为 r。

    x = x1 + r * cos(theta)

    y = y1 + r * sin(theta)

    其中,theta 从零运行到 2*Pi,Pi 是 3.1415。

    取决于你如何做。例子:如果你想在圆上 10 个点,那么 increment=(2*Pi-Zero)/10。

    拳头 theta 为零,然后 theta 为零+增量,然后 theta 为零+增量+增量,即 2* 增量,然后零 + 3* 增量,依此类推。除非你得到的 theta 等于 2*Pi。

    对于以上所有的 thetas 计算 x 和 y。这些所有 x 和 y 坐标点都在圆的圆周上。

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多