Rumsliga data i SQL Server EF Core-providern

Den här sidan innehåller ytterligare information om hur du använder rumsliga data med Microsoft SQL Server-databasprovidern. Allmän information om hur du använder rumsliga data i EF Core finns i dokumentationen om spatiala data .

Geografi eller geometri

Som standard mappas rumsliga egenskaper till geography kolumner i SQL Server. Om du vill använda geometrykonfigurerar du kolumntypen i din modell.

Geografiska polygonringar

När du använder geography kolumntypen ställer SQL Server ytterligare krav på den yttre ringen (eller skalet) och de inre ringarna (eller hålen). Den yttre ringen måste vara orienterad motsols och de inre ringarna medsols. NetTopologySuite (NTS) verifierar detta innan du skickar värden till databasen.

FullGlobe

SQL Server har en icke-standardgeometrityp som representerar hela jordgloben när du använder geography kolumntypen. Det har också ett sätt att representera polygoner över hela jordklotet (utan ett yttre skal). Inget av dessa stöds av NTS.

Varning

FullGlobe och polygoner som baseras på det stöds inte av NTS.

Kurvor

Som nämnts i dokumentationen för spatiala data kan NTS för närvarande inte representera kurvor. Det innebär att du måste transformera värdena CircularString, CompoundCurve och CurePolygon med metoden STCurveToLine innan du använder dem i EF Core.

Varning

CircularString, CompoundCurve och CurePolygon stöds inte av NTS.

Spatial funktionsmappning

Den här tabellen visar vilka NTS-medlemmar som översätts till vilka SQL-funktioner. Observera att översättningarna varierar beroende på om kolumnen är av typen geografi eller geometri.

.NET SQL (geografi) SQL (geometri) Har lagts till i
EF.Functions.CurveToLine(geometri) @geometry.STCurveToLine() @geometry.STCurveToLine() EF Core 7.0
Geometri. Området @geometry.STArea() @geometry.STArea()
Geometri.AsBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometri.AsText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometri. Gränsen @geometry.STBoundary()
Geometri. Buffert(avstånd) @geometry.STBuffer(@distance) @geometry.STBuffer(@distance)
Geometri. Centroid @geometry.STCentroid()
geometri.Contains(g) @geometry.STContains(@g) @geometry.STContains(@g)
geometri.ConvexHull() @geometry.STConvexHull() @geometry.STConvexHull()
Geometri. Korsningar(g) @geometry.STCrosses(@g)
Geometri. Difference(other) @geometry.STDifference(@other) @geometry.STDifference(@other)
Geometri. Dimension @geometry.STDimension() @geometry.STDimension()
Geometri. Disjoint(g) @geometry.STDisjoint(@g) @geometry.STDisjoint(@g)
Geometri. Avstånd(g) @geometry.STDistance(@g) @geometry.STDistance(@g)
Geometri. Kuvert @geometry.STEnvelope()
Geometri. EqualsTopologically(g) @geometry.STEquals(@g) @geometry.STEquals(@g)
Geometri.GeometryType @geometry.STGeometryType() @geometry.STGeometryType()
geometry.GetGeometryN(n) @geometry.STGeometryN(@n + 1) @geometry.STGeometryN(@n + 1)
geometry.InteriorPoint @geometry.STPointOnSurface()
Geometri. Skärningspunkt(annan) @geometry.STIntersection(@other) @geometry.STIntersection(@other)
Geometri. Korsningar(g) @geometry.STIntersects(@g) @geometry.STIntersects(@g)
geometry.IsEmpty @geometry.STIsEmpty() @geometry.STIsEmpty()
Geometri.IsSimple @geometry.STIsSimple()
Geometri.IsValid @geometry.STIsValid() @geometry.STIsValid()
Geometri.IsWithinDistance(geom, avstånd) @geometry.STDistance(@geom) <= @distance @geometry.STDistance(@geom) <= @distance
Geometri. Längd @geometry.STLength() @geometry.STLength()
geometry.NumGeometries @geometry.STNumGeometries() @geometry.STNumGeometries()
geometry.NumPoints @geometry.STNumPoints() @geometry.STNumPoints()
geometry.OgcGeometryType CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... SLUTET CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... SLUTET
Geometri. Överlappningar(g) @geometry.STOverlaps(@g) @geometry.STOverlaps(@g)
Geometri.PunktPåYtan @geometry.STPointOnSurface()
Geometri. Relate(g, intersectionPattern) @geometry.STRelate(@g, @intersectionPattern)
geometry.SRID @geometry.STSrid @geometry.STSrid
geometry.SymmetricDifference(other) @geometry.STSymDifference(@other) @geometry.STSymDifference(@other)
Geometri.ToBinary() @geometry.STAsBinary() @geometry.STAsBinary()
geometry.ToText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometri. Touches(g) @geometry.STTouches(@g)
Geometri. Union(övrigt) @geometry.STUnion(@other) @geometry.STUnion(@other)
Geometri. Inom(g) @geometry.STWithin(@g) @geometry.STWithin(@g)
geometryCollection[i] @geometryCollection.STGeometryN(@i + 1) @geometryCollection.STGeometryN(@i + 1)
geometryCollection.Count (antal) @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()
Punkt M @point.M @point.M
Punkt. X @point.Long @point.STX
Punkt Y @point.Lat @point.STY
Punkt Z @point.Z @point.Z
Polygon. Exteriörring @polygon.RingN(1) @polygon.STExteriorRing()
Polygon.GetInteriorRingN(n) @polygon.RingN(@n + 2) @polygon.STInteriorRingN(@n + 1)
Polygon. NumInteriorRings @polygon.NumRings() - 1 @polygon.STNumInteriorRing()

Aggregatfunktioner

.NET SQL Har lagts till i
GeometryCombiner.Combine(group. Select(x => x.Property)) AggregatSamling(Egenskap) EF Core 7.0
ConvexHull.Create(group.Select(x => x.Property)) ConvexHullAggregate(Egenskap) 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

Ytterligare resurser