24 votos

Orden de los vértices de los polígonos en el SIG general: en el sentido de las agujas del reloj o en sentido contrario

Hace dos días hice una pregunta sobre el orden de almacenamiento interno de los vértices de un polígono en los shapefiles de ESRI. Esa pregunta fue respondida ( ¿Los polígonos se almacenan en el sentido de las agujas del reloj o en sentido contrario en un shapefile? ) y también se contestó en un antiguo post ( Creación de polígonos (rotación en el sentido de las agujas del reloj o no) )

Pero ahora mi pregunta es más general, y no sé si tiene una respuesta única.

¿El orden de las agujas del reloj es sólo para los shapefiles de ESRI o para los formatos generales de SIG?

¿Y qué hay de la representación interna para un software GIS?

Por ejemplo, si uso QGIS y leo un *.shp que contiene polígonos, supongo que la representación interna del límite exterior es en el sentido de las agujas del reloj como en el shapefile original, pero ¿qué pasa con todos los formatos de archivo soportados por QGIS?

¿Y para ArcGIS?

Y en el caso de que exista un formato de archivo con polígonos almacenados en sentido contrario a las agujas del reloj, si estos archivos se cargan en QGIS, ArcGIS, etc., ¿se cambia la orientación internamente, de manera que si leo los datos usando PyQGIS, por ejemplo, los polígonos se ordenan en el sentido de las agujas del reloj?

Mi propósito es escribir un plugin para QGIS, pero la fuente de datos puede ser ESRI shapefiles u otros formatos. Como necesito comprobar los ángulos entre los lados consecutivos de los polígonos usando sus azimuts necesito saber si el orden es en el sentido de las agujas del reloj. Una solución es calcular el área de cada polígono y, si no recuerdo mal, si es positiva el orden es horario y si es negativa el orden es antihorario.

El cálculo del área no es una tarea intensiva, por lo que no ralentizará tanto mi plugin.

Pero en el caso especial de QGIS, ¿alguien sabe si almacena los polígonos en el sentido de las agujas del reloj o en sentido contrario, independientemente del orden en la fuente original?

A estas alturas estoy trabajando con shapefiles ESRI y las coordenadas en layer.getFeatures().geometry().asPolygon() se almacenan en el sentido de las agujas del reloj para el borde exterior y en sentido contrario para los agujeros, es decir, como en el *.shp original.

0 votos

Depende de cómo se almacenen los datos. Oracle está en contra de las agujas del reloj gis.stackexchange.com/questions/20817/

0 votos

@Mapperz, su enlace lleva a docs.oracle.com/cd/B10501_01/appdev.920/a96630/… que dice claramente Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.) lo que significa que Oráculo está en sentido contrario a las agujas del reloj.

35voto

Ronnie Overby Puntos 246

Las direcciones de los anillos (límites) son necesarias para evitar ambigüedades en los sistemas de coordenadas geográficas que cubren una superficie finita, ya que el límite definiría dos áreas, una a la izquierda y otra a la derecha del límite a lo largo de su dirección. Determinar cuál de esas dos áreas es la mayor es posible, pero sigue dejando la ambigüedad.

A continuación, un resumen de las direcciones de los anillos exteriores de los polígonos en varios formatos según sus especificaciones:

Illustration of winding order of Shapefiles and Simple Features

  • Acceso sencillo a las funciones (ISO 19125-1) también se utiliza en WKT/GML/KML y en varias implementaciones de SQL:
    • anillos exteriores: en sentido contrario a las agujas del reloj
    • anillos interiores (agujeros): sentido de las agujas del reloj.

Un polígono es una superficie plana definida por 1 límite exterior y 0 o más límites interiores. Cada límite interior define un agujero en el polígono. [...]

El límite exterior LinearRing define la "parte superior" de la superficie, que es el lado de la superficie desde el que el exterior parece atravesar la frontera en un en sentido contrario a las agujas del reloj dirección. El interior Los LinearRings tendrán la orientación opuesta y aparecerán como en el sentido de las agujas del reloj cuando se ve desde la "parte superior"... Especificaciones de acceso a las funciones simples

En la mayoría de las implementaciones, el orden de los anillos en un POLIGONO es importante (a diferencia de los shapefiles)

