Sdílet prostřednictvím


MultiPolygon

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLKoncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

MultiPolygon instance je kolekce nula nebo více instancí Polygon.

Polygonové instance

Následující obrázek ukazuje příklady instancí MultiPolygon .

Diagram příkladů instancí Geometry MultiPolygon

Jak je znázorněno na obrázku:

  • Obrázek 1 je instance MultiPolygon se dvěma polygonovými prvky. Hranice je definována dvěma vnějšími kroužky a třemi vnitřními kroužky.

  • Obrázek 2 je instance MultiPolygon se dvěma polygonovými prvky. Hranice je definována dvěma vnějšími kroužky a třemi vnitřními kroužky. Dva polygonové prvky se protínají v tangensovém bodě.

Akceptované instance

Instance MultiPolygon je přijata jednou z následujících podmínek.

  • Jedná se o prázdnou instanci MultiPolygon .

  • Všechny instance, které tvoří instanci MultiPolygon , jsou přijímány polygonové instance. Další informace o akceptovaných instancích Mnohoúhelníku najdete v tématu Mnohoúhelník.

Následující příklady ukazují akceptované instance MultiPolygon .

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

Následující příklad ukazuje instanci MultiPolygon, která vyvolá System.FormatException.

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

Druhá instance multipolygonu je instance LineString, a nikoli akceptovaná instance Polygon.

Platné instance

Instance MultiPolygon je platná, pokud se jedná o prázdnou instanci MultiPolygon nebo pokud splňuje následující kritéria.

  1. Všechny instance, které tvoří instanci MultiPolygon , jsou platné polygonové instance. Platné instance mnohoúhelníku najdete v tématu Mnohoúhelník.

  2. Žádná z instancí Polygonu , které tvoří multipolygon instance, se překrývají.

Následující příklad ukazuje dvě platné multipolygon instance a jednu neplatnou MultiPolygon instance.

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 je platný, protože tyto dvě polygonové instance se dotknou pouze v tangensovém bodě. @g3 není platný, protože vnitřní prostory dvou instancí Polygonu se vzájemně překrývají.

Examples

Příklad A.

Následující příklad ukazuje vytvoření instance geometry MultiPolygon a vrátí formát Well-Known Text (WKT) druhé komponenty.

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

Příklad B.

Tento příklad vytvoří prázdnou instanci MultiPolygon.

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