Использование Mapnik в среде .net

Кто-нибудь использовал Mapnik для рендеринга карт из среды .net С#? Я хотел бы использовать его для отображения карт в настольном приложении, разработанном под .net4. Я нашел его лучшим инструментом рендеринга карт с открытым исходным кодом, намного лучше, чем хорошо известный сюжет, dotspatial (...). "Единственная" проблема заключается в том, что она была написана на С++ и Python и не имеет тривиального способа использовать ее из С#.

Знаете ли вы какие-либо обертки .net Mapnik? Знаете ли вы какой-нибудь пример кода?

Ответы

Ответ 2

Некоторые хорошие новости об интеграции Mapnik-.Net:

"Еще одна вещь, которая поможет разработчикам Windows, - это способ использования Mapnik с .Net-языков. Хотя полная .Net-обложка - это слишком много работы, помимо всех других проблем, надеюсь, я смогу сделать полноценный старт и открыть дверь для .Net разработчикам использовать Mapnik в своих приложениях.

Источник: Mapnik homepage http://mapnik.org/news/2011/jun/09/gsoc_2011_windows_build_system_introduction/

Ответ 3

NET-Mapnik

Возможно, вы захотите попробовать. Его довольно недавний и имеет простой пример с вариантами создания векторных плит.
https://github.com/kernelsanders/NET-Mapnik

Ответ 4

Итак, наконец, я взломал его. Нехорошее решение, но оно работает как минимум. В двух словах она работает следующим образом:

  • разработан python script, который принимает параметры в качестве аргументов командной строки. (используя python api mapnik)
  • вызов этого python script с помощью кода оболочки fom c ​​# (процесс)
  • После создания изображения карты я покажу его в SharpMap в качестве фонового слоя

В случае обновления карты (масштабирование, панорамирование) я восстанавливаю "слой карты mapnik". У меня также есть какой-то кеш, в котором я могу хранить сгенерированные карты, поэтому я могу делать трюки, используя ранее созданные изображения карты или предварительно сгенерировать их (например, создавать карты для следующего уровня масштабирования, когда пользователь использует инструмент масштабирования). Я также использую некоторые асинхронные вызовы, чтобы сделать это, поэтому я могу создавать 1-3 картографических изображения паралельно.

Слабой частью этого решения является связь между модулями python и С#. Я не мог найти лучше аргументов командной строки + shell.

Мое решение работает, mapnik быстр, может размножать мои карты менее секунды.

Если у вас есть какие-либо советы по обмену сообщениями .net - python (нет, он не подходит для manik api), напишите его здесь. спасибо.

Ответ 5

Вы знаете о проекте TAO?
Это проект .Net, который использует неуправляемую библиотеку opengle для .Net Managed Form, вызывая DllIMport() в С#.

Вы должны сделать это для Mapnik, simaliar к TAOFramework.net