Udostępnij za pośrednictwem


Dane przestrzenne w dostawcy programu SQL Server EF Core

Ta strona zawiera dodatkowe informacje o korzystaniu z danych przestrzennych z dostawcą bazy danych programu Microsoft SQL Server. Aby uzyskać ogólne informacje na temat używania danych przestrzennych w programie EF Core, zobacz główną dokumentację dotyczącą danych przestrzennych.

Geografia lub geometria

Domyślnie właściwości przestrzenne są mapowane na geography kolumny w programie SQL Server. Aby użyć metody geometry, skonfiguruj typ kolumny w modelu.

Pierścienie wielokątne geografii

W przypadku korzystania z geography typu kolumny program SQL Server nakłada dodatkowe wymagania na pierścień zewnętrzny (lub powłokę) i pierścienie wewnętrzne (lub otwory). Pierścień zewnętrzny musi być skierowany w kierunku odwrotnym i pierścienie wewnętrzne zgodnie z ruchem wskazówek zegara. NetTopologySuite (NTS) weryfikuje to przed wysłaniem wartości do bazy danych.

FullGlobe

Program SQL Server ma niestandardowy typ geometrii reprezentujący pełny globus podczas korzystania z typu kolumny geography . Ma również sposób reprezentowania wielokątów opartych na pełnym świecie (bez pierścienia zewnętrznego). Żadna z nich nie jest obsługiwana przez nts.

Ostrzeżenie

FullGlobe i wielokąty oparte na nim nie są obsługiwane przez NTS.

Krzywe

Jak wspomniano w głównej dokumentacji danych przestrzennych, NTS obecnie nie może reprezentować krzywych. Oznacza to, że należy przekształcić wartości CircularString, CompoundCurve i CurePolygon przy użyciu metody STCurveToLine przed użyciem ich w programie EF Core.

Ostrzeżenie

Cykliczne ciągi, CompoundCurve i CurePolygon nie są obsługiwane przez NTS.

Mapowania funkcji przestrzennych

W tej tabeli przedstawiono, które elementy członkowskie NTS są tłumaczone na funkcje SQL. Należy pamiętać, że tłumaczenia różnią się w zależności od tego, czy kolumna ma typ geografii, czy geometrii.

.NET SQL (geografia) SQL (geometria) Dodano element w
EF. Functions.CurveToLine(geometry) @geometry.STCurveToLine() @geometry.STCurveToLine() EF Core 7.0
Geometrii. Obszar @geometry.STArea() @geometry.STArea()
Geometrii. AsBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometrii. AsText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometrii. Granicy @geometry.STBoundary()
Geometrii. Bufor (odległość) @geometry.STBuffer(@distance) @geometry.STBuffer(@distance)
Geometrii. Strefy @geometry.STCentroid()
Geometrii. Contains(g) @geometry.STContains(@g) @geometry.STContains(@g)
Geometrii. ConvexHull() @geometry.STConvexHull() @geometry.STConvexHull()
Geometrii. Krzyże (g) @geometry.STCrosses(@g)
Geometrii. Różnice (inne) @geometry.STDifference(@other) @geometry.STDifference(@other)
Geometrii. Wymiar @geometry.STDimension() @geometry.STDimension()
Geometrii. Disjoint(g) @geometry.STDisjoint(@g) @geometry.STDisjoint(@g)
Geometrii. Odległość (g) @geometry.STDistance(@g) @geometry.STDistance(@g)
Geometrii. Koperta @geometry.STEnvelope()
Geometrii. EqualsTopologically(g) @geometry.STEquals(@g) @geometry.STEquals(@g)
Geometrii. GeometryType @geometry.STGeometryType() @geometry.STGeometryType()
Geometrii. GetGeometryN(n) @geometry.STGeometryN(@n + 1) @geometry.STGeometryN(@n + 1)
Geometrii. Punkt wewnętrzny @geometry.STPointOnSurface()
Geometrii. Skrzyżowanie (inne) @geometry.STIntersection(@other) @geometry.STIntersection(@other)
Geometrii. Intersects(g) @geometry.STIntersects(@g) @geometry.STIntersects(@g)
Geometrii. Isempty @geometry.STIsEmpty() @geometry.STIsEmpty()
Geometrii. IsSimple @geometry.STIsSimple()
Geometrii. Isvalid @geometry.STIsValid() @geometry.STIsValid()
Geometrii. IsWithinDistance (geom, odległość) @geometry.STDistance(@geom)<= @distance @geometry.STDistance(@geom)<= @distance
Geometrii. Długość @geometry.STLength() @geometry.STLength()
Geometrii. NumGeometries @geometry.STNumGeometries() @geometry.STNumGeometries()
Geometrii. Liczba punktów @geometry.STNumPoints() @geometry.STNumPoints()
Geometrii. OgcGeometryType PRZYPADEK @geometry.STGeometryType() , GDY N'Point' TO 1 ... KOŃCU PRZYPADEK @geometry.STGeometryType() , GDY N'Point' TO 1 ... KOŃCU
Geometrii. Nakładające się (g) @geometry.STOverlaps(@g) @geometry.STOverlaps(@g)
Geometrii. PointOnSurface @geometry.STPointOnSurface()
Geometrii. Relate(g, intersectionPattern) @geometry.STRelate(@g, @intersectionPattern)
Geometrii. SRID @geometry.STSrid @geometry.STSrid
Geometrii. SymmetricDifference(inne) @geometry.STSymDifference(@other) @geometry.STSymDifference(@other)
Geometrii. ToBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometrii. ToText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometrii. Dotyki (g) @geometry.STTouches(@g)
Geometrii. Union(inne) @geometry.STUnion(@other) @geometry.STUnion(@other)
Geometrii. 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()
Punkt. M @point.M @point.M
Punkt. X @point.Long @point.STX
Punkt. Y @point.Lat @point.STY
Punkt. Z @point.Z @point.Z
Wielokąt. Zewnętrzne @polygon.RingN(1) @polygon.STExteriorRing()
Wielokąt. GetInteriorRingN(n) @polygon.RingN(@n + 2) @polygon.STInteriorRingN(@n + 1)
Wielokąt. NumInteriorRings @polygon.NumRings() - 1 @polygon.STNumInteriorRing()

Funkcje agregujące

.NET SQL Dodano element w
GeometryCombiner.Combine(group. Select(x => x.Property)) CollectionAggregate(Właściwość) EF Core 7.0
ConvexHull.Create(grupa. Select(x => x.Property)) ConvexHullAggregate(Właściwość) EF Core 7.0
UnaryUnionOp.Union(group. Select(x => x.Property)) UnionAggregate(Właściwość) EF Core 7.0
KopertaCombiner.CombineAsGeometry(grupa. Select(x => x.Property)) EnvelopeAggregate(Właściwość) EF Core 7.0

Dodatkowe zasoby