MultiPolígono

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

Instancias de MultiPolygon

La ilustración siguiente muestra ejemplos de instancias de MultiPolygon.

Ejemplos de instancias MultiPolygon de geometry

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 de MultiPolygon se acepta si se cumple una de las siguientes condiciones.

  • Es una instancia de MultiPolygon vacía

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

Los ejemplos siguientes muestran las instancias de 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 de MultiPolygon que producirá una 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 el MultiPolygon es una instancia de LineString y no una instancia de Polygon aceptada.

Instancias válidas

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

  1. Todas las instancias que comprenden la instancia de MultiPolygon son instancias de Polygon válidas. Para conocer las instancias de Polygon válidas, vea Polígono.

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

En el siguiente ejemplo se muestran dos instancias de MultiPolygon válidas y una instancia de 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álida porque las dos instancias de Polygon solo se tocan en un punto tangente. @g3 es no válida porque el interior de las dos instancias de Polygon se superponen entre sí.

Ejemplos

El ejemplo siguiente muestra la creación de una instancia de geometryMultiPolygon y devuelve el 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();

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

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