14

有没有人使用Mapnik从 .net c# 环境渲染地图?我想用它在.net4下开发的桌面应用程序中渲染地图。我发现它是最好的开源地图渲染器工具,比众所周知的Sharpmap、dotspatial (...) 要好得多。“唯一”的问题是它是用 C++ 和 Python 编写的,并且没有从 C# 中使用它的简单方法。

你知道任何.net Mapnik 包装器吗?你知道任何示例代码吗?

4

5 回答 5

5

我刚刚发布了我在 C# 绑定中的尝试。
它们位于:http: //sourceforge.net/projects/mapniknet/

于 2011-09-10T10:21:27.270 回答
2

关于 Mapnik-.Net 集成的一些好消息:

“对 Windows 开发人员有帮助的另一件事是从 .Net 语言中使用 Mapnik。尽管除了所有其他问题之外,完整的 .Net 包装器工作量太大,但希望我能做出一个有意义的开始并为 .Net 开发人员打开大门在他们的应用程序中利用 Mapnik。”

来源:Mapnik 主页http://mapnik.org/news/2011/jun/09/gsoc_2011_windows_build_system_introduction/

于 2011-06-17T14:43:51.247 回答
2

NET-Mapnik

您可能想尝试一下。它非常新,并且有一个简单的示例,其中包含创建矢量切片的选项。
https://github.com/kernelsanders/NET-Mapnik

于 2014-09-10T18:02:32.017 回答
1

所以,最后我破解了它。不是一个很好的解决方案,但它至少有效。简而言之,它以以下方式运行:

  • 开发了一个python脚本,它将参数作为命令行参数。(使用mapnik的python api)
  • 通过 shell fom c# 代码调用这个 python 脚本(进程)
  • 生成地图图像后,我在 SharpMap 中将其显示为背景层

如果有任何地图刷新(缩放、平移),我会重新生成“mapnik 地图图层”。我也有某种缓存,我可以在其中存储生成的地图,因此我可以通过使用早期生成的地图图像或预先生成它们来制作技巧(例如,当用户使用缩放工具时为下一个缩放级别生成地图)。我还使用了一些异步调用来执行此操作,因此我可以并行创建 1-3 个地图图像。

这个解决方案的弱点是 python 和 c# 模块之间的通信。我找不到比命令行参数 + shell 更好的了。

我的解决方案有效,mapnik 速度很快,可以在不到一秒的时间内生成我的地图。

如果您对 .net - python 通信有任何建议(没有 ironpython,它不适合 manik api),请写在这里。谢谢。

于 2011-06-17T00:00:18.030 回答
-2

你知道TAO项目吗?
它是一个 .Net 项目,通过在 C# 中调用 DllIMport() 将非托管 opengle 库转换为 .Net 托管表单。

你必须为 Mapnik 做,类似于 TAOFramework.net

于 2012-10-03T07:09:28.437 回答