Ich google einige Wochen herum, aber ich habe einige Schwierigkeiten herauszufinden, wo ich mit meinem Projekt beginnen soll und welcher Teil der verfügbaren Geo-Stapel für meine Bedürfnisse obligatorisch ist.
Ich habe einen starken Java-Hintergrund, ein gewisses Interesse für Python und bin völlig offen für das Erlernen neuer Technologien.
Als Hobby und weil es eng mit meinem Job verbunden ist, plane ich, ein strategisches Web-MMO-Kriegsspiel zu entwickeln, das stark auf interaktiven Karten basiert (im Grunde genommen, um die taktische Situation anzuzeigen und Einheiten Befehle zu erteilen).
Folgendes habe ich mir überlegt:
- Geoserver zur Bereitstellung von Karten und Layern.
- PostGIS zum Speichern von Geodaten.
- GeoExt zur Anzeige in einem Browser
- Apache Click als Java-Anwendungsserver (Kampfauflösung, Einheitenverwaltung)
Ich habe es geschafft, einen GeoServer bereitzustellen (Krieg in Tomcat, einfacher ist schwierig). Ich habe es geschafft, PostGreSQL zu installieren. Ich habe einige Tutorials über GeoExt ausgeführt. Ich muss Javascript ein wenig erleben. Ich habe mit Apache Click gespielt, um Seiten und Formulare bereitzustellen.
Hier ist der Fluss, an den ich gedacht habe:
- GeoServer liefert die Kartenhintergründe und Layer, die aus PostGIS-Daten für statische Objekte (Städte, Siegpunkte, Gebiete, ...) erstellt wurden.
- Apache Click generiert HTML + GeoExt-Seiten im Client-Browser.
- Apache Click sendet CRUD-Befehle als Antwort auf die Aktion des Benutzers an PostGIS.
- [etwas] aktualisiert regelmäßig PostGIS (Bewegungen, Kampfauflösung, Verwaltung der Einheitenmerkmale ...)
- Apache Click generiert dynamisch KML-Dateien, um den Browser (KML NetworkLink?) Für Einheiten, die mit Symbolen, Zonen (Reichweite, Erkennung ...) angezeigt werden, live zu aktualisieren ...
Und jetzt der fehlende Ziegelstein in meiner kleinen Wand:
- Wie kann ich eine "See / Land" -Schicht implementieren? Zum Beispiel, um eine an Land vorbeifahrende Schiffsbewegung ungültig zu machen? GeoServer-Schicht? In PostGIS definierte Zonen?
- Ist der folgende Ablauf reaktiv genug, um die Karte nach einer Benutzeraktion zu aktualisieren: HTML / GeoExt-Ereignis -> Apache Click-Prozess -> PostGIS-Update -> GeoServer-Layer-Update -> HTML / GeoExt-Anzeige
Der Hauptpunkt ist: Wo sind die Daten, wenn ich sie zur Berechnung und Aktualisierung verwenden möchte? GeoServer statische Schicht oder PostGIS-Tabellen?
Antworten:
Um die Frage zu beantworten, wie ich eine Schicht "Meer / Land" implementieren kann.
Sie können Küstenlinie und Meeresschicht von der kürzlich veröffentlichten Nature Earth v2 erhalten.
Es mag für Ihre Bedürfnisse zu genau sein, aber mit einigen Verallgemeinerungen können Sie dies in Postgis laden und als Meer oder Land definieren. Dann kann Ihre Schiffsbewegung enthalten sein (http://www.postgis.org/docs/ST_Contains.html) und umgekehrt mit Panzerbewegung. Luft wäre ein anderer Weg und komplexer, da Sie den aktuellen Standort kennen und einen nächstgelegenen Landflugplatz oder Flugzeugträger zum Auftanken ermitteln müssten (es sei denn, das Auftanken von Luft zu Luft ist zulässig.)
Viel Glück bei der Entwicklung des Spiels.
http://www.naturalearthdata.com/blog/miscellaneous/natural-earth-v2-0-0-release-notes/
Download-Bereich http://www.naturalearthdata.com/downloads/
quelle
Sie würden das Post-GIS wahrscheinlich durch Fortschrittsaufrufe von Ihrem Server aktualisieren. Zum einen ist das gesamte geografische Material nicht erforderlich und führt zu einer großen Kompliziertheit, und es wäre selbst für einen Benutzer sehr verzögert und prozessorintensiv. Sie können ein Land- und Meerepolygon innerhalb einer Ebene haben und beispielsweise eine + 1-Spalte in der Tabelle für Seereihen und eine -1-Spalte für Land hinzufügen. Wenn der von einem Standortereignis zurückgegebene Lat Lon ein Plus oder Minus wäre, würde dies eine Regel auslösen, die den Umzug für See- oder Landeinheiten ungültig macht. Sie können auch ein digitales Höhenmodell mit z-Ebene als Plus oder Minus verwenden. Spiele haben normalerweise Terrains, aber das bedeutet nicht, dass sie mit GIS erstellt wurden! Ich würde untersuchen, wie eine beliebte Spiel-Engine mit Terrains umgeht und wie Entwickler diese Terrains erstellen. Wählen Sie Ihr Lieblings-Open-Source-Spiel. In meinem Fall ist es BZFlag; )
quelle