Sdílet prostřednictvím


Prostorová data ve zprostředkovateli EF Core SQL Serveru

Tato stránka obsahuje další informace o používání prostorových dat se zprostředkovatelem databáze Microsoft SQL Serveru. Obecné informace o používání prostorových dat v EF Core najdete v hlavní dokumentaci k prostorovým datům .

Zeměpisná oblast nebo geometrie

Ve výchozím nastavení se prostorové vlastnosti mapují na geography sloupce v SQL Serveru. Pokud chcete použít geometry, nakonfigurujte typ sloupce v modelu.

Zeměpisná mnohoúhelníková prstence

Při použití geography typu sloupce SQL Server ukládá další požadavky na vnější kruh (nebo shell) a vnitřní kroužky (nebo díry). Vnější kroužek musí být orientovaný proti směru hodinových ručiček a vnitřní kroužky po směru hodinových ručiček. NetTopologySuite (NTS) to ověří před odesláním hodnot do databáze.

FullGlobe

SQL Server má nestandardní typ geometrie, který představuje celý glóbus při použití geography typu sloupce. Má také způsob, jak znázornit mnohoúhelníky založené na celém glóbusu (bez vnějšího kroužku). Protokol NTS nepodporuje žádnou z těchto možností.

Upozorňující

NtS nepodporuje FullGlobe a mnohoúhelníky založené na něm.

Křivky

Jak je uvedeno v hlavní dokumentaci k spatial data , NTS v současné době nemůže představovat křivky. To znamená, že před použitím v EF Core budete muset transformovat hodnoty CircularString, CompoundCurve a CurePolygon pomocí metody STCurveToLine .

Upozorňující

NTS nepodporuje Kruhový řetězec, CompoundCurve a CurePolygon.

Mapování prostorových funkcí

Tato tabulka ukazuje, které členy NTS jsou přeloženy do kterých funkcí SQL. Všimněte si, že překlady se liší v závislosti na tom, zda je sloupec typu geografie nebo geometrie.

.NET SQL (zeměpisná oblast) SQL (geometrie) Přidáno do
EF. Functions.CurveToLine(geometrie) @geometry.STCurveToLine() @geometry.STCurveToLine() EF Core 7.0
Geometrie. Oblasti @geometry.STArea() @geometry.STArea()
Geometrie. AsBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometrie. AsText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometrie. Hranice @geometry.STBoundary()
Geometrie. Vyrovnávací paměť (vzdálenost) @geometry.STBuffer(@distance) @geometry.STBuffer(@distance)
Geometrie. Centroid @geometry.STCentroid()
Geometrie. Contains(g) @geometry.STContains(@g) @geometry.STContains(@g)
Geometrie. KonvexHull() @geometry.STConvexHull() @geometry.STConvexHull()
Geometrie. Křížky(g) @geometry.STCrosses(@g)
Geometrie. Rozdíl(jiné) @geometry.STDifference(@other) @geometry.STDifference(@other)
Geometrie. Dimenze @geometry.STDimension() @geometry.STDimension()
Geometrie. Oddělené (g) @geometry.STDisjoint(@g) @geometry.STDisjoint(@g)
Geometrie. Vzdálenost(g) @geometry.STDistance(@g) @geometry.STDistance(@g)
Geometrie. Obálky @geometry.STEnvelope()
Geometrie. EqualsTopologically(g) @geometry.STEquals(@g) @geometry.STEquals(@g)
Geometrie. GeometryType @geometry.STGeometryType() @geometry.STGeometryType()
Geometrie. GetGeometryN(n) @geometry.STGeometryN(@n + 1) @geometry.STGeometryN(@n + 1)
Geometrie. InteriorPoint @geometry.STPointOnSurface()
Geometrie. Průnik (jiné) @geometry.STIntersection(@other) @geometry.STIntersection(@other)
Geometrie. Intersects(g) @geometry.STIntersects(@g) @geometry.STIntersects(@g)
Geometrie. Isempty @geometry.STIsEmpty() @geometry.STIsEmpty()
Geometrie. IsSimple @geometry.STIsSimple()
Geometrie. Isvalid @geometry.STIsValid() @geometry.STIsValid()
Geometrie. IsWithinDistance(geom, vzdálenost) @geometry.STDistance(@geom)<= @distance @geometry.STDistance(@geom)<= @distance
Geometrie. Délka @geometry.STLength() @geometry.STLength()
Geometrie. NumGeometrie @geometry.STNumGeometries() @geometry.STNumGeometries()
Geometrie. NumPoints @geometry.STNumPoints() @geometry.STNumPoints()
Geometrie. OgcGeometryType CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... KONEC CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... KONEC
Geometrie. Překrývání (g) @geometry.STOverlaps(@g) @geometry.STOverlaps(@g)
Geometrie. PointOnSurface @geometry.STPointOnSurface()
Geometrie. Relate(g, průnikPattern) @geometry.STRelate(@g, @intersectionPattern)
Geometrie. SRID @geometry.STSrid @geometry.STSrid
Geometrie. SymmetricDifference(jiné) @geometry.STSymDifference(@other) @geometry.STSymDifference(@other)
Geometrie. ToBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometrie. ToText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometrie. Touches(g) @geometry.STTouches(@g)
Geometrie. Union(other) @geometry.STUnion(@other) @geometry.STUnion(@other)
Geometrie. V rámci(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()
Bod. M @point.M @point.M
Bod. X @point.Long @point.STX
Bod. Y @point.Lat @point.STY
Bod. Z @point.Z @point.Z
Mnohoúhelník. Vnější obvod @polygon.RingN(1) @polygon.STExteriorRing()
Mnohoúhelník. GetInteriorRingN(n) @polygon.RingN(@n + 2) @polygon.STInteriorRingN(@n + 1)
Mnohoúhelník. NumInteriorRings @polygon.NumRings() - 1 @polygon.STNumInteriorRing()

Agregační funkce

.NET SQL Přidáno do
GeometryCombiner.Combine(group. Select(x => x.Property)) CollectionAggregate(Vlastnost) EF Core 7.0
ConvexHull.Create(group. Select(x => x.Property)) ConvexHullAggregate(– vlastnost) EF Core 7.0
UnaryUnionOp.Union(group. Select(x => x.Property)) UnionAggregate(Vlastnost) EF Core 7.0
EnvelopeCombiner.CombineAsGeometry(group. Select(x => x.Property)) EnvelopeAggregate(vlastnost) EF Core 7.0

Další prostředky