Aracılığıyla paylaş


SQL Server EF Core Sağlayıcısında Uzamsal Veriler

Bu sayfa, Microsoft SQL Server veritabanı sağlayıcısıyla uzamsal verileri kullanma hakkında ek bilgiler içerir. EF Core'da uzamsal verileri kullanma hakkında genel bilgi için ana Uzamsal Veriler belgelerine bakın.

Coğrafya veya geometri

Varsayılan olarak, uzamsal özellikler SQL Server'daki sütunlara geography eşlenir. kullanmak geometryiçin, modelinizdeki sütun türünü yapılandırın.

Coğrafya çokgen halkaları

Sütun türünü kullanırken geography , SQL Server dış halkaya (veya kabuğa) ve iç halkalara (veya deliklere) ek gereksinimler uygular. Dış halka saat yönünün tersine ve iç halkalar saat yönünde yönlendirilmelidir. NetTopologySuite (NTS), veritabanına değer göndermeden önce bunu doğrular.

FullGlobe

SQL Server, sütun türü kullanılırken tam küreyi temsil eden standart olmayan bir geometri türüne geography sahiptir. Ayrıca, çokgenleri tam küreye göre (dış halka olmadan) temsil etmenin bir yolu vardır. Bunların hiçbiri NTS tarafından desteklenmez.

Uyarı

Buna dayalı FullGlobe ve çokgenler NTS tarafından desteklenmez.

Eğriler

Ana Uzamsal Veri belgelerinde belirtildiği gibi, NTS şu anda eğrileri temsil edemez. Başka bir deyişle, EF Core'da kullanmadan önce STCurveToLine yöntemini kullanarak CircularString, CompoundCurve ve CurePolygon değerlerini dönüştürmeniz gerekir.

Uyarı

CircularString, CompoundCurve ve CurePolygon NTS tarafından desteklenmez.

Uzamsal işlev eşlemeleri

Bu tabloda hangi NTS üyelerinin hangi SQL işlevlerine çevrildiği gösterilir. Çevirilerin, sütunun coğrafya veya geometri türünde olmasına bağlı olarak farklılık gösterdiğini unutmayın.

.NET SQL (coğrafya) SQL (geometri) eklendi
EF. Functions.CurveToLine(geometri) @geometry.STCurveToLine() @geometry.STCurveToLine() EF Core 7.0
Geometri. Alan @geometry.STArea() @geometry.STArea()
Geometri. AsBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometri. AsText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometri. Sınır @geometry.STBoundary()
Geometri. Arabellek(uzaklık) @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. Çaprazlar(g) @geometry.STCrosses(@g)
Geometri. Fark (diğer) @geometry.STDifference(@other) @geometry.STDifference(@other)
Geometri. Boyut @geometry.STDimension() @geometry.STDimension()
Geometri. Kopuk(g) @geometry.STDisjoint(@g) @geometry.STDisjoint(@g)
Geometri. Uzaklık(g) @geometry.STDistance(@g) @geometry.STDistance(@g)
Geometri. Zarf @geometry.STEnvelope()
Geometri. EqualsTopologically(g) @geometry.STEquals(@g) @geometry.STEquals(@g)
Geometri. GeometryType @geometry.STGeometryType() @geometry.STGeometryType()
Geometri. GetGeometryN(n) @geometry.STGeometryN(@n + 1) @geometry.STGeometryN(@n + 1)
Geometri. İç Mekan Noktası @geometry.STPointOnSurface()
Geometri. Kesişim (diğer) @geometry.STIntersection(@other) @geometry.STIntersection(@other)
Geometri. Kesişimler(g) @geometry.STIntersects(@g) @geometry.STIntersects(@g)
Geometri. Isempty @geometry.STIsEmpty() @geometry.STIsEmpty()
Geometri. IsSimple @geometry.STIsSimple()
Geometri. Isvalid @geometry.STIsValid() @geometry.STIsValid()
Geometri. IsWithinDistance(geom, uzaklık) @geometry.STDistance(@geom)<= @distance @geometry.STDistance(@geom)<= @distance
Geometri. Uzun -luğu @geometry.STLength() @geometry.STLength()
Geometri. NumGeometries @geometry.STNumGeometries() @geometry.STNumGeometries()
Geometri. NumPoints @geometry.STNumPoints() @geometry.STNumPoints()
Geometri. OgcGeometryType CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... Son -unda CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... Son -unda
Geometri. Örtüşmeler(g) @geometry.STOverlaps(@g) @geometry.STOverlaps(@g)
Geometri. PointOnSurface @geometry.STPointOnSurface()
Geometri. Relate(g, intersectionPattern) @geometry.STRelate(@g, @intersectionPattern)
Geometri. SRID @geometry.STSrid @geometry.STSrid
Geometri. Simetrik Fark (diğer) @geometry.STSymDifference(@other) @geometry.STSymDifference(@other)
Geometri. ToBinary() @geometry.STAsBinary() @geometry.STAsBinary()
Geometri. ToText() @geometry.AsTextZM() @geometry.AsTextZM()
Geometri. Dokunmalar(g) @geometry.STTouches(@g)
Geometri. Birleşim (diğer) @geometry.STUnion(@other) @geometry.STUnion(@other)
Geometri. İçinde(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()
Nokta. M @point.M @point.M
Nokta. X @point.Long @point.STX
Nokta. Y @point.Lat @point.STY
Nokta. Z @point.Z @point.Z
Çokgen. DışTan Alma @polygon.RingN(1) @polygon.STExteriorRing()
Çokgen. GetInteriorRingN(n) @polygon.RingN(@n + 2) @polygon.STInteriorRingN(@n + 1)
Çokgen. NumInteriorRings @polygon.NumRings() - 1 @polygon.STNumInteriorRing()

Toplama işlevleri

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

Ek kaynaklar