Creazione, costruzione e query di istanze geometryCreate, Construct, and Query geometry Instances

Il tipo di dati spaziali planare geometryrappresenta i dati in un sistema di coordinate euclideo (piano).The planar spatial data type, geometry, represents data in a Euclidean (flat) coordinate system. Questo tipo è implementato come tipo di dati CLR (Common Language Runtime) in SQL ServerSQL Server.This type is implemented as a common language runtime (CLR) data type in SQL ServerSQL Server.

Il tipo geometry è predefinito e disponibile in ogni database.The geometry type is predefined and available in each database. È possibile creare colonne di tabella di tipo geometry e operare sui dati geometry nello stesso modo in cui si utilizzano gli altri tipi CLR.You can create table columns of type geometry and operate on geometry data in the same manner as you would use other CLR types.

Il tipo di dati geometry (planare) supportato da SQL ServerSQL Server è conforme allo standard Open Geospatial Consortium (OGC) Simple Features for SQL Specification versione 1.1.0.The geometry data type (planar) supported by SQL ServerSQL Server conforms to the Open Geospatial Consortium (OGC) Simple Features for SQL Specification version 1.1.0.

Per ulteriori informazioni sulle specifiche OGC, vedere quanto riportato di seguito:For more information on OGC specifications, see the following:

Creazione o costruzione di una nuova istanza geometry Creating or constructing a new geometry instance

Creazione di una nuova istanza geometry da un'istanza esistente Creating a New geometry Instance from an Existing Instance

Il tipo di dati geometry offre molti metodi predefiniti che è possibile usare per creare nuove istanze di geometry in base a quelle esistenti.The geometry data type provides numerous built-in methods you can use to create new geometry instances based on existing instances.

Per creare un buffer relativo a una geometriaTo create a buffer around a geometry
STBuffer (tipo di dati geometry)STBuffer (geometry Data Type)

BufferWithTolerance (tipo di dati geometry)BufferWithTolerance (geometry Data Type)

Per creare una versione semplificata di una geometriaTo create a simplified version of a geometry
Reduce (tipo di dati geometry)Reduce (geometry Data Type)

Per creare la struttura convessa di una geometriaTo create the convex hull of a geometry
STConvexHull (tipo di dati geometry)STConvexHull (geometry Data Type)

Per creare una geometria dall'intersezione di due geometrieTo create a geometry from the intersection of two geometries
STIntersection (tipo di dati geometry)STIntersection (geometry Data Type)

Per creare una geometria dall'unione di due geometrieTo create a geometry from the union of two geometries
STUnion (tipo di dati geometry)STUnion (geometry Data Type)

Per creare una geometria dai punti in cui una non si sovrappone all'altraTo create a geometry from the points where one geometry does not overlap another
STDifference (tipo di dati geometry)STDifference (geometry Data Type)

Per creare una geometria dai punti in cui due geometrie non si sovrappongonoTo create a geometry from the points where two geometries do not overlap
STSymDifference (tipo di dati geometry)STSymDifference (geometry Data Type)

Per creare un'istanza Point arbitraria che giace su una geometria esistenteTo create an arbitrary Point instance that lies on an existing geometry
STPointOnSurface (tipo di dati geometry)STPointOnSurface (geometry Data Type)

Costruzione di un'istanza geometry da un input WKT (well-known text) Constructing a geometry Instance from Well-Known Text Input

Il tipo di dati geometry fornisce molti metodi predefiniti che generano una geometria dalla rappresentazione WKT OGC (Open Geospatial Consortium).The geometry data type provides several built-in methods that generate a geometry from the Open Geospatial Consortium (OGC) WKT representation. Lo standard WKT è una stringa di testo che consente lo scambio di dati geometrici in formato testuale.The WKT standard is a text string that allows geometry data to be exchanged in textual form.

Per costruire qualsiasi tipo di istanza geometry da input WKTTo construct any type of geometry instance from WKT input
STGeomFromText (tipo di dati geometry)STGeomFromText (geometry Data Type)

