2014-02-09 1 views
0

Итак, я работаю над созданием модели на основе агентов, которая в этом случае выполняется по географической карте - сирии. Я попытался написать его на python, но производительность довольно медленная - даже после некоторых трюков оптимизации. Я думал, что мне нужно перейти к написанию модели на C++, но я не знаю, какие пакеты визуализации могут включать карты? Я склонен использовать gnuplot в C++, но мне не удалось найти способ включить базовую карту gis в этот пакет. Я не уверен, что это возможно в VTK или других пакетах. Я хотел бы найти способ быстро запустить мою модель на C++, но не потерять географическую информацию. Какие-либо предложения?C++ gis/пространственная библиотека для высокопроизводительных вычислений

ответ

1

Так что я действительно понял ответ на эту проблему и размещаю решение для всех. Лучший выбор, если вы используете python, - это просто использовать пакеты Mayavi и tvtk от Enthought. Mayavi - это gui поверх библиотек C++ C++. И tvtk на самом деле является оболочкой для доступа python к объектам VTK. Таким образом, это позволяет человеку использовать python GIS-пакеты - например, pyshp, Shapely и другие для управления объектами GIS, а затем записывать их в надежные и быстрые Mayavi для визуализации. В то же время, если вы хотите придерживаться C++, вы можете просто написать свой код на C++ с помощью gdal или ogr и т. Д., А затем запустить визуализацию в VTK. Это кажется намного проще и интуитивно понятным, а затем пытается запустить некоторые другие пакеты, такие как GRASS, QGIS или ArcGIS.

Вот хороший пример этого набора инструментов в действии. Example

1

Возможно, этот проект может быть вам полезен?

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

Если вы можете обрабатывать ваши данные ГИС с использованием GRASS, кажется, что проект может превратить его в нечто ВТК может оказать, все в одном C++ приложений.

0

Почему вы считаете, что реализация вашей модели на C++ будет значительно быстрее? Я предлагаю, прежде чем беспокоиться о том, как вы будете визуализировать результаты, которые вы сначала сосредоточите на том, что заставляет вашу реализацию python быть медленной. Разве ваш алгоритм не будет масштабироваться? Если вы попробовали оптимизационные трюки, какие трюки были такими, и почему вы считаете, что они не работают?

Все это в конечном итоге сводится к машинным инструкциям, выполняемым на аппаратном обеспечении, независимо от того, начинаются ли эти инструкции как питон, C++ или какой-либо другой исходный код. Если ваш python не запускал fully interpreted все время, я не думаю, что вы обнаружите, что языки переходов могут привести к принципиально другому профилю производительности. Premature optimization все еще можно избежать.

Смежные вопросы