如何使用MySQL Spatial Extensions创建一个半径和坐标为中心的圆几何?

时间:2013-06-10 18:06:33

标签: mysql spatial spatial-query

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

提前致谢。

2 个答案:

答案 0 :(得分:9)

从MySQL v5.6.1开始,您可以使用Buffer(g, d)

  

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

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

答案 1 :(得分:2)

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

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

  1. 如果此距离小于圆的半径,则您的测试点位于您的圆圈内。
  2. 如果此距离大于半径,则测试点位于圆圈之外。
  3. 如果此计算的距离等于圆的半径,则此测试点位于您的圆上,即圆的圆周上。
  4. B中。在一个圆中,总角度θ为360度或2 * Pi弧度。 对于给定的圆,其中心为(x1,y1),半径为r。

    x = x1 + r * cos(theta)

    y = y1 + r * sin(theta)

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

    取决于你的表现。示例:如果您想要圆上10个点,则增加=(2 * Pi-Zero)/ 10.

    第一个θ为零,然后θ为零+增量,则θ为零+增量+增量,即2 *增量,然后为零+ 3 *增量,然后依此类推。除非你得到等于2 * Pi。

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