【发布时间】:2015-10-11 19:50:18
【问题描述】:
我想在基于 OpenStreetMap (OSM) 的地图上为许多给定点(约 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 毫米点显示为热图。但是,完成这项工作需要 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() 需要很长时间才能找到给定点的图块。
有没有一些方法可以快速绘制点?
任何帮助将不胜感激。
我已经检查过了
https://help.openstreetmap.org/questions/16537/heatmap-with-osm
但是,那里的解决方案对我们不起作用。我需要在 C# WPF Visual Studio 2013 上为桌面应用程序做热图。
Leaflet 和 openlayers 是用于 Web/移动应用程序的 javascript 库。
http://www.patrick-wied.at/static/heatmapjs/ 和所有其他都用于 javascript lib。
此外,MapSurfer.net 需要 .NET Framework 4.5 和 Microsoft Visual C++ 2012。
OsmSharp 用于在地图上进行路由。
【问题讨论】:
标签: c# wpf visual-studio openstreetmap heatmap