C# 用C语言绘制地理地图图块#

C# 用C语言绘制地理地图图块#,c#,image,google-maps,iis,opentk,C#,Image,Google Maps,Iis,Opentk,我正在创建一个自定义地图覆盖。 我不能使用像MapServer这样的开源服务器,因为它的数据量和格式太大了 最初,它将是一个客户端解决方案,将ArrayBuffer推送到客户端,并使用WebGL在地图上渲染数据,但后来我们发现,用户的PC将减去GPU,因此他们无法顺利运行WebGL渲染 因此,我将这些概念应用于OpenTK——我创建了一个IIS服务器处理程序,该处理程序创建一个OpenTK实例,并呈现一个请求的磁贴 为了原型的缘故,它是可行的——但是我觉得这不是最好的解决方案 渲染瓷砖最有效的方

我正在创建一个自定义地图覆盖。 我不能使用像MapServer这样的开源服务器,因为它的数据量和格式太大了

最初,它将是一个客户端解决方案,将ArrayBuffer推送到客户端,并使用WebGL在地图上渲染数据,但后来我们发现,用户的PC将减去GPU,因此他们无法顺利运行WebGL渲染

因此,我将这些概念应用于OpenTK——我创建了一个IIS服务器处理程序,该处理程序创建一个OpenTK实例,并呈现一个请求的磁贴

为了原型的缘故,它是可行的——但是我觉得这不是最好的解决方案

渲染瓷砖最有效的方法是什么?
我很想预渲染瓷砖,但是数据集太多(每天增加1000多个!)无法有效地进行预渲染

OpenTK是一个很好的选择(因为它可以利用硬件加速),还是在设置实例时有太多的开销

或者C#图形库是学习和使用的更好途径


甚至-是否值得抛弃IIS和C#并使用不同的语言/框架为图像提供服务?

您的服务器只有一个GPU,因此启动多个OpenTK实例将比启动单个实例并排队进行分幅渲染慢得多。GPU驱动程序内部的上下文切换会造成伤害。最新版本的OpenTK会在毫秒内启动,所以这应该不是问题(但您必须进行测量)。

没有gpu的webgl或OpenTK会对性能产生相同的影响…如果您计划一个web应用程序,您肯定会更好地使用webgl…在这种情况下,OpenTK会在服务器上运行以预渲染分幅。最初的想法是通过WebGL在客户机上进行渲染,但由于缺少GPU,这是不可能的。@Brad Zucher:您希望有多少并发用户?每个用户会访问不同的磁贴吗?渲染一个平铺需要多长时间?你能设计一个高效的缓存方案吗?这里的未知数太多,无法给出具体答案。@IDdler 100-1000用户。大部分不同,是的,有很多数据集。目前,每块瓷砖大约需要0.4秒。如果我下定决心,我可以设计一个像样的缓存方案!但是,当我设置正确的头时,我们的代理也会进行大量缓存!我想主要的问题是-启动OpenTK是否有足够的开销,使其能够更快地使用.NET graphics渲染每个分片?您的服务器只有一个GPU,因此启动多个OpenTK实例将比启动单个实例并将分片排队渲染要慢得多。GPU驱动程序内部的上下文切换会造成伤害。最新版本的OpenTK以毫秒为单位启动,因此这应该不是问题(但您必须进行测量)。使用c#Drawing library绘制单个瓷砖需要相同的时间(~0.4s),绘制多个瓷砖要稳定得多。感谢您指出上下文切换。