如何创建地理编码服务(查找与给定点相交的多边形)

How to create geocoding service (find polygons that intersect a given point)

情况

我有一个包含 2,000,000 个城市的数据库。它们都有市中心的坐标,而且大部分都有 - GeoJSON 边界。我正在尝试实施地理编码服务,该服务会使用 node.jsmongodbredismemcached(和 golang 找到与给定点相交的城市,如果有必要,因为我对它完全陌生)

问题

我知道如何使用点(纬度和经度),因为 MongoDBRedis 都支持地理索引,但我从未见过关于多边形的任何信息。

我想 MongoDB 不会真正帮助它的速度(因为它在磁盘上工作),但任何内存数据库都应该处理这个问题。问题是我什至想不出任何实现它的方法。

如果有人告诉我如何制作,我会很高兴。谢谢。

geo.lua (https://github.com/RedisLabs/geo.lua) 可以满足您在此处的要求,但性能不是很好(不确定自上次检查以来发生了什么变化)。

您可以自己实现多边形点算法。我在 https://api.3geonames.org

上做过类似的事情

首先做一个边界框来识别候选多边形,然后运行一个画中画。 https://en.wikipedia.org/wiki/Point_in_polygon