0

所以我正在努力建立一个基于代理的模型,该模型在地理地图上运行——在这种情况下是叙利亚。我尝试用 python 编写它,但性能相当慢——即使经过一些优化技巧。我在想我应该转向只用 C++ 编写模型,但我不知道哪些可视化包可以合并地图?我倾向于在 C++ 中使用 gnuplot,但我一直无法找到将 gis 底图合并到该包中的方法。我不确定这在 VTK 或任何其他软件包中是否可行。我想找到一种在 C++ 中快速运行我的模型但又不会丢失地理信息的方法。有什么建议么?

4

3 回答 3

1

也许这个项目对你有用?

http://code.google.com/p/vtk-grass-bridge/

如果您可以使用 GRASS 处理您的 GIS 数据,那么该项目似乎可以将其转换为 VTK 可以呈现的东西,所有这些都在一个 C++ 应用程序中。

于 2014-02-09T19:29:37.297 回答
1

所以我实际上想出了这个问题的答案,并为大家发布了解决方案。如果你使用 python,最好的选择是只使用 Enthought 的 mayavi 和 tvtk 包。Mayavi 是 C++ VTK 库之上的 gui。而 tvtk 实际上是 python 访问 VTK 对象的包装器。因此,这允许人们使用 python GIS 包(如 pyshp、Shapely 等)来操作 GIS 对象,然后将它们写入强大且快速的 mayavi 以进行可视化。同时,如果你想坚持C++,那么你仍然可以使用gdal或ogr等在C++中编写你的代码,然后在VTK中运行你的可视化。这似乎比尝试运行其他一些包(如 GRASS、QGIS 或 ArcGIS)更容易、更直观。

下面是这个工具集的一个很好的例子。 例子

于 2014-03-02T07:09:53.380 回答
0

是什么让您相信您的模型的 C++ 实现会显着加快?我建议在关注如何可视化结果之前,首先关注导致 python 实现缓慢的原因。是您的算法无法扩展吗?如果您尝试过优化技巧,这些技巧是什么?为什么您认为它们不起作用?

这一切最终都归结为在硬件上执行的机器指令,无论这些指令最初是 python、C++ 还是其他一些语言源代码。除非您的 python 一直在运行完全解释,否则我认为您不会发现单独切换语言会导致您具有根本不同的性能配置文件。过早的优化仍然是需要避免的。

于 2014-02-10T19:11:33.150 回答