ES:Relation:multipolygon

From OpenStreetMap Wiki
Jump to navigation Jump to search
Public-images-osm logo.svg multipolygon
Multipolygon Illustration 6.svg
Descripción
Esta relación se usa para representar áreas con agujeros. Show/edit corresponding data item.
Grupo: propiedades
Miembros

  • vía - outer
  • vía - inner
Estado: de facto

broom

Help (89606) - The Noun Project.svg

Las relaciones del tipo multipolígono se usan para representar áreas de todo tipo. La relación multipolígono es el tipo de datos que usa OpenStreetMap para las áreas. Por facilidad a la hora de dibujar, las áreas también se pueden crear con una vía circular etiquetada de forma que se indique que es un área y no una vía en forma de círculo (por ejemplo, una vía circular con la etiqueta landuse=forest será interpretada como un área, pero no lo será si lleva la etiqueta junction=roundabout). Sin embargo, estos atajos sólo funcionan para áreas simples cuyo perímetro consista en una sola vía y en la que no haya huecos.

Cualquier área que sea algo más compleja (p. ej., porque su contorno conste de varias vías unidas, o porque consista en varias partes separadas, o porque tenga huecos) requiere una relación multipolígono.

En resumen, una relación multipolígono puede constar de cualquier número de vías en función outer (el contorno) y cualquier número de vías en la función inner (los huecos), y todas deben formar, de algún modo, líneas cerradas que constituyan la forma del multipolígono.

Etiquetas

Clave Valor Explicación
type multipolygon Indica a las aplicaciones que deben aplicar a los miembros de la relación reglas para crear áreas. Es recomendable usar también type=multipolygon (y no type=boundary) para las relaciones boundary si quieres que las aplicaciones usen las citadas reglas (i.e., conectar outers para formar anillos, excluir enclaves, etc.) Una relación boundary se reconoce fácilmente por su etiqueta boundary=*; no es necesario usar type=boundary.

Miembros

Vía o nodo Función ¿Recurrencia? Explicación
vía outer uno o más Las vías que forman el o los límites exteriores del área.
vía inner ninguno o más Las vías que forman el o los límites interiores del área.
vía ninguno Si no se especifica una función, el software que procese la relación tendrá que adivinarlo (ver Uso más abajo)

Uso

