如何创建地理编码服务(查找与给定点相交的多边形)
How to create geocoding service (find polygons that intersect a given point)
情况
我有一个包含 2,000,000
个城市的数据库。它们都有市中心的坐标,而且大部分都有 - GeoJSON 边界。我正在尝试实施地理编码服务,该服务会使用 node.js
、mongodb
、redis
、memcached
(和 golang
找到与给定点相交的城市,如果有必要,因为我对它完全陌生)
问题
我知道如何使用点(纬度和经度),因为 MongoDB
和 Redis
都支持地理索引,但我从未见过关于多边形的任何信息。
我想 MongoDB 不会真正帮助它的速度(因为它在磁盘上工作),但任何内存数据库都应该处理这个问题。问题是我什至想不出任何实现它的方法。
如果有人告诉我如何制作,我会很高兴。谢谢。
geo.lua (https://github.com/RedisLabs/geo.lua) 可以满足您在此处的要求,但性能不是很好(不确定自上次检查以来发生了什么变化)。
您可以自己实现多边形点算法。我在 https://api.3geonames.org
上做过类似的事情
首先做一个边界框来识别候选多边形,然后运行一个画中画。 https://en.wikipedia.org/wiki/Point_in_polygon
情况
我有一个包含 2,000,000
个城市的数据库。它们都有市中心的坐标,而且大部分都有 - GeoJSON 边界。我正在尝试实施地理编码服务,该服务会使用 node.js
、mongodb
、redis
、memcached
(和 golang
找到与给定点相交的城市,如果有必要,因为我对它完全陌生)
问题
我知道如何使用点(纬度和经度),因为 MongoDB
和 Redis
都支持地理索引,但我从未见过关于多边形的任何信息。
我想 MongoDB 不会真正帮助它的速度(因为它在磁盘上工作),但任何内存数据库都应该处理这个问题。问题是我什至想不出任何实现它的方法。
如果有人告诉我如何制作,我会很高兴。谢谢。
geo.lua (https://github.com/RedisLabs/geo.lua) 可以满足您在此处的要求,但性能不是很好(不确定自上次检查以来发生了什么变化)。
您可以自己实现多边形点算法。我在 https://api.3geonames.org
上做过类似的事情首先做一个边界框来识别候选多边形,然后运行一个画中画。 https://en.wikipedia.org/wiki/Point_in_polygon