Java-эквивалент OpenLayers [закрыто]
Вопрос
Я ищу библиотеку Java для отображения данных карты из различных источников, включая шейп-файл, WMS, WFS, Google Maps, возможно, ArcIMS и т. д.Кажется, что OpenLayers — это самое близкое к тому, что мне нужно, за исключением того, что это библиотека JavaScript, и я пишу приложение Swing.
GDAL выглядит многообещающе, но, насколько я могу судить, привязок к Java не будет до «когда-нибудь» в будущем.
Чтобы внести ясность: я ищу единый API Java, который я могу использовать для отображения карт с нескольких картографических серверов/источников.
Кто-нибудь знает, существует ли что-нибудь подобное, и если нет, то куда идти дальше?Должен ли я создавать этот API поверх GeoTools?Или...
Решение
GeoTools — хороший выбор для этого.Карты Google Условия использования запретите доступ к плиткам Google Maps, кроме как через API Google Maps (JavaScript), поэтому маловероятно, что вы найдете свободно доступную кодовую базу для доступа к ним в приложении Java.Подобные ограничения, вероятно, применимы и к другим коммерческим слоям.
Другие советы
Это тот случай, когда у вас есть большой выбор.GeoTools действительно является библиотекой низкого уровня и отличным выбором для практической работы.Недавно мы начали использовать Swing в качестве примера кода для создания учебных пособий. более наглядный.Тем не менее, они представляют собой только учебный код и не представляют собой многопоточную систему, такую как uDig.
Если вы ищете приложения Swing для начала, есть семейство Jump (к сожалению, разбросанное по закрытому процессу разработки — OpenJump представляет собой набор различных вилок), gvSig, имеющее отличную финансовую поддержку в Span, и так далее.
Вы также можете взглянуть на библиотечную часть проекта Degree (который, насколько я помню, также создал настольное приложение?).
Я также рекомендую взглянуть на некоторые программы просмотра мозаичных карт, созданные на основе наборов данных Nasa World Wind и Open Street Map.Они будут больше похожи на опыт OpenLayers.
Отказ от ответственности Я вхожу в руководящий комитет GeoTools и uDig.
uDig, вероятно, отлично удовлетворит ваши потребности, если вы сможете работать в рамках RCP.У меня нет опыта работы с uDig или NASA World Wind, но если вам нужно поместить функции карты в существующее приложение, Java SDK НАСА World Wind это еще один вариант.Он расширяем и поддерживает отраслевые стандарты для геопространственных данных.У них есть информативная вики здесь.Я впервые увидел NASA World Wind на JavaOne 2007, и не похоже, что Java SDK действительно стал популярным, и не похоже, что версия .Net видит много новых выпусков, но она может удовлетворить ваши потребности, если они являются базовыми. .
OpenMap якобы неплохо.
Предупреждение:«открытая» лицензия, которую они используют, обдуманный несвободный от Fedora и GNU.
я использовал MapXtreme для Java, он был довольно хорош и поддерживал несколько форматов.Это недешево, но доставляет.
Он ориентирован на рендеринг векторных форматов данных.
Вы можете использовать его как на стороне сервера, так и на стороне клиента.
Попробуйте Mapscript для Java www.mapserver.org
КУ
Посмотрите на UDig
Он основан на eclipse RCP, работает с Geotools и может отображать большинство типов пространственных данных.
это открытый исходный код и, похоже, в нем довольно много активности.
ArcGIS Engine Java сделаю то, что вам нужно.Он интегрируется в полностью интегрированную ГИС-платформу.Существуют инструменты для создания карт картографического качества, их публикации, размещения на хостинге или создания пользовательских приложений.
Он не поддерживает все упомянутые вами форматы, но мне удалось отобразить веб-карты с помощью скромные карты для Обработка (Найди это здесь).Обрабатывающий PApplet может быть встроен в графический интерфейс Swing, как описано. здесь.
Вы можете использовать GoogleMaps, если можете встроить веб-браузер в свое приложение Java Swing, попробуйте JDIC или DJ Project.Также см Есть ли способ встроить браузер в Java? Я работал с таким решением на С# - встраивал IE.Однако вам необходимо встроить хороший веб-браузер, обычно какой-либо собственный веб-браузер, и это ограничивает ваше такое решение.