图形程序员如何处理不更改图像的渲染顶点?


10

因此,标题有点尴尬。我将提供一些背景信息,然后提出我的问题。

背景:我是一名Web GIS应用程序开发人员,但在业余时间我一直在玩地图渲染和改进数据交换格式。我仅在2D空间中工作。

我遇到的一个有趣的问题是,当您以小比例绘制多边形(放大的出路)时,许多顶点是多余的。一个极端的情况是,您有一个具有500,000个顶点的多边形,仅占用一个像素。如果要将这些数据发送到浏览器,则可以忽略其中大约499,999个顶点。我们实现这一目标的一种方法是在服务器上渲染图像并将其作为PNG发送:瞧,这很重要。不过,有时我们还是希望将数据发送到浏览器,然后在其中可以使用SVG(或canvas或webgl)对其进行呈现,以便可以进行交互。

问题:事实证明,使用现代地理数据集,很容易使SVG的渲染功能超负荷。为了解决这些限制,我试图找出如何在视觉上无损地减少给定比例尺和地图范围(以及必要时已知地图像素的宽度和高度)的数据集。

仅使用Douglas-Peucker算法,我的数据量就大大减少了,我相信我能够将其保持在一个像素以内,使多边形真实。不幸的是,道格拉斯·皮克(Douglas-Peucker)没有保留拓扑,因此改变了多边形之间边界的渲染方式。我无法轻易找到其他算法来尝试并适应该目的,但是我没有太多的CS /算法背景,如果我看过它们,可能会认不出来。


1
Google的“拓扑一致的Douglas-Peucker”,您将找到一些文章摘要的链接。不幸的是,您必须支付我所看到的全部文章。
Doc Brown

@DocBrown 谢谢! Questia甚至似乎有免费试用版。
canisrufus 2012年

Answers:


3

您正在寻找的是2d level of detail algorithms

如果您搜索那些突出显示的术语,那么Google上有很多有关此方面的文档。

有关stackoverflow的问题具有您在2D细节级别渲染中寻找的信息。


+1为非常相关的词汇。看来我实际上正在使用详细程度方法,但需要一种适合我需要的多边形简化算法。找到了3D模型的简洁概述。 我相信我实际上已经制定了一种合适的简化策略,尽管我没有时间对其进行编码。
canisrufus 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.