Algunas directrices para usar las relaciones multipolígono:

  • Las etiquetas que describen el multipolígono (i.e., landuse=forest) deben ir en la relación. La/s vía/s en la función "outer" deben dejarse sin etiquetar, a menos que describan algo por sí mismas. Por ejemplo, un bosque podría estar delimitado por cuatro carreteras, en cuyo caso, éstas deberían llevar la etiqueta "highway", lo que no impide que sean usadas como miembros de la función "outer" de la relación que define el bosque.
  • Si hay una vía cerrada que constituye el anillo exterior y no describe nada por sí misma, también podrías poner las etiquetas en ese anillo exterior y no en la relación. Si, por el contrario, hay más de una vía en la función "outer" (ver "Multipolígonos Avanzados" más abajo), hacerlo así no tiene sentido. Por lo tanto, para lograr una mayor uniformidad, se sugiere que se pongan siempre las etiquetas del multipolígono en la relación.
  • Si la vía de la función "inner" representa algo por sí misma, (i.e., un bosque con lago en medio), entonces esa vía debe etiquetarse como tal.
  • De otro modo, la vía de la función "inner" debería dejarse sin etiquetar.
  • La dirección de las vías no tiene importancia.
  • El orden de los miembros de la relación no tiene importancia.
  • Si no se especifica ningún función el software que procese la relación tendrá que adivinarlo. En la gran mayoría de los casos no existirá ambigüedad y la relación será procesada correctamente aunque no tenga los funciones "inner" y "outer"; pero ten en cuenta que otras personas pueden querer editar esos datos y les sería de gran ayuda saber lo que consideraste que eran las vías "outer" e "inner". Por eso, es recomendable usar las funciones.
  • Generalmente, las relaciones multipolígono se pueden usar para crear multipolígonos que cumplan el OGC Simple Feature estandard (http://www.opengeospatial.org/standards/sfs). Cualquier cosa que no sea un multipolígono válido de acuerdo con ese estándar (i.e., polígonos con anillos que se crucen) debería considerarse una relación de multipolígono no válida, excepto en el caso de anillos interiores que estén en contacto (ver más abajo).


Ejemplos

Aquí tenemos algunos ejemplos de polígonos complejos que se pueden crear con la relación multipolígono.

Un anillo interior y otro exterior

La vieja y muy usada relación multipolígono sólo permitía un anillo exterior y cualquier número de anillos interiores; los anillos debían consistir en una única vía cerrada. Por supuesto, este tipo de polígono (que no es "multipolígono", sino, más bien, una "multivía") todavía está soportado, pero las reglas se han relajado para que sea simplemente un caso especial de la relación multipolígono.
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
</relation>
fig. 1

Un anillo exterior y dos interiores

<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
</relation>
fig. 2

Múltiples vías formando un anillo

El esquema de multipolígonos avanzados permite que cualquier anillo, interior o exterior, conste de más de una vía. Esto es útil para multipolígonos que abarquen áreas muy grandes, que no sería práctico rodear con una sola vía:
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="outer" />
  <member type="way" id="3" role="inner" />
</relation>
fig. 3

Más de un anillo exterior (anillos separados)

A diferencia de lo que ocurría antes, las relaciones de multipolígonos avanzados también permiten cualquier número de anillos exteriores (lo que constituye un verdadero multipolígono):
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="outer" />
</relation>
fig. 4

Más de un anillo exterior (anillos separados) y múltiples vías formando un anillo

La capacidad de formar un anillo a partir de vías individuales no se limita a los anillos exteriores, sino que puede usarse también con los interiores:
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
  <member type="way" id="4" role="outer" />
  <member type="way" id="5" role="inner" />
</relation>
fig. 5

Combinaciones complejas de todas las características avanzadas

Este ejemplo muestra una combinación compleja de todas las características avanzadas; una figura con tres anillos exteriores, dos de los cuales tienen uno o más anillos interiores, constando varios de ellos de más de una vía.
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="outer" />
  <member type="way" id="3" role="outer" />
  <member type="way" id="4" role="outer" />
  <member type="way" id="5" role="inner" />
  <member type="way" id="6" role="inner" />
  <member type="way" id="7" role="inner" />
  <member type="way" id="8" role="inner" />
  <member type="way" id="9" role="inner" />
  <member type="way" id="10" role="inner" />
  <member type="way" id="11" role="inner" />
  <member type="way" id="12" role="outer" />
  <member type="way" id="13" role="outer" />
  <member type="way" id="14" role="outer" />
  <member type="way" id="15" role="outer" />
  <member type="way" id="16" role="inner" />
  <member type="way" id="17" role="inner" />
  <member type="way" id="18" role="inner" />
  <member type="way" id="19" role="inner" />
  <member type="way" id="20" role="outer" />
</relation>
fig. 6

Islas dentro de un hueco

De esta posibilidad de tener varios anillos exteriores, se desprende que se puedan modelar fácilmente "islas" dentro de un hueco:
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="outer" />
</relation>

Antes, una construcción como ésta hubiera requerido diferentes relaciones multipolígono, una con la vía 1 en la función de "outer" y la 2 en la de "inner", así como otra con la vía 2 como "outer" y la 3 como "inner". Este proceso aún se recomienda en el caso de que la "isla" del medio sea una cosa diferente del área delimitada por las vías 1 y 2; pero, si la "isla" es lo mismo que la referida área, puede dejarse como un "hueco" dentro del "hueco" formado por la vía 2.

fig. 7

Anillos interiores en contacto

Algunas personas usan la actual relación "multipolígono" para combinar anillos interiores o exteriores que están en contacto:
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
</relation>

Una implementación de multipolígonos avanzados debería tratar de renderizarlos como si los anillos en contacto fuesen, de hecho, un solo anillo. Este es el único caso en el que OSM se aparta del estándar OGC Simple Features. En Simple Features, los anillos interiores en contacto no están soportados, porque son innecesarios. En OpenStreetMap, a veces tienen sentido si se etiquetan individualmente. Por ejemplo, si tenemos un bosque con un claro y éste está ocupado a medias por un lago y una granja, tenemos dos "agujeros" en el bosque, uno etiquetado como natural=water y otro, como landuse=farmland. Este sistema es muy conveniente, porque crear un solo hueco en el bosque y, después, polígonos individuales para el lago y la granja, supondría más trabajo para quienes dibujan.

fig. 8

Huecos en los huecos de los huecos...

Es posible tener huecos en los huecos de un multipolígono (imagina: Un claro en un bosque y una zona de árboles en medio del claro).
Ejemplo pendiente.

Esto se logra, de acuerdo con las especificaciones del OGC Simple Features, creando, alternativamente, anillos interiores y exteriores; en nuestro ejemplo, el límite externo del bosque y la zona arbolada serían "outer", mientras que el claro sería "inner". Esto puede repetirse indefinidamente, pero se sugiere, en beneficio del resto de contribuyentes, que se mantenga el nivel de complejidad lo más bajo posible.

Además, los huecos en los huecos de los huecos pueden no estar soportados por todos los editores y/o renderizadores.

Ilustración pendiente.

Ejemplos

Para ejemplos ver este artículo: ES:Ejemplos de multipolígono

Etiquetado

  • Se recomienda aplicar todas las etiquetas que describen el área a la relación, no a las vías. En muchos casos esto puede tener como resultado vías sin ninguna etiqueta.
  • Implementación para la compatibilidad:
    • El estilo del dibujo se toma del etiquetado de la propia relación.
    • Si la relación no está etiquetada, se usa el estilo de la vía exterior.
    • Si los estilos exteriores no se corresponden o, si no existen, se considera un error.
    • El etiquetado interior conduce al estilo del dibujo interior. Si el estilo del etiquetado interior es igual al del exterior (un viejo método), el estilo interior debería tratarse como si estuviese vacío.

Etiquetado detallado

El etiquetado de esta relación multipolígono puede hacerse de varias formas. Aquí tenemos una lista de casos, problemas y posibles soluciones:

  • Hay más de una vía outer:
    La relación tiene etiquetas
    Úsalas e ignora las de las vías.
    La relación no tiene etiquetas, pero una o más de las vías outer que la forman tienen un grupo de etiquetas idénticas
    Datos válidos. Cógelas y aplícaselas a todas las vías outer.
    La relación no tiene etiquetas y las vías outer que la forman están etiquetadas de forma diferente
    Esta es una situación problemática con resultados no definidos.
  • Hay más de una vía inner:
    Una vía cerrada (formada por uno o más segmentos) no tiene etiquetas, pero otra sí.
    La que no las tiene se renderiza como un hueco y la que sí las tiene, de acuerdo a ellas.
    Diferentes vías cerradas con etiquetas diferentes.
    Cada hueco se renderiza individualmente según sus etiquetas.
    Una vía cerrada (formada por uno o más segmentos) cuyos segmentos tienen etiquetas diferentes.
    Si algún segmento no tiene ninguna, usa las de los otros. Si los segmentos tienen diferentes, no está claro como actuar (como en el caso de las vías"outer").

Renderizado

  • JOSM puede renderizar estos multipolígonos avanzados desde la revisión 1203.
  • Osmarender (T@H) tiene soporte para estos multipolígonos avanzados.
  • La configuración de renderizado de Mapnik en www.openstreetmap.org no los soporta completamente, pero casi.
  • Totalmente soportado por mkgmap desde la revisión 1497
  • Se ha sugerido un Algoritmo para el procesado de los multipolígonos.

Ejemplo tomado de Potlatch

Ejemplo usando Potlatch

En Potlatch las funciones de una relación multipolígono deben ser asignadas a los propios miembros de la relación y no como etiquetas separadas. Estando en el modo de edición, selecciona el miembro de la relación y pon inner o outer en el cajetín que aparece en la misma línea en la que figura la expresión multipolygon.

Guía Paso-a-Paso

En construcción...

Dos polígonos que comparten un lado

Uno de los ejemplos más sencillos de multipolígono: dos polígonos que comparten un lado. En este caso se trata de crear dos edificios unidos. En la siguiente imagen se pueden ver varios ejemplos en la ciudad de Salamanca.

fig.1 Numerosos edificios contiguos (Salamanca)
  1. Creamos el primero de los edificios. NO lo etiquetamos.
    fig.2 Primera captura de pantalla
  2. Cortamos el segmento del polígono que va a compartir con el otro edificio.
    fig.3 Segunda captura de pantalla
  3. Creamos el segundo de los edificios. NO lo etiquetamos.
    fig.4 Tercera captura de pantalla
  4. Creamos una nueva relación para generar el primero de los multipolígonos. Para ello, pulsamos el icono rodeado con la elipse roja; se abrirá la ventana que se ve en la parte inferior derecha de la imagen.
    fig.5 Cuarta captura de pantalla
  5. Seleccionamos los dos segmentos (el compartido y el correspondiente a uno de los edificios) y los añadimos a la relación. Para ello, pulsamos en el icono rodeado con el círculo rojo tras realizar la selección.
    fig.6 Quinta captura de pantalla
  6. Ponemos ambos segmentos de la relación como outer (apartado Función; círculo rojo), y añadimos las etiquetas (elipse azul): type=multipolygon y building=yes. Pulsamos Aceptar.
    fig.7 Sexta captura de pantalla
  7. Seleccionamos el segmento compartido y el correspondiente al otro edificio, y procedemos de la misma manera (pasos 4.º a 6.º) que con el multipolígono anterior. Ya tendremos creados dos multipolígonos que comparten un lado.
    fig.7 Séptima captura de pantalla

Herramientas de ayuda