我有一个包含2,000,000
个城市的数据库。它们都具有市中心的坐标,并且大多数都具有GeoJSON边界。我正在尝试实施一种地理编码服务,该服务将使用node.js
,mongodb
,redis
,memcached
(和golang
查找与给定点相交的城市,如果有必要的话,因为我是刚刚接触它)
由于MongoDB
和Redis
都支持地理索引,所以我知道如何处理点(纬度和经度),但是我从未见过关于多边形的任何事情。
我猜想MongoDB并不能真正帮助它提高速度(因为它可以在磁盘上运行),但是任何内存数据库都应该解决这个问题。问题是我什至想不出任何实现方法。
如果有人指出我的制作方法,我会很高兴。谢谢。
答案 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