我有一个 geojson 对象定义 Neighborhoods in Los Angeles使用经/纬度多边形。在我的 Web 应用程序中,客户端必须处理实时空间事件流,基本上是经/纬度坐标列表。如何在客户端(浏览器中)使用 Javascript 将这些坐标分类为邻域?
我愿意假设社区是排他性的。因此,一旦某个坐标被分类为邻域 X,就无需进一步测试其他邻域。
最佳答案
有一组很棒的答案 here关于如何解决确定点是否包含在多边形中的一般问题。对于您的情况,这两个选项听起来最有趣:
正如@Bubbles 提到的,首先进行边界框检查。这非常快,我相信无论是投影坐标还是未 protected 坐标都应该可以正常工作。如果您有社区的 SVG 路径,则可以使用 native
.getBBox()
方法快速获取边界框。对于复杂的多边形,我要尝试的下一件事是渲染到离屏 Canvas 并检查像素颜色,特别是如果您可以使用 D3 v3。 D3 v3 提供了一个地理路径助手,可以生成 Canvas 路径以及 SVG 路径,我怀疑如果您可以预渲染邻域,这确实会非常快。
更新:我认为这是一个有趣的问题,所以我在这里提出了一个通用的基于光栅的插件:http://bl.ocks.org/4246925
这与 D3 和 Canvas 元素一起使用来执行基于栅格的地理编码。一旦将要素绘制到 Canvas 上,实际的地理编码是 O(1),因此它应该非常快 - 快速浏览器内测试可以在大约 0.5 秒内对 1000 个点进行地理编码。如果您在实践中使用它,您需要比我在这里更好地处理边缘情况。
如果您不在浏览器中工作,您仍然可以使用 node-canvas 来执行此操作.
关于javascript - 使用 Javascript 将 lon/lat 坐标分类为 geojson 多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770853/