Использование 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