2009-05-21 9 views
9

Ich bin auf der Suche nach einer Java-Bibliothek zum Anzeigen von Kartendaten aus verschiedenen Quellen, einschließlich Shapefile, WMS, WFS, Google Maps, möglicherweise ArcIMS usw. Offenbar ist OpenLayers das, was ich am meisten möchte, außer es ist eine JavaScript-Bibliothek, und ich schreibe eine Swing-Anwendung.Java-Äquivalent von OpenLayers

GDAL sieht vielversprechend aus, aber soweit ich weiß, wird es bis "irgendwann" in der Zukunft keine Java-Bindungen geben.

Nur um klar zu sein, ich bin auf der Suche nach einer einzelnen Java-API, die ich verwenden kann, um Karten aus einer Reihe von Kartenservern/-quellen anzuzeigen.

Weiß jemand, ob so etwas existiert, und wenn nicht, wohin von hier? Soll ich diese API auf GeoTools aufbauen? Oder ...

+0

Vielleicht habe ich diese Antwort zu früh akzeptiert, da dies meine erste Frage zu SO war? Es scheint mehr Ansichten zu haben, aber keinen Input mehr. – dave4351

Antwort

3

GeoTools ist eine gute Wette dafür. Die Google Maps Terms of Service verbieten den Zugriff auf Google Maps-Kacheln außer über das (JavaScript) Google Maps-API. Daher ist es unwahrscheinlich, dass Sie eine frei verfügbare Codebasis für den Zugriff auf diese in einer Java-Anwendung finden. Ähnliche Einschränkungen gelten wahrscheinlich auch für andere kommerzielle Schichten.

+0

Ich hoffte etwas auf einer höheren Ebene der Abstraktion als Geotools, aber ich werde nur bauen müssen, was ich auf dieser Grundlage brauche. – dave4351

0

Ich habe MapXtreme for Java verwendet, es war ziemlich gut und unterstützte mehrere Formate. Es ist nicht billig, aber es liefert.

Es ist auf das Rendern vektorieller Datenformate ausgerichtet.

Sie können es entweder Server oder Client-Seite verwenden.

0

Try mapscript für java www.mapserver.org

CU

0

einen Blick auf uDig Haben

http://udig.refractions.net/

Es ist auf der Eclipse-basiert RCP mit Geotools arbeitet und kann die meisten Anzeigen Arten von räumlichen Daten.

es Open Source ist und scheint

3

uDig würde ziemlich viel Aktivität zu haben, wahrscheinlich Ihre Bedürfnisse erfüllen nur gut, wenn Sie innerhalb der RCP Rahmen arbeiten können. Ich habe keine Erfahrung mit uDig oder NASA World Wind, aber wenn Sie die Kartenfunktionen in eine bestehende Anwendung setzen müssen, ist NASA's World Wind Java SDK eine andere Option. Es ist erweiterbar und unterstützt Industriestandards für Geodaten. Sie haben ein informatives Wiki here. Ich habe NASA World Wind zum ersten Mal auf JavaOne 2007 gesehen und es sieht nicht so aus, als hätte das Java SDK wirklich abgenommen, und es sieht auch nicht so aus, als ob die .Net-Version viele neue Releases enthält .

0

ArcGIS Engine Java wird tun, was Sie brauchen. Es integriert sich in eine voll integrierte GIS-Plattform. Es gibt Werkzeuge, um kartografische Qualitätskarten zu erstellen, sie zu veröffentlichen, sie zu hosten oder benutzerdefinierte Apps zu erstellen.

4

Dies ist ein Fall, in dem Sie eine große Auswahl haben. GeoTools ist in der Tat eine Low-Level-Bibliothek und eine ausgezeichnete Wahl für einige Hände auf Arbeit. Wir haben vor kurzem begonnen, Swing für unseren Beispielcode zu verwenden, um Tutorials more visual zu machen. Das heißt, sie sind nur Tutorial-Code und stellen kein Multi-Thread-System wie uDig dar.

Wenn Sie nach Swing-Anwendungen suchen, um mit der Form zu beginnen, gibt es die Jump-Familie (leider durch einen geschlossenen Entwicklungsprozess verstreut - OpenJump stellt eine Sammlung der verschiedenen Gabeln dar), gvSig, die ausgezeichnete finanzielle Unterstützung in Span hat und so weiter .

Vielleicht möchten Sie auch die Bibliotheksseite des Deegree-Projekts ansehen (von der ich mich erinnere, dass sie auch eine Desktop-Anwendung erstellt hat?).

Ich empfehle auch, einige der gekachelten Kartenbetrachter zu betrachten, die in den Nasa World Wind- und Open Street Map-Datasets erstellt wurden. Diese werden der Erfahrung von OpenLayers ähnlicher sein.

Haftungsausschluss Ich bin im Lenkungsausschuss für GeoTools und uDig.

1

OpenMap ist angeblich ziemlich gut.

Warnung: die "offene" Lizenz, die sie verwenden, ist considerednon-free von Fedora und GNU.

0

Es behandelt nicht alle Formate, die Sie erwähnen, aber ich war erfolgreich Anzeige Webkarten mit modestmaps für Processing (Finden Sie es here). Ein Verarbeitungs-PApplet kann wie in here erläutert in eine Swing-GUI eingebettet werden.

0

Sie können GoogleMaps verwenden, wenn Sie einen Webbrowser in Ihre Java Swing-Anwendung einbetten können, versuchen Sie es mit JDIC oder DJ Project. Siehe auch Is there a way to embed a browser in Java? Ich habe mit einer solchen Lösung in C# - Einbettung IE gearbeitet. Sie müssen jedoch einen guten Webbrowser einbetten, normalerweise einen nativen Webbrowser, was Ihre Lösung einschränkt.