Python — C ++ ГИС / пространственная библиотека для высокопроизводительных вычислений

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

0

Решение

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

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

Если вы можете обрабатывать данные ГИС с помощью GRASS, кажется, что проект может преобразовать их во что-то, что VTK может отобразить, все в одном приложении C ++.

1

Другие решения

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

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

1

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

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

0