首页 > 解决方案 > 使用 Google Cloud Functions 确定点是否在多边形中的简单方法

问题描述

我在 Google Firestore 集合中有一组多边形(GeoJSON)。

对于给定的纬度/经度坐标,我如何确定哪些多边形将包含它?

我已经使用 Leaflet 和 Mapbox 为前端解决方案解决了类似的问题,但从未用于后端。其他 NoSQL 数据库可以本地执行此搜索,但我无法确定 Firestore 是否也可以。

希望有一种相对轻量级的搜索方式。

感谢您的输入!

标签: node.jsgoogle-cloud-firestoregoogle-cloud-functionsgeojson

解决方案


据我所知,Firestore 中没有对此的本机支持。例如,Geofire 使用 firebase realtmedb 对地理空间数据进行了一些实现。但是,据我所知,它也不适用于 Firestore。

最好的办法是在 Firebase 函数中将其作为函数运行。您可以将多边形存储在 Firestore 中,然后使用节点模块从函数运行计算,例如: https ://www.npmjs.com/package/point-in-polygon

大多数基本实现将要求您检查每个多边形。但是,如果您可以使用任何其他元数据或使用最短路径的某些策略来减少这种情况,那么如果您有很多多边形要检查,这将有所帮助。


推荐阅读