地理空间数据,或与特定的现实世界位置相关的数据,与优步更好地了解我们所服务的城市的能力是一体化的。从预测到最准确的估计抵达时间(eta)确定最好的驾驶路线地理空间数据授权我们为全球用户提供改进的体验。
但地图数据很大且复杂,而且由于世界始终更改,我们需要经常更新地图数据。为此,Uber建造和开放星云,一个工具集,用于在Web浏览器中为全功能,可访问和性能的几何编辑而设计,即使使用大规模的数据集。
我们在优步更广泛的可视化生态系统上构建了nebula.gl,包括开源工具Deck.Gl.和Vis.Gl.,用于静态数据集的性能可视化。nebula.gl增加了复杂的交互性,解锁了无限的可定制的地理空间数据编辑功能。
大数据集的高性能编辑
使用大型地理空间数据集时,如果在CPU或浏览器文档对象模型(DOM)上依赖太多,库会变得非常慢。尝试使用数千个坐标加载数据集时,许多其他基于浏览器的解决方案将冻结或崩溃。在Deck.GL上建立的Nebula.GL,非常利用WebGL和GPU来提供快速的可视化和编辑,即使有数千个坐标也是如此。
我们从地下设计了Nebula.GL,以提供优化的渲染和编辑性能,而无需复杂的应用程序逻辑,例如将数据拆分为子组或自定义数据。nebula.gl处理所有事件,例如单击,拖动和指针移动事件,并包括触摸屏支持,以便应用程序可以专注于其应用程序逻辑。
先进的地理空间编辑
Nebula.GL提供基本的几何图形图和编辑工具,用于点,线,圆,矩形和多边形,但通过提供超过30种用于绘制,编辑和测量几何形状的多种模式,进一步的步骤。
例子包括:
-
- 绘制新点,线条或多边形
- 移动各个顶点
- 翻译,缩放和旋转多个形状
- 联合,交叉和减去形状
- 测量距离和角度
有更强大的模式,如我们在优步构建的用于追踪建筑占地面积。
高级渲染
nebula.gl是一个成员Vis.Gl.生态系统和与其他VIS.GL框架无缝集成,如Deck.Gl.和loaders.gl.。
因此,Nebula.GL与所有地理空间Deck.GL层无缝集成,允许Geojson编辑与丰富的3D可视化进行交互。由于这种集成,用户控制了如何呈现几何形状,允许根据编辑的状态自定义颜色,大小,虚线,图标,图标以及光标。
完整的地质json支持
星云的核心提供是它的全功能地质杰森编辑功能,处理以下几何类型的地理杂志规范:点那多点那Linestring.那多重原因那多边形,和多聚底以及使用高度分量的几何形状。
nebula.gl api.
nebula.gl是一个基于浏览器的几何编辑库,写入TypeScript。它旨在为开发人员提供强大且灵活的功能,并为反应提供一流的支持,但不依赖于它。
编辑模式
使用Nebula.GL,通过编辑模式完成几何编辑。这些模式指示nebula.gl如何处理用户交互以便操纵地质json特征和几何形状。星云提供多种模式用于创建和操纵点,线条和多边形。
如果Nebula.GL提供禁用框的功能不完全符合用例,则开发人员可以使用自定义事件处理逻辑扩展或创建自己的编辑模式,而无需对Nebula.GL本身进行更改。编辑模式也可以撰写其他模式(例如“TransformMode”,撰写“Scalemode”,“ScrayAteMode”和“RotateMode”)。
可编辑evojsonlayer.
可编辑evojsonlayer.是可以传递给deck.gl的deck.gl层与其他deck.gl图层相同的方式,甚至可以与其他deck.gl层一起使用。它公开了一种反应式界面,其中通过一个数据更新提供oneedit.回调,但是几何形状的实际状态由应用程序拥有和控制。
反应地图 - GL-DIVER
与deck.gl一样强大,它是一个只需要在地图上绘制简单的2D形状的应用程序是一个很大的依赖。让不需要Deck.GL的应用程序利用Nebula.GL编辑功能,反应地图 - GL-DIVER模块提供简单的ROCK / SVG组件。它取决于React-Map-GL(反应包装器Mapbox JS.)但不依赖于甲板。对于在地图上需要地理空间绘制而不是Deck.GL的大规模数据渲染技术的用户来说,这是一个很好的选择。检查这个互动例了解更多信息。
下一步
Nebula.gl用于由Uber的几个团队生产,包括我们的地理产,映射存储和地图编辑团队。但我们希望它成为基于Web的地理空间编辑的参考实现。我们走向该愿景多远将部分地取决于我们是否得到额外的采用者。我们目前的一些发展项目包括:
反应组件
一个新的编辑器模块最近通过提供React组件来制造作为Nebula.GL的更简单的方法。此模块当前提供用于在各种地理空间数据格式(例如Geojson,WKT和KML)之间导入和导出的导入和导出组件。但是,我们想构建其他组件,例如工具栏,用于在模式之间切换到模式或导航到位置。
3D编辑
Nebula.GL建于支持3D的Deck.GL,因此将编辑能力扩展到第三维度是自然的。
除了定义新的编辑模式/交互模型并使用高度相关的属性丰富地理杂志数据,这涉及与Deck.GL团队的深度协作,以启用订单独立透明度等功能,以确保我们可以提供最佳视觉效果。
在地质json之外编辑
nebula.gl包括用于地理空间编辑的强大功能Web Mercator投影。但我们正在寻找超出此问题的用例。例如,Nebula.GL可以允许贴标程序,手动识别图像中对象的人员,在机器学习标签工作流程中的图像上绘制概要。我们探索的另一个用例是在测量时进行测量可视化自动驾驶数据使用其他投影。
我们期待看到开源社区中的其他人如何利用Nebula.GL获取自己的几何编辑项目。我们鼓励您通过查看我们的方式来为自己尝试Nebula.glgithub存储库!!
致谢
Nebula.gl团队希望感谢IB Green的帮助,并对这一项目进行帮助,并编辑这篇文章。如果没有他的指导和支持,该项目将无法实现。