Para un polígono con agujeros, su primer subelemento es su anillo exterior, su segundo subelemento es su primer anillo interior, su tercer subelemento es su segundo anillo interior, y así sucesivamente. Oracle Spatial

Nidos más profundos, también conocidos como isla-en-un-lago-en-una-isla... deben representarse como MultiPolígonos ( véase la figura 2.10 (4) ), ya que sólo puede haber un borde exterior y no se definen nidos más profundos que los anillos interiores.

  • ESRI Shapefiles/ SHP :
    • anillos exteriores: en el sentido de las agujas del reloj
    • anillos interiores: en sentido contrario a las agujas del reloj

Un polígono está formado por uno o varios anillos. Un anillo es una secuencia conectada de cuatro o más puntos que forman un bucle cerrado y no autointerseccionado. Un polígono puede contener múltiples anillos exteriores . El orden de los vértices o la orientación de un anillo indica qué lado del anillo es el interior del polígono. La vecindad a la derecha de un observador que recorre el anillo en el orden de los vértices es la vecindad interior del polígono. Los vértices de los anillos que definen agujeros en polígonos están en un en sentido contrario a las agujas del reloj dirección. Por lo tanto, los vértices de un polígono anillado están siempre en en el sentido de las agujas del reloj orden. [...]

El orden de los anillos en la matriz de puntos no es significativo. Libro blanco de ESRI

Dado que se permiten múltiples límites exteriores, las configuraciones de isla en un lago en una isla son posibles con esta definición de polígono. Topológicamente, la isla en un lago sería simplemente otro anillo exterior en el sentido de las agujas del reloj. En efecto, esto hace que un Polígono ESRI Shapefile una característica simple MultiPolygon

Si no ordenas los puntos correctamente sólo tendrás polígonos superpuestos. pyshp

NOTA: El original Especificaciones de GeoJSON 2008 no se ha ejecutado ninguna orden de liquidación

  • orden de bobinado: el anillo exterior es en sentido contrario a las agujas del reloj (regla de la derecha)
    • los anillos interiores están en el sentido de las agujas del reloj
  • El orden de los anillos es importante:

Para los polígonos con múltiples anillos, el primero debe ser el anillo exterior y los demás deben ser anillos interiores o agujeros. Especificación GeoJSON

  • TopoJSON : fuerza los anillos exteriores en el sentido de las agujas del reloj por defecto

Illustration of winding order of Shapefiles and Simple Features

Excursión:

El razonamiento matemático de por qué se alternan los órdenes de enrollamiento de los anillos anidados es, que el cálculo del área con el fórmula de los cordones ( explicación visual ) calcula las áreas con signo en función de la dirección del anillo.

En general, los anillos anidados (límites interiores) se consideran agujeros y tienen la dirección alternativa del anillo exterior. Su valor de área con signo es negativo. Mientras que los anillos exteriores son positivos. El área total de todas las características del anillo es la suma de todas las áreas con signo.

Tal y como lo ha implementado ESRI, véase esta entrada de la Base de Conocimientos: ¿Qué algoritmo utiliza ArcGIS para determinar el área de un polígono?

Mnemotecnia propuesta

Los extremos abiertos de las letras se interpretan como flechas:

  • S hapefile: S
  • F simple e atur e s: e (enrollado hacia fuera en sentido de la marcha)
  • GeoJSON: G (el tallo de G es una flecha)

28voto

Patrick Puntos 20392

