我正在使用MySQL从数据库中提取lat long并检查它们是否在特定的邻域中。
一切都很好,除非点在两个街区之间的边界上。然后,该点包含在两个邻域中。它变得复制了。处理边界点的最佳方法是什么?
每个点应仅计入一个社区 - 而不是两者。此外,我不希望,例如,邻居A得到所有的边境案件,但邻近的邻居,邻居B,以获得零案件。
想象一下,点30.3030,-70.7070位于纽波特和Oldport之间的边界。不幸的是,这一点被计算了两次。它被记录为Oldport和Newport。
类型|纬度|经度|附近
small | 30.3030 | -70.7070 | Newport small | 30.3030 | -70.7070 | Oldport small | 30.3344 | -70.7274 | Anotherport
我使用下面的select语句:
SELECT t.type, t.latitude, t.longitude, s.neighborhoods
FROM my_type_table t, neighborhood_shapes s
WHERE myWithin(POINTFROMTEXT( CONCAT( 'POINT(', t.latitude, ' ', t.longitude, ')' ) ) , s.neighborhood_polygons )) = 1
my_type_table包含列:
...而且neighborhood_shapes有列:
我使用myWithin函数来测试该点是在一个邻域还是另一个邻域。这是一个指向它的链接:myWithin function at mySQL forum。当该点在多边形中时,该函数返回1;当它不在多边形中时,该函数返回0。
你会如何解决这个问题?有什么建议吗?
答案 0 :(得分:0)
好的,我明白了。一些多边形中存在非常小的重叠。因此,当函数运行时,它将点放在两个邻域中。
谢谢。
-Laxmidi