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 se tocan en un punto tangente.

Instancias aceptadas

Una instancia de MultiPolygon es aceptada 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 instancias de Polygon aceptadas, vea Polígono.

En los ejemplos siguientes se muestran 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 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 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 se tocan solo en un punto tangente. @g3 no es válida porque los interiores de las dos instancias de Polygon se superponen.

Ejemplos

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