Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Halaman ini mencakup informasi tambahan tentang menggunakan data spasial dengan penyedia database Microsoft SQL Server. Untuk informasi umum tentang menggunakan data spasial di EF Core, lihat dokumentasi Data Spasial utama.
Geografi atau geometri
Secara default, properti spasial dipetakan ke geography kolom di SQL Server. Untuk menggunakan geometry, konfigurasikan jenis kolom dalam model Anda.
Cincin poligon geografi
Saat menggunakan geography jenis kolom, SQL Server memberlakukan persyaratan tambahan pada cincin eksterior (atau shell) dan cincin interior (atau lubang). Cincin eksterior harus berorientasi berlawanan arah jaring jam dan interior berdering searah jajar. NetTopologySuite (NTS) memvalidasi ini sebelum mengirim nilai ke database.
FullGlobe
SQL Server memiliki jenis geometri non-standar untuk mewakili seluruh dunia saat menggunakan geography jenis kolom. Ini juga memiliki cara untuk mewakili poligon berdasarkan dunia penuh (tanpa cincin eksterior). Keduanya tidak didukung oleh NTS.
Peringatan
FullGlobe dan poligon berdasarkan itu tidak didukung oleh NTS.
Kurva
Seperti disebutkan dalam dokumentasi Data Spasial utama, NTS saat ini tidak dapat mewakili kurva. Ini berarti Anda harus mengubah nilai CircularString, CompoundCurve, dan CurePolygon menggunakan metode STCurveToLine sebelum menggunakannya di EF Core.
Peringatan
CircularString, CompoundCurve, dan CurePolygon tidak didukung oleh NTS.
Pemetaan fungsi spasial
Tabel ini menunjukkan anggota NTS mana yang diterjemahkan ke dalam fungsi SQL mana. Perhatikan bahwa terjemahan bervariasi tergantung pada apakah kolom berjenis geografi atau geometri.
| .NET | SQL (geografi) | SQL (geometri) | Ditambahkan dalam |
|---|---|---|---|
| EF. Functions.CurveToLine(geometri) | @geometry.STCurveToLine() | @geometry.STCurveToLine() | EF Core 7.0 |
| Geometri. Area | @geometry.STArea() | @geometry.STArea() | |
| Geometri. AsBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| Geometri. AsText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Geometri. Batas | @geometry.STBoundary() | ||
| Geometri. Buffer(jarak) | @geometry.STBuffer(@distance) | @geometry.STBuffer(@distance) | |
| Geometri. Sentroid | @geometry.STCentroid() | ||
| Geometri. Contains(g) | @geometry.STContains(@g) | @geometry.STContains(@g) | |
| Geometri. ConvexHull() | @geometry.STConvexHull() | @geometry.STConvexHull() | |
| Geometri. Salib(g) | @geometry.STCrosses(@g) | ||
| Geometri. Perbedaan(lainnya) | @geometry.STDifference(@other) | @geometry.STDifference(@other) | |
| Geometri. Dimensi | @geometry.STDimension() | @geometry.STDimension() | |
| Geometri. Disjoint(g) | @geometry.STDisjoint(@g) | @geometry.STDisjoint(@g) | |
| Geometri. Jarak(g) | @geometry.STDistance(@g) | @geometry.STDistance(@g) | |
| Geometri. Amplop | @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. InteriorPoint | @geometry.STPointOnSurface() | ||
| Geometri. Persimpangan(lainnya) | @geometry.STIntersection(@other) | @geometry.STIntersection(@other) | |
| Geometri. Intersects(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, jarak) | @geometry.STDistance(@geom)<= @distance | @geometry.STDistance(@geom)<= @distance | |
| Geometri. Panjang | @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 ... AKHIR | CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... AKHIR | |
| Geometri. Tumpang tindih(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. SymmetricDifference(lainnya) | @geometry.STSymDifference(@other) | @geometry.STSymDifference(@other) | |
| Geometri. ToBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| Geometri. ToText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Geometri. Sentuhan(g) | @geometry.STTouches(@g) | ||
| Geometri. Union(lainnya) | @geometry.STUnion(@other) | @geometry.STUnion(@other) | |
| Geometri. Dalam(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() | |
| Titik. M | @point.M | @point.M | |
| Titik. X | @point.Long | @point.STX | |
| Titik. Y | @point.Lat | @point.STY | |
| Titik. Z | @point.Z | @point.Z | |
| Poligon. EksteriorRing | @polygon.RingN(1) | @polygon.STExteriorRing() | |
| Poligon. GetInteriorRingN(n) | @polygon.RingN(@n + 2) | @polygon.STInteriorRingN(@n + 1) | |
| Poligon. NumInteriorRings | @polygon.NumRings() - 1 | @polygon.STNumInteriorRing() |
Fungsi agregat
| .NET | SQL | Ditambahkan dalam |
|---|---|---|
| GeometryCombiner.Combine(group. Pilih(x => x.Property)) | CollectionAggregate(Property) | EF Core 7.0 |
| ConvexHull.Create(group. Pilih(x => x.Property)) | ConvexHullAggregate(Properti) | EF Core 7.0 |
| UnaryUnionOp.Union(group. Pilih(x => x.Property)) | UnionAggregate(Properti) | EF Core 7.0 |
| EnvelopeCombiner.CombineAsGeometry(group. Pilih(x => x.Property)) | AmplopAggregate(Properti) | EF Core 7.0 |