Estoy buscando en Google durante algunas semanas, pero tengo algunas dificultades para determinar dónde comenzar mi proyecto y qué parte de las pilas Geo disponibles son obligatorias para mis necesidades.
Tengo una sólida experiencia en Java, algo de interés por Python y totalmente abierto para aprender algunas nuevas tecnologías.
Como pasatiempo y debido a que está estrechamente relacionado con mi trabajo, planeo desarrollar un juego de guerra estratégico web MMO basado en gran medida en mapas interactivos (básicamente para mostrar la situación táctica y dar órdenes a las unidades).
Esto es lo que estaba pensando:
- Geoservidor para servir mapas y capas.
- PostGIS para almacenar geodatas.
- GeoExt para mostrar en un navegador
- Apache Click como servidor de aplicaciones Java (resolución de combate, gestión de unidades)
Logré implementar un GeoServer (guerra en tomcat, más fácil es difícil) Logré instalar PostGreSQL Ejecuto algunos tutoriales sobre GeoExt. Necesito experimentar Javascript un poco. Jugué con Apache Click para servir páginas y formularios.
Aquí está el flujo en el que estaba pensando:
- GeoServer sirve los fondos del mapa y las capas construidas a partir de datos PostGIS para objetos estáticos (ciudades, puntos de victoria, territorios, ...)
- Apache Click genera páginas HTML + GeoExt en el navegador del cliente.
- Apache Click envía comandos CRUD a PostGIS en respuesta a la acción del usuario.
- [algo] se actualiza regularmente PostGIS (movimientos, resolución de combate, gestión de características de la unidad ...)
- Apache Click genera dinámicamente archivos KML para actualizar en vivo el navegador (KML NetworkLink?) Para unidades que se muestran con iconos, zonas (rango, detección ...) ...
Y ahora, el ladrillo perdido en mi pequeña pared:
- ¿Cómo puedo implementar una capa "mar / tierra"? Por ejemplo, para invalidar un movimiento de un barco que pasa por tierra? Capa GeoServer? ¿Zonas definidas en PostGIS?
- ¿Es el siguiente flujo lo suficientemente reactivo para actualizar el mapa después de una acción del usuario: evento HTML / GeoExt -> proceso de Apache Click -> actualización PostGIS -> actualización de la capa GeoServer -> visualización HTML / GeoExt
El punto principal es: ¿dónde están los datos si quiero usarlos para el cálculo y la actualización? Capa estática GeoServer o tablas PostGIS?
Respuestas:
Para responder a la pregunta ¿Cómo puedo implementar una capa "mar / tierra"?
Puede obtener la costa y la capa marina del reciente Nature Earth v2.
Puede ser demasiado preciso para sus necesidades, pero con un poco de generalización podrá cargar esto en postgis y definirlo como mar o tierra. Entonces el movimiento de tu nave puede estar contenido (http://www.postgis.org/docs/ST_Contains.html) y viceversa con el movimiento del tanque. El aire sería un camino diferente y más complejo, ya que necesitaría conocer la ubicación actual y trabajar en un aeródromo terrestre o portaaviones más cercano para repostar (a menos que se permita el reabastecimiento de combustible aire-aire ...)
Buena suerte con el desarrollo del juego.
http://www.naturalearthdata.com/blog/miscellaneous/natural-earth-v2-0-0-release-notes/
Área de descarga http://www.naturalearthdata.com/downloads/
fuente
Es probable que actualice el mensaje gis a través de las llamadas de su servidor. Por un lado, todo el material de geografía no es necesario e introduce mucha complejidad y sería muy lento e intensivo en el procesamiento incluso para un solo usuario. Podría tener un polígono terrestre y marino dentro de una capa y agregar, por ejemplo, una columna +1 en la tabla para filas marítimas y una columna -1 para tierra. Si el último regreso de un evento de ubicación fue un más o menos, se activaría una regla que invalidaría el movimiento para la unidad marítima o terrestre. También podría usar un modelo de elevación digital con nivel z como más o menos. ¡Los juegos comúnmente tienen terrenos, pero eso no significa que se construyan usando SIG! Estudiaría cómo un popular motor de juegos maneja terrenos y cómo los desarrolladores crean esos terrenos, elija su juego de código abierto favorito. En mi caso es BZFlag; )
fuente