Compartir a través de


MultiPolygon

Se aplica a: Sql Server Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics en Microsoft Fabric Warehouse en la base de datos SQL de Microsoft Fabric en Microsoft Fabric

Una instancia de MultiPolygon es una colección de cero o más instancias de Polygon .

Instancias de Polygon

En la ilustración siguiente se muestran ejemplos de instancias de MultiPolygon .

Diagrama de ejemplos de instancias de Geometry MultiPolygon.

Como se muestra en la ilustración:

  • La Figura 1 es una instancia de MultiPolygon con dos elementos Polygon . El límite se define mediante los dos anillos exteriores y los tres interiores.

  • La Figura 2 es una instancia de MultiPolygon con dos elementos Polygon . El límite se define mediante los dos anillos exteriores y los tres interiores. Los dos elementos Polygon forman una intersección en un punto tangente.

Instancias aceptadas

Una instancia MultiPolygon es una instancia aceptada si se cumple una de las siguientes condiciones.

  • Es una instancia MultiPolygon vacía.

  • Todas las instancias que comprenden la instancia MultiPolygon son instancias Polygon aceptadas. Para obtener más información sobre instancias Polygon aceptadas, vea Polygon.

Los ejemplos siguientes muestran instancias MultiPolygon aceptadas.

DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';  
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  

En el siguiente ejemplo se muestra una instancia MultiPolygon que producirá una excepción System.FormatException.

DECLARE @g geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3)))';  

La segunda instancia en MultiPolygon es una instancia LineString y no una instancia Polygon aceptada.

Instancias válidas

Una instancia MultiPolygon es válida si es una instancia MultiPolygon vacía o si cumple los siguientes criterios.

  1. Todas las instancias que comprenden la instancia MultiPolygon son instancias Polygon válidas. Para las instancias Polygon válidas, vea Polygon.

  2. Ninguna de las instancias Polygon que comprenden la instancia MultiPolygon se superponen.

En el siguiente ejemplo se muestran dos instancias MultiPolygon válidas y una instancia MultiPolygon no válida.

DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';  
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid();  

@g2 es válido porque las dos instancias de Polygon se tocan solo en un punto tangente. @g3 no es válido porque los interiores de las dos instancias de Polygon se superponen.

Ejemplos

Ejemplo A.

El ejemplo siguiente muestra la creación de una instancia de geometry MultiPolygon y devuelve el valor Well-Known Text (WKT) del segundo componente.

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTIPOLYGON(((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1)), ((9 9, 9 10, 10 9, 9 9)))');  
SELECT @g.STGeometryN(2).STAsText();  

Ejemplo B.

Este ejemplo crea instancias de una instancia de MultiPolygon vacía.

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTIPOLYGON EMPTY');