En la especificación OGC, que puede descargarse [aquí],( http://www.opengeospatial.org/standards/sfs ) afirman:

"La rotación de los polígonos no está definida por esta norma; la rotación real de los polígonos puede ser en el sentido de las agujas del reloj o en sentido contrario".

En los documentos de Oracle En el caso de los anillos, se indica claramente que los límites exteriores del anillo están orientados en el sentido contrario a las agujas del reloj, y los límites interiores del anillo, en el sentido de las agujas del reloj. Asimismo, en SQL Server Spatial, el tipo de datos geográficos sigue una regla en sentido contrario a las agujas del reloj para el anillo exterior, y en sentido de las agujas del reloj para los anillos interiores -- ver esto Blog de MicroSoft para más detalles. Postgis parece permitirlo de cualquier manera, para las geometrías, y tiene funciones que forzarán la geometría de un polígono a seguir una regla de mano derecha o izquierda, ver ST_ForceRHR y ForceLHR . El STC/Geos parece haber seguido la regla de la derecha, es decir, una orientación del anillo exterior en el sentido de las agujas del reloj, por lo que todo es un poco confuso, en realidad.

En general, tiene sentido que un tipo de datos de geografía fuerce la orientación, ya que de otro modo sería imposible saber si un polígono pequeño es sólo eso o el anillo interior de un polígono de todo el mundo. Con un tipo de datos de geometría en una superficie plana, esta confusión no puede surgir, ya que el anillo exterior y el anillo interior siguen un orden, y si sólo hay un anillo, será envolvente (sin importar la orientación), a diferencia de lo que ocurre en un globo terráqueo, que se envuelve.


De un comentario de @mxfh: El Acceso a Características Simples de OGC (ISO 19125-1) especifica una dirección contraria a las agujas del reloj para los anillos exteriores a partir de la versión 1.2.1 documento [OGC 06-103r4] 6.1.11.1/página 26 de opengeospatial.org/standards/sfa. El cambio se introdujo entre la versión 1.1.0 y la 1.2.0, a más tardar en 2006. La nota a pie de página que citas no se ha actualizado desde 2005

0 votos

Buena respuesta, John. Sin embargo, no estoy seguro de que el uso de un ordenamiento de los nodos para identificar los anillos interiores frente a los exteriores sea la única forma en que un formato de datos vectoriales podría conseguirlo. Sin embargo, estoy de acuerdo contigo en que es necesario establecer algún mecanismo. Con GeoJSON, por ejemplo, la primera lista de nodos se designa como el exterior y todas las listas posteriores son huecos interiores. Eso funciona con la misma eficacia (si no más).

0 votos

Sí, esto también es cierto en el caso de WKT para las geometrías. En el caso de las geografías es claramente más importante.

0 votos

Eso es muy cierto ;)

5voto

No sé si alguien podrá dar una respuesta definitiva a tu pregunta, ya que cada formato de archivo vectorial es diferente y cada SIG, en términos de cómo maneja internamente estos datos, también será diferente. Pero te puedo decir con certeza que el ordenamiento en el sentido de las agujas del reloj no es sólo para los Shapefiles de ESRI. Hay otros formatos que utilizan una designación similar de ordenación en el sentido de las agujas del reloj para los anillos externos y en sentido contrario para los polígonos de agujeros interiores. Por ejemplo, la estructura de polígonos vectoriales del STC utiliza un formato similar. De hecho, se indica aquí que históricamente iba a ser similar al enfoque de ESRI. También puedo decir definitivamente que no, que no todos los formatos tienen este requisito. Por ejemplo, el Especificaciones del formato GeoJSON no exigen el orden de los vértices en su formato de polígono. El sitio web Especificación KML en realidad, el estado:

Los polígonos for deben especificarse en sentido contrario a las agujas del reloj en sentido contrario a las agujas del reloj. Los polígonos siguen la "regla de la mano derecha", que establece que si se los dedos de la mano derecha en la dirección en la que se especifican las coordenadas, el pulgar apunta en la dirección general de la normal geométrica del polígono. de la normal geométrica del polígono.

Así que toda la gama de opciones existe y se aplica ahí fuera. ¡Es un mundo salvaje!

1 votos

Obsérvese que la "regla de la mano derecha" de KML es lo que convencionalmente se ha llamado "regla de la mano izquierda" (cuando se recorre el perímetro con los brazos extendidos, la mano izquierda estará dentro de la figura). Esri tiene múltiples enfoques, ya que los shapefiles son el único formato que utiliza la regla de la mano derecha (las geodatabases empresariales utilizan internamente la regla de la mano izquierda, pero la API "C" le permitirá hacer peticiones en cualquiera de los dos órdenes). GML sólo requiere que los anillos interiores estén en orden inverso a los exteriores, y que el primer anillo sea exterior.

0 votos

@Vince No lo sabía. ¿No es una locura? Gracias por hacérmelo saber. Creo que lo que más me gusta es el enfoque de GML; no importa el orden mientras sean opuestos. Eso tiene mucho sentido.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X