Parse (tipo di dati geometry)Parse (geometry Data Type)

Per costruire un'istanza di geometria Point dall'input WKTTo construct a geometry Point instance from WKT input
STPointFromText (tipo di dati geometry)STPointFromText (geometry Data Type)

Per costruire un'istanza MultiPoint di tipo geometry da un input WKTTo construct a geometry MultiPoint instance from WKT input
STMPointFromText (tipo di dati geometry)STMPointFromText (geometry Data Type)

Per costruire un'istanza LineString di tipo geometry da un input WKTTo construct a geometry LineString instance from WKT input
STLineFromText (tipo di dati geometry)STLineFromText (geometry Data Type)

Per costruire un'istanza MultiLineString di tipo geometry da un input WKTTo construct a geometry MultiLineString instance from WKT input
STMLineFromText (tipo di dati geometry)STMLineFromText (geometry Data Type)

Per costruire un'istanza Polygon di tipo geometry da un input WKTTo construct a geometry Polygon instance from WKT input
STPolyFromText (tipo di dati geometry)STPolyFromText (geometry Data Type)

Per costruire un'istanza MultiPolygon di tipo geometry da un input WKTTo construct a geometry MultiPolygon instance from WKT input
STMPolyFromText (tipo di dati geometry)STMPolyFromText (geometry Data Type)

Per costruire un'istanza GeometryCollection di tipo geometry da un input WKTTo construct a geometry GeometryCollection instance from WKT input
STGeomCollFromText (tipo di dati geometry)STGeomCollFromText (geometry Data Type)

Costruzione di un'istanza geometry da un input WKB (well-known binary) Constructing a geometry Instance from Well-Known Binary Input

WKB è un formato binario definito da OGC (Open Geospatial Consortium) che consente lo scambio di dati geometry tra un'applicazione client e un database SQL.WKB is a binary format specified by the Open Geospatial Consortium (OGC) that permits geometry data to be exchanged between a client application and an SQL database. Le funzioni seguenti accettano input WKB per costruire le geometrie:The following functions accept WKB input to construct geometries:

Per costruire qualsiasi tipo di istanza geometry da un input WKBTo construct any type of geometry instance from WKB input
STGeomFromWKB (tipo di dati geometry)STGeomFromWKB (geometry Data Type)

Per costruire un'istanza Point di tipo geometry da un input WKBTo construct a geometry Point instance from WKB input
STPointFromWKB (tipo di dati geometry)STPointFromWKB (geometry Data Type)

Per costruire un'istanza MultiPoint di tipo geometry da un input WKBTo construct a geometry MultiPoint instance from WKB input
STMPointFromWKB (tipo di dati geometry)STMPointFromWKB (geometry Data Type)

Per costruire un'istanza LineString di tipo geometry da un input WKBTo construct a geometry LineString instance from WKB input
STLineFromWKB (tipo di dati geometry)STLineFromWKB (geometry Data Type)

Per costruire un'istanza MultiLineString di tipo geometry da un input WKBTo construct a geometry MultiLineString instance from WKB input
STMLineFromWKB (tipo di dati geometry)STMLineFromWKB (geometry Data Type)

Per costruire un'istanza Polygon di tipo geometry da un input WKBTo construct a geometry Polygon instance from WKB input
STPolyFromWKB (tipo di dati geometry)STPolyFromWKB (geometry Data Type)

Per costruire un'istanza MultiPolygon di tipo geometry da un input WKBTo construct a geometry MultiPolygon instance from WKB input
STMPolyFromWKB (tipo di dati geometry)STMPolyFromWKB (geometry Data Type)

Per costruire un'istanza GeometryCollection di tipo geometry da un input WKBTo construct a geometry GeometryCollection instance from WKB input
STGeomCollFromWKB (tipo di dati geometry)STGeomCollFromWKB (geometry Data Type)

Costruzione di un'istanza geometry da un input di testo GML Constructing a geometry Instance from GML Text Input

