Estoy haciendo un mapa que contiene información sobre el transporte público: autobuses, tranvías, etc. El mapa tendrá una capa que contiene, por ejemplo, las líneas de tranvía. Cada línea tiene su propio color y está representada por una geometría de cadena de línea.
El problema es que muchas de las líneas tienen partes superpuestas, donde más de una línea de tranvía cubren la misma sección. Para mostrar esto al usuario, prefiero que las líneas se ejecuten paralelas entre sí en lugar de dibujarse una encima de la otra. Por ejemplo, vea cómo Google Maps muestra las líneas de metro de Nueva York.
Sospecho que este es un problema bastante común en la cartografía, pero no sé qué terminología debería buscar.
Estoy usando PostGIS / GeoServer / OpenLayers como mi pila, pero cualquier solución de código abierto sería aceptable.
Respuestas:
Si está interesado en aprender más sobre esta área, el problema se denomina desplazamiento cartográfico y es un aspecto de la generalización cartográfica .
Un par de artículos que discuten el desplazamiento y los enfoques para manejar el problema:
Bader, Matthias. 2001. Métodos de minimización de energía para el desplazamiento de características en la generalización de mapas.
Steiniger, S Tefan S y S Iegfried M Eier. Serpientes: una técnica para suavizar y desplazar líneas en la generalización de mapas: 1-11.
Ware, Mark J y Christopher B Jones. 1998. Resolución de conflictos en la generalización de mapas mediante la mejora iterativa. GeoInformatica 2, no. 4: 383-407 +.
fuente
Este problema es muy típico en la generalización cartográfica. Existen métodos automatizados para eso, pero todavía no hay implementaciones disponibles.
Los métodos basados en " Beams " y " Snakes " dan resultados eficientes para resolver estos conflictos cartográficos de datos de red (ver también las referencias dadas por scw ). Estos son algunos resultados de los algoritmos de vigas en datos de carreteras:
Antes de:
Después:
Vea también este documento y esta presentación que explican cómo hacer esta transformación .
EDITAR: Nunca lo he probado, pero parece que hay algo relacionado con las serpientes en GRASS. Ver aquí .
fuente
No conozco una solución, pero creo que el término que está buscando es "resolución de conflictos", un tema de generalización de mapas. Una búsqueda en Google sobre "conflictos de generalización de mapas" muestra información interesante, pero no sé si hay mucho uso práctico.
fuente
En las implementaciones actuales, a menudo puede encontrar "Offset" o "Dislocation". Usando su pila actual, parece un poco difícil lograr líneas paralelas automáticamente:
Para resumir: la forma más fácil que conozco sería usar UMN Mapserver y el valor de Offset allí. Estilo de ejemplo para su archivo de mapa:
fuente
Si está dibujando capas de líneas que se superponen, tiene varias opciones para permitir que el espectador vea todas las líneas.
No uso GeoServer, pero sé que MapServer tiene la funcionalidad para hacer todas estas cosas. Es probable que GeoServer también lo haga.
fuente