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

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

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

5 ответов

Решение

Я только что опубликовал свои попытки в привязках C#.
Они доступны по адресу: http://sourceforge.net/projects/mapniknet/

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

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

Источник: домашняя страница Mapnik http://mapnik.org/news/2011/jun/09/gsoc_2011_windows_build_system_introduction/

NET-Mapnik

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

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

  • разработал скрипт Python, который принимает параметры в качестве аргументов командной строки. (используя Python API Mapnik)
  • вызовите этот скрипт на языке python с помощью оболочки fom c ​​# code (Process)
  • после создания изображения карты я показываю его в SharpMap в качестве фонового слоя

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

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

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

Если у вас есть какие-либо советы по связи.net - python (НЕТ Ironpython, он не подходит для manik api), пожалуйста, напишите это здесь. Спасибо.

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

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

Другие вопросы по тегам