mysql根据坐标查找区域

时间:2014-01-06 10:34:21

标签: php mysql sql

我有一个区域表,所有区域都是x,y到xy和名称

我希望能够根据一组坐标(x,y)进行搜索和查找,如果它在一个区域的10米范围内。

这些区域所在的地图范围是-6000,-6000到6000,6000。

表中的

列是:Name,key,cox1,cox2,coy1,coy2。 从我可以看出,第一个坐标是最低的数字。

它们总是整数,所以不用担心小数点,例如-3918,-4017,-3069,-2970。

可能有多个区域重叠,在这种情况下,我需要返回所有这些区域。

这将从网页传递。

一些例子

  • cox1,cox2,coy1,coy2

  • -3918,-4017,-3069,-2970

  • -3905,-3962,-2393,-2330

  • -683,-683,-1459,-1459

  • 4336,4243,-4412,-432

好吧,这似乎是我想要的,但它非常受欢迎。 如果我交换x1和x2,或y1和y2,它将在某种组合中起作用但不总是

    SELECT RegionNames.Name FROM RegionNames 
    WHERE ( -3500 between RegionNames.cox2 and RegionNames.cox1 )
    AND ( -3000 between RegionNames.coy1 and RegionNames.coy2 )

1 个答案:

答案 0 :(得分:0)

e.g。假设你有这样的地区:

 Name          fromX     fromY     toX      toY  
 NorthEast      0          0       6000     6000
 NorthWest     -6000       0         -1     6000

你有这样的城市:

 Name        X      Y
 MyCity    -2000   550

尝试:

 Select city.name, region.name from city
 join region on ((city.X between region.fromX and region.toX) 
 and (city.y between region.fromY and region.toY))