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.
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.
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.
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');