Il tipo di dati geometry include un metodo che genera un'istanza geometry da GML, una rappresentazione XML di oggetti geometrici.The geometry data type provides a method that generates a geometry instance from GML, an XML representation of geometric objects. SQL ServerSQL Server supporta un subset di GML. supports a subset of GML.

Per costruire qualsiasi tipo di istanza geometry da un input GMLTo construct any type of geometry instance from GML input
GeomFromGml (tipo di dati geometry)GeomFromGml (geometry Data Type)

Restituzione di WKT e WKB da un'istanza geometry Returning Well-Known Text and Well-Known Binary from a geometry Instance

È possibile utilizzare i metodi seguenti per restituire il formato WKT o WKB di un'istanza geometry :You can use the following methods to return either the WKT or WKB format of a geometry instance:

Per restituire la rappresentazione WKT di un'istanza geometryTo return the WKT representation of a geometry instance
STAsText (tipo di dati geometry)STAsText (geometry Data Type)

ToString (tipo di dati geometry)ToString (geometry Data Type)

Per restituire la rappresentazione WKT di un'istanza geometry, con qualsiasi valore Z e M.To return the WKT representation of a geometry instance including any Z and M values
AsTextZM (tipo di dati geometry)AsTextZM (geometry Data Type)

Per restituire la rappresentazione WKB di un'istanza geometryTo return the WKB representation of a geometry instance
STAsBinary (tipo di dati geometry)STAsBinary (geometry Data Type)

Per restituire la rappresentazione GML di un'istanza geometryTo return a GML representation of a geometry instance
AsGml (tipo di dati geometry)AsGml (geometry Data Type)

Esecuzione di query sulle proprietà e i comportamenti delle istanze geometry Querying the Properties and Behaviors of geometry Instances

A tutte le istanze geometry sono associate diverse proprietà che possono essere recuperate tramite metodi disponibili in SQL ServerSQL Server .All geometry instances have a number of properties that can be retrieved through methods that SQL ServerSQL Server provides. Negli argomenti seguenti vengono definiti le proprietà e i comportamenti dei tipi di geometria, nonché i metodi per l'esecuzione di query per ognuno di essi.The following topics define the properties and behaviors of geometry types, and the methods for querying each one.

Informazioni sulla validità, sul tipo di istanza e su GeometryCollection Validity, Instance Type, and GeometryCollection Information

Dopo aver costruito un'istanza geometry , è possibile usare i metodi seguenti per determinare se essa è corretta, per restituire il tipo di istanza o, se si tratta di un'istanza di raccolta, per restituire un'istanza geometry specifica.Once a geometry instance is constructed, you can use the following methods to determine if it is well-formed, return the instance type, or, if it is a collection instance, return a specific geometry instance.

Per restituire il tipo di istanza di una geometriaTo return the instance type of a geometry
STGeometryType (tipo di dati geometry)STGeometryType (geometry Data Type)

Per determinare se una geometria è un tipo di istanza specificatoTo determine if a geometry is a given instance type
InstanceOf (tipo di dati geometry)InstanceOf (geometry Data Type)

Per determinare se un'istanza geometry è corretta per il tipo di istanzaTo determine if a geometry instance is well-formed for its instance type
STIsValid (tipo di dati geometry)STIsValid (geometry Data Type)

Per convertire un'istanza geometry in un'istanza geometry corretta con un tipo di istanzaTo convert a geometry instance to a well-formed geometry instance with an instance type
MakeValid (tipo di dati geometry)MakeValid (geometry Data Type)

Per restituire il numero delle geometrie in un'istanza GeometryCollectionTo return the number of geometries in a geometry collection instance
STNumGeometries (tipo di dati geometry)STNumGeometries (geometry Data Type)

Per restituire una specifica geometria in un'istanza GeometryCollectionTo return a specific geometry in a geometry collection instance
STGeometryN (tipo di dati geometry)STGeometryN (tipo di dati geometry)STGeometryN (geometry Data Type)STGeometryN (geometry Data type)

Numero di punti Number of Points

Tutte le istanze geometry non vuote sono costituite da punti.All nonempty geometry instances are comprised of points. Tali punti rappresentano le coordinate X e Y del piano su cui vengono tracciate le geometrie.These points represent the X- and Y-coordinates of the plane on which the geometries are drawn. Il tipo di datigeometry offre numerosi metodi predefiniti per l'esecuzione di query sui punti di un'istanza.geometry provides numerous built-in methods for querying the points of an instance.

Per restituire il numero di punti che comprendono un'istanzaTo return the number of points that comprise an instance
STNumPoints (tipo di dati geometry)STNumPoints (geometry Data Type)

Per restituire un punto specifico in un'istanzaTo return a specific point in an instance
STPointNSTPointN

Per restituire un punto arbitrario che si trova in un'istanzaTo return an arbitrary point that lies on an instance
STPointOnSurfaceSTPointOnSurface

Per restituire il punto di inizio di un'istanzaTo return the start point of an instance
STStartPointSTStartPoint

Per restituire il punto di fine di un'istanzaTo return the end point of an instance
STEndpointSTEndpoint

Per restituire la coordinata X di un'istanza PointTo return the X-coordinate of a Point instance
STX (tipo di dati geometry)STX (geometry Data Type)

Per restituire la coordinata Y di un'istanza PointTo return the Y-coordinate of a Point instance
STYSTY

Per restituire il punto centrale geometrico di un'istanza Polygon, CurvePolygon o MultiPolygonTo return the geometric center point of a Polygon, CurvePolygon, or MultiPolygon instance
STCentroidSTCentroid

Dimensione Dimension

Un'istanza geometry non vuota può essere a 0, 1 o 2 dimensioni.A nonempty geometry instance can be 0-, 1-, or 2-dimensional. Le istanze geometrysenza dimensioni, come Point e MultiPoint, non hanno lunghezza o area.Zero-dimensional geometries, such as Point and MultiPoint, have no length or area. Gli oggetti unidimensionali come LineString, CircularString, CompoundCurvee MultiLineStringhanno una lunghezza.One-dimensional objects, such as LineString, CircularString, CompoundCurve, and MultiLineString, have length. Le istanze bidimensionali come Polygon, CurvePolygone MultiPolygon.Two-dimensional instances, such as Polygon, CurvePolygon, and MultiPolygon, have area and length. Per le istanze vuote verrà indicata una dimensione di -1 e per GeometryCollection verrà indicata un'area dipendente dai tipi del contenuto.Empty instances will report a dimension of -1, and a GeometryCollection will report an area dependent on the types of its contents.

Per restituire la dimensione di un'istanzaTo return the dimension of an instance
STDimensionSTDimension

Per restituire la lunghezza di un'istanzaTo return the length of an instance
STLengthSTLength

Per restituire l'area di un'istanzaTo return the area of an instance
STAreaSTArea

Vuoto Empty

Un'istanza vuota di tipo geometry non contiene punti.An emptygeometry instance does not have any points. La lunghezza delle istanze LineString, CircularString, CompoundCurvee MultiLineString vuote è pari a zero.The length of empty LineString, CircularString, CompoundCurve, and MultiLineString instances is zero. L'area delle istanze Polygon, CurvePolygone MultiPolygon vuote è pari a 0.The area of empty Polygon, CurvePolygon, and MultiPolygon instances is 0.

Per determinare se un'istanza è vuotaTo determine if an instance is empty
STIsEmpty.STIsEmpty.

Simple Simple

Affinché il tipo geometry dell'istanza sia semplice, deve soddisfare entrambi questi requisiti:For a geometry of the instance to be simple, it must meet both of these requirements:

  • Ogni figura dell'istanza non deve intersecarsi, salvo agli endpoint.Each figure of the instance must not intersect itself, except at its endpoints.

  • Le figure dell'istanza non possono intersecarsi tra di loro in un punto non esistente in entrambi i loro limiti.No two figures of the instance can intersect each other at a point that is not in both of their boundaries.

Nota

Le geometrie vuote sono sempre semplici.Empty geometries are always simple.

Per determinare se un'istanza è sempliceTo determine if an instance is simple
STIsSimple.STIsSimple.

Limite interno ed esterno Boundary, Interior, and Exterior

L' interno di un'istanza geometry è lo spazio occupato dall'istanza e l' esterno è lo spazio non occupato da essa.The interior of a geometry instance is the space occupied by the instance, and the exterior is the space not occupied it.

Illimite è definito da OGC come segue:Boundary is defined by the OGC as follows:

  • Le istanzePoint e MultiPoint non hanno un limite.Point and MultiPoint instances do not have a boundary.

  • I limitiLineString e MultiLineString boundaries are formed by the start points e end points, removing those that occur an even number of times.LineString and MultiLineString boundaries are formed by the start points and end points, removing those that occur an even number of times.

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');  
SELECT @g.STBoundary().ToString();  

Il limite di un'istanza Polygon o MultiPolygon è il set dei suoi anelli.The boundary of a Polygon or MultiPolygon instance is the set of its rings.

DECLARE @g geometry;  
SET @g = geometry::Parse('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');  
SELECT @g.STBoundary().ToString();  

Per restituire il limite di un'istanzaTo return the boundary of an instance
STBoundarySTBoundary

Envelope Envelope

L' envelope di un'istanza geometry , nota anche come rettangolo di selezioneè il rettangolo allineato all'asse formato dalle coordinate minime e massime (X, Y) dell'istanza.The envelope of a geometry instance, also known as the bounding box, is the axis-aligned rectangle formed by the minimum and maximum (X,Y) coordinates of the instance.

Per restituire l'envelope di un'istanzaTo return the envelope of an instance
STEnvelopeSTEnvelope

Chiusura Closure

Un'istanza geometrychiusa è una figura i cui punti di inizio e di fine corrispondono.A closedgeometry instance is a figure whose start points and end points are the same. Le istanzePolygon sono considerate chiuse.Polygon instances are considered closed. Le istanzePoint non sono considerate chiuse.Point instances are not closed.

Un anello è un'istanza LineString semplice chiusa.A ring is a simple, closed LineString instance.

Per determinare se un'istanza è chiusaTo determine if an instance is closed
STIsClosedSTIsClosed

Per determinare se un'istanza è un anelloTo determine if an instance is a ring
STIsRingSTIsRing

Per restituire l'anello esterno di un'istanza PolygonTo return the exterior ring of a Polygon instance
STExteriorRingSTExteriorRing

Per restituire il numero di anelli interni in un'istanza PolygonTo return the number of interior rings in a Polygon
STNumInteriorRingSTNumInteriorRing

Per restituire un anello interno specificato di un'istanza PolygonTo return a specified interior ring of a Polygon
STInteriorRingNSTInteriorRingN

Identificatore SRID Spatial Reference ID (SRID)

L'identificatore SRID specifica il sistema di coordinate in cui è rappresentata l'istanza geometry .The spatial reference ID (SRID) is an identifier specifying which coordinate system the geometry instance is represented in. Due istanze con identificatori SRID diversi non possono essere confrontate.Two instances with different SRIDs are incomparable.

Per impostare o restituire l'identificatore SRID di un'istanzaTo set or return the SRID of an instance
STSridSTSrid

Questa proprietà può essere modificata.This property can be modified.

Determinazione delle relazioni esistenti tra istanze geometry Determining Relationships between geometry Instances

Il tipo di dati geometry offre molti metodi predefiniti che è possibile usare per determinare relazioni tra due istanze geometry .The geometry data type provides many built-in methods you can use to determine relationships between two geometry instances.

Per determinare se due istanze includono lo stesso punto impostatoTo determine if two instances comprise the same point set
STEqualsSTEquals

Per determinare se due istanze sono disgiunteTo determine if two instances are disjoint
STDisjointSTDisjoint

Per determinare se due istanze si intersecanoTo determine if two instances intersect
STIntersectsSTIntersects

Per determinare se due istanze entrano in contattoTo determine if two instances touch
STTouchesSTTouches

Per determinare se due istanze si sovrappongonoTo determine if two instances overlap
STOverlapsSTOverlaps

Per determinare se due istanze si incrocianoTo determine if two instances cross
STCrossesSTCrosses

Per determinare se un'istanza è all'interno dell'altraTo determine if one instance is within another
STWithinSTWithin

Per determinare se un'istanza contiene l'altraTo determine if one instance contains another
STContainsSTContains

Per determinare se un'istanza si sovrappone all'altraTo determine if one instance overlaps another
STOverlapsSTOverlaps

Per determinare se due istanze sono collegate a livello spazialeTo determine if two instances are spatially related
STRelateSTRelate

Per determinare la distanza più breve tra punti in due geometrieTo determine the shortest distance between points in two geometries
STDistanceSTDistance

Istanze geometry con SRID zero per impostazione predefinita geometry Instances Default to Zero SRID

L'identificatore SRID predefinito per le istanze geometry in SQL ServerSQL Server è 0.The default SRID for geometry instances in SQL ServerSQL Server is 0. Con i dati spaziali geometry lo specifico identificatore SRID dell'istanza spaziale non deve eseguire i calcoli. Di conseguenza le istanze possono risiedere nello spazio planare indefinito.With geometry spatial data, the specific SRID of the spatial instance is not required to perform calculations; thus, instances can reside in undefined planar space. Per indicare lo spazio planare indefinito nei calcoli di metodi del tipo di dati geometry , Motore di database di SQL ServerSQL Server Database Engine SRID 0.To indicate undefined planar space in the calculations of geometry data type methods, the Motore di database di SQL ServerSQL Server Database Engine uses SRID 0.

Esempi Examples

Nei due esempi seguenti viene illustrato come aggiungere ed eseguire query su dati di tipo geometry.The following two examples show how to add and query geometry data.

  • Nel primo esempio viene creata una tabella con una colonna di identità e una colonna geometry``GeomCol1.The first example creates a table with an identity column and a geometry column GeomCol1. Una terza colonna effettua il rendering della colonna geometry nella rappresentazione Well-Known Text (WKT) OGC (Open Geospatial Consortium) e utilizza il metodo STAsText().A third column renders the geometry column into its Open Geospatial Consortium (OGC) Well-Known Text (WKT) representation, and uses the STAsText() method. Vengono quindi inserite due righe: in una riga è contenuta un'istanza LineString di geometrye in una seconda è contenuta un'istanza Polygon .Two rows are then inserted: one row contains a LineString instance of geometry, and one row contains a Polygon instance.

    IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
        DROP TABLE dbo.SpatialTable;  
    GO  
    
    CREATE TABLE SpatialTable   
        ( id int IDENTITY (1,1),  
        GeomCol1 geometry,   
        GeomCol2 AS GeomCol1.STAsText() );  
    GO  
    
    INSERT INTO SpatialTable (GeomCol1)  
    VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));  
    
    INSERT INTO SpatialTable (GeomCol1)  
    VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));  
    GO  
    
  • Nel secondo esempio viene utilizzato il metodo STIntersection() per restituire i punti in cui si intersecano le due istanze geometry inserite in precedenza.The second example uses the STIntersection() method to return the points where the two previously inserted geometry instances intersect.

    DECLARE @geom1 geometry;  
    DECLARE @geom2 geometry;  
    DECLARE @result geometry;  
    
    SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;  
    SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;  
    SELECT @result = @geom1.STIntersection(@geom2);  
    SELECT @result.STAsText();  
    

Vedere ancheSee Also

Dati spaziali (SQL Server)Spatial Data (SQL Server)