MultiPolygon

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

Instancias Polygon

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

Examples of geometry MultiPolygon instances

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

Consulte también

Polygon
STArea (tipo de datos geometry)
STCentroid (tipo de datos geometry)
STPointOnSurface (tipo de datos geometry)
Datos espaciales (SQL Server)