Condividi tramite


Dati spaziali nel provider SQL Server EF Core

Questa pagina include informazioni aggiuntive sull'uso di dati spaziali con il provider di database di Microsoft SQL Server. Per informazioni generali sull'uso dei dati spaziali in EF Core, vedere la documentazione principale relativa ai dati spaziali.

Geografia o geometria

Per impostazione predefinita, le proprietà spaziali vengono mappate alle geography colonne in SQL Server. Per usare geometry, configurare il tipo di colonna nel modello.

Anelli poligoni geografici

Quando si usa il geography tipo di colonna, SQL Server impone requisiti aggiuntivi per l'anello esterno (o la shell) e gli anelli interni (o fori). L'anello esterno deve essere orientato in senso antiorario e gli anelli interni in senso orario. NetTopologySuite (NTS) convalida questo valore prima di inviare valori al database.

Fullglobe

SQL Server ha un tipo di geometria non standard per rappresentare il globo completo quando si usa il geography tipo di colonna. Ha anche un modo per rappresentare poligoni basati sul globo completo (senza un anello esterno). Nessuno di questi elementi è supportato da NTS.

Avviso

FullGlobe e poligoni basati su di esso non sono supportati da NTS.

Curve

Come indicato nella documentazione principale relativa ai dati spaziali, NTS attualmente non può rappresentare le curve. Ciò significa che è necessario trasformare i valori CircularString, CompoundCurve e CurePolygon usando il metodo STCurveToLine prima di usarli in EF Core.

Avviso

CircularString, CompoundCurve e CurePolygon non sono supportati da NTS.

Mapping delle funzioni spaziali

Questa tabella mostra i membri NTS convertiti in quali funzioni SQL. Si noti che le traduzioni variano a seconda che la colonna sia di tipo geography o geometry.

.NET SQL (geography) SQL (geometria) Aggiunta in
EF. Functions.CurveToLine(geometry) @geometry.STCurveToLine() @geometry.STCurveToLine() EF Core 7.0
Geometria. Zona @geometry.STArea() @geometry.STArea()
Geometria. AsBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometria. AsText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometria. Confine @geometry.STBoundary()
Geometria. Buffer(distance) @geometry.STBuffer(@distance) @geometry.STBuffer(@distance)
Geometria. Baricentro @geometry.STCentroid()
Geometria. Contains(g) @geometry.STContains(@g) @geometry.STContains(@g)
Geometria. ConvexHull() @geometry.STConvexHull() @geometry.STConvexHull()
Geometria. Crosses(g) @geometry.STCrosses(@g)
Geometria. Differenza (altro) @geometry.STDifference(@other) @geometry.STDifference(@other)
Geometria. Dimensione @geometry.STDimension() @geometry.STDimension()
Geometria. Disgiunto(g) @geometry.STDisjoint(@g) @geometry.STDisjoint(@g)
Geometria. Distance(g) @geometry.STDistance(@g) @geometry.STDistance(@g)
Geometria. Busta @geometry.STEnvelope()
Geometria. EqualsTopologically(g) @geometry.STEquals(@g) @geometry.STEquals(@g)
Geometria. GeometryType @geometry.STGeometryType() @geometry.STGeometryType()
Geometria. GetGeometryN(n) @geometry.STGeometryN(@n + 1) @geometry.STGeometryN(@n + 1)
Geometria. InteriorPoint @geometry.STPointOnSurface()
Geometria. Intersezione (altro) @geometry.STIntersection(@other) @geometry.STIntersection(@other)
Geometria. Intersects(g) @geometry.STIntersects(@g) @geometry.STIntersects(@g)
Geometria. Isempty @geometry.STIsEmpty() @geometry.STIsEmpty()
Geometria. IsSimple @geometry.STIsSimple()
Geometria. IsValid @geometry.STIsValid() @geometry.STIsValid()
Geometria. IsWithinDistance(geom, distance) @geometry.STDistance(@geom)<= @distance @geometry.STDistance(@geom)<= @distance
Geometria. Lunghezza @geometry.STLength() @geometry.STLength()
Geometria. NumGeometries @geometry.STNumGeometries() @geometry.STNumGeometries()
Geometria. NumPoint @geometry.STNumPoints() @geometry.STNumPoints()
Geometria. OgcGeometryType CA edizione Standard @geometry.STGeometryType() WHEN N'Point' THEN 1 ... FINE CA edizione Standard @geometry.STGeometryType() WHEN N'Point' THEN 1 ... FINE
Geometria. Sovrapposizioni (g) @geometry.STOverlaps(@g) @geometry.STOverlaps(@g)
Geometria. PointOnSurface @geometry.STPointOnSurface()
Geometria. Relate(g, intersezionePattern) @geometry.STRelate(@g, @intersectionPattern)
Geometria. SRID @geometry.STSrid @geometry.STSrid
Geometria. SymmetricDifference(other) @geometry.STSymDifference(@other) @geometry.STSymDifference(@other)
Geometria. ToBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometria. ToText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometria. Touches(g) @geometry.STTouches(@g)
Geometria. Union(altro) @geometry.STUnion(@other) @geometry.STUnion(@other)
Geometria. Within(g) @geometry.STWithin(@g) @geometry.STWithin(@g)
geometryCollection[i] @geometryCollection.STGeometryN(@i + 1) @geometryCollection.STGeometryN(@i + 1)
geometryCollection.Count @geometryCollection.STNumGeometries() @geometryCollection.STNumGeometries()
lineString.Count @lineString.STNumPoints() @lineString.STNumPoints()
lineString.EndPoint @lineString.STEndPoint() @lineString.STEndPoint()
lineString.GetPointN(n) @lineString.STPointN(@n + 1) @lineString.STPointN(@n + 1)
lineString.IsClosed @lineString.STIsClosed() @lineString.STIsClosed()
lineString.IsRing @lineString.IsRing()
lineString.StartPoint @lineString.STStartPoint() @lineString.STStartPoint()
multiLineString.IsClosed @multiLineString.STIsClosed() @multiLineString.STIsClosed()
Punto. M @point.M @point.M
Punto. X @point.Long @point.STX
Punto. Y @point.Lat @point.STY
Punto. Z @point.Z @point.Z
Poligono. ExteriorRing @polygon.RingN(1) @polygon.STExteriorRing()
Poligono. GetInteriorRingN(n) @polygon.RingN(@n + 2) @polygon.STInteriorRingN(@n + 1)
Poligono. NumInteriorRings @polygon.NumRings() -1 @polygon.STNumInteriorRing()

Funzioni di aggregazione

.NET SQL Aggiunta in
GeometryCombiner.Combine(group. Select(x => x.Property)) CollectionAggregate(Property) EF Core 7.0
ConvexHull.Create(group. Select(x => x.Property)) ConvexHullAggregate(Property) EF Core 7.0
UnaryUnionOp.Union(group. Select(x => x.Property)) UnionAggregate(Property) EF Core 7.0
EnvelopeCombiner.CombineAsGeometry(group. Select(x => x.Property)) EnvelopeAggregate(Property) EF Core 7.0

Risorse aggiuntive