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

时间:2019-12-07 21:25:09

标签: node.js mongodb redis memcached geocode

情况

我有一个包含2,000,000个城市的数据库。它们都具有市中心的坐标,并且大多数都具有GeoJSON边界。我正在尝试实施一种地理编码服务,该服务将使用node.jsmongodbredismemcached(和golang查找与给定点相交的城市,如果有必要的话,因为我是刚刚接触它)

问题

由于MongoDBRedis都支持地理索引,所以我知道如何处理点(纬度和经度),但是我从未见过关于多边形的任何事情。

我猜想MongoDB并不能真正帮助它提高速度(因为它可以在磁盘上运行),但是任何内存数据库都应该解决这个问题。问题是我什至想不出任何实现方法。

如果有人指出我的制作方法,我会很高兴。谢谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

上做了类似的事情

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