gpt4 book ai didi

c# - 在基于 openstreetmap 的 map 上显示半百万点非常慢

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:10 25 4
gpt4 key购买 nike

我想在基于 OpenStreetMap (OSM) 的 map 上为许多给定点(约 50 万个)创建热图。

我正在研究 C# VS2013 WPF。我已经检查了 OSM 控制库 GMAP 和热图控制库 GHEAT 的 C# 代码:

http://greatmaps.codeplex.com/ http://www.codeproject.com/Articles/88956/GHeat-NET

但是,Gheat.net(建于 2010 年)基于 GMAP.net v1.4.9.4 而我的 GMAP.net 是 1.7(建于 2015 年)。

我更改了代码,以便它可以在 jpeg 图像上将我的 0.5 milliom 点显示为热图。但是,完成这项工作需要 30 分钟。

这是我的 C# 代码:

System.Drawing.Bitmap myCanvasImage = new System.Drawing.Bitmap(12 * 256 - (2 * 256), 15 * 256 - (5 * 256),  System.Drawing.Imaging.PixelFormat.Format32bppArgb)

System.Drawing.Graphics g = Graphics.FromImage(myCanvasImage);

gheat.PointManager myPoints = new gheat.PointManager();

var xrange = Enumerable.Range(2, 12);
var yrange = Enumerable.Range(5, 15);

foreach (int x in xrange)
{
foreach (int y in yrange)
{
System.Drawing.Bitmap tempImage = gheat.GHeat.GetTile(myPoints, "classic", zoom, x, y);
g.DrawImage(tempImage, new System.Drawing.PointF(x * 256 - (2* 256), y * 256 - (5 * 256)));
}
}

我的想法:gheat.GHeat.GetTile() 需要很长时间才能找到给定点的图 block 。

有没有一些快速绘制点的方法?

如有任何帮助,我们将不胜感激。

我已经检查过了

https://help.openstreetmap.org/questions/16537/heatmap-with-osm

但是,那里的解决方案对我们不起作用。我需要在 C# WPF Visual Studio 2013 上为桌面应用程序进行热映射。

Leaflet 和 openlayers 是用于网络/移动应用程序的 javascript 库。

http://www.patrick-wied.at/static/heatmapjs/所有其他的都用于 javascript 库。

此外,MapSurfer.net 需要 .NET Framework 4.5 和 Microsoft Visual C++ 2012。

OsmSharp 用于 map 上的路由。

最佳答案

使用开源或商业解决方案。他们花了数年时间改进代码,使其速度超快。

根据我的经验,针对此类问题的纯 C#/WPF 解决方案非常优雅,但速度慢得可怜。以 DevExpress 为例 - 如果您尝试绘制超过 100 个点的图形,它就像一桶糖蜜一样运行(对 DevExpress 没有任何影响 - 他们的大部分图书馆都非常出色)。

最快、最高效的解决方案要么使用 GPU,要么使用优化的 C++ 渲染位图,然后使用 DirectX 将其推送到屏幕。与现成的 WPF 相关的任何技术相比,此技术更类似于游戏编程。随着时间的推移,计算机变得越来越快,现成的硬件和标准 WPF 完全有可能更能够毫不费力地处理这种规模的数据集。

为了保持这个答案的中立性,我不会给出任何名字,但如果您进行搜索,您可能会找到入围名单,比如 10 名决赛入围者,然后对他们进行一一试用。

关于c# - 在基于 openstreetmap 的 map 上显示半百万点非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33044050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com