4 votos

¿Es GML válido si el límite de un polígono se cruza con sí mismo?

Es válido GML si el límite de un polígono se intersecta a sí misma? E. g. Tengo este polígono que consta de unos gml:LineStingSegment y uno gml:Arco: enter image description here

Mi tarea es la importación de GML base de datos (alemán ALKIS de datos en NAS formato) a Oracle spatial.

En Oracle algunos polígonos tienen una geometría no válida después de la importación: ORA-13349 El límite de un polígono se intersecta a sí misma

Así que me pregunto si es permitido en GML para definir un polígono con un límite que se intersecta a sí misma.

Aquí es un fragmento de la GML:

> <gml:Surface gml:id="BRPPR">  <gml:patches>       <gml:PolygonPatch>
>           <gml:exterior>
>               <gml:Ring>
>               ...
>                   <gml:curveMember>
>                       <gml:Curve gml:id="BRPPW">
>                           <gml:segments>
>                               <gml:LineStringSegment>
>                                   <gml:posList>323671.155 5538007.151 323674.553 5538013.270</gml:posList>
>                               </gml:LineStringSegment>
>                           </gml:segments>
>                       </gml:Curve>
>                   </gml:curveMember>
>                   <gml:curveMember>
>                       <gml:Curve gml:id="BRPPX">
>                           <gml:segments>
>                               <gml:Arc>
>                                   <gml:posList>323674.553 5538013.270 323673.358 5538012.318 323671.840 5538012.488</gml:posList>
>                               </gml:Arc>
>                           </gml:segments>
>                       </gml:Curve>
>                   </gml:curveMember>
>                   ...
>               </gml:Ring>             </gml:exterior>         </gml:PolygonPatch>     </gml:patches> </gml:Surface>

3voto

bugmenot123 Puntos 770

GML se basa en el modelo de geometría Simple característica. El SFM dice que un polígono uno mismo-intersección no es "simple" y por lo tanto no es válido. Así que yo diría que no, GML no permite eso.

3voto

Joe Puntos 16

Como un comentario a la respuesta de @bugmenot una cita de GML-SF documento http://portal.opengeospatial.org/files/?artifact_id=11266, GML es más que una simple cuenta.

En tanto GML y anteriores Características Simples (SF) especificaciones del OGC, como Simple Características de SQL (SF-SQL) [10], las características son considerados para ser objetos que puede tener la geometría y otras propiedades. El SF las especificaciones son más restrictivos que GML, sin embargo, en que la geometría se limita a los puntos, líneas y polígonos (y colecciones de estos), con la interpolación lineal entre los vértices de las líneas, y plana (flat) las superficies de los polígonos. Este GML Características Simples (GML-SF) perfil tiene un conocimiento similar de la estructura y la geometría de características como el SF-SQL. Sin embargo, GML-SF va más allá de la SF-SQL en algunas maneras importantes: GML-SF apoya coordenadas tridimensionales (la ubicación y elevación) en función de la geometría, en donde SF-SQL sólo admite dos dimensiones (ubicación). GML-SF también va más allá de la SF-SQL el apoyo a los metadatos (sección 7.4), un medio de referencia local o remoto a los recursos que podrían ser utilizados para la principal y clave externa referencias (sección 8.4.3.10), y la dinámica de codelists (sección 8.4.3.11). Estas extensiones han sido incorporados en GML-SF basado en su utilidad a través de una gran base de aplicaciones.

Cuando se trata de auto-intersección y parches, realmente no puedo decir si se les niega en general GML. Polígono es un simple parche y se define que consisten en LinearRings y esto es lo GML 3.2.1 dice acerca de los:

10.5.8 LinearRingType, LinearRing

<complexType name="LinearRingType"> 
<complexContent> 
<extension base="gml:AbstractRingType"> 
<sequence> 
<choice> 
<choice minOccurs="4" maxOccurs="unbounded"> 
<element ref="gml:pos" /> <element ref="gml:pointProperty" /> 
<element ref="gml:pointRep"/> 
</choice> <element ref="gml:posList" /> 
<element ref="gml:coordinates" /> 
</choice> 
</sequence> 
</extension> 
</complexContent> 
</complexType> 
<element name="LinearRing" type="gml:LinearRingType" substitutionGroup="gml:AbstractRing" />

Un gml:LinearRing está definido por cuatro o más de coordenadas tuplas, con interpolación lineal entre ellos; la primera y la última de las coordenadas deberán ser coincidentes. La codificación de los puntos de control sigue el patrón descrito en 10.1.4.4. El número de posiciones en la lista deberá ser al menos de cuatro.

Yo no fui a AbstractRing para comprobar si el auto-intersecciones se negó a ese nivel. Sin embargo, en un documento sobre la validación de la Ciudad de GML http://files.sig3d.de/file/ag-qualitaet/20110531_Regeln_GML_final_EN.pdf auto-intersecciones no están permitidos.

En la práctica, las operaciones espaciales tienden a crear topológicamente incorrecto geometrías cada ahora y entonces. Sería difícil de manejar y reparar los errores de topología si sería imposible guardar el resultado, incluso se sabe que se ha equivocado.

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