Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta página se incluye información adicional sobre el uso de datos espaciales con el proveedor de bases de datos de Microsoft SQL Server. Para obtener información general sobre el uso de datos espaciales en EF Core, consulte la documentación principal de datos espaciales .
Geografía o geometría
De forma predeterminada, las propiedades espaciales se asignan a geography columnas de SQL Server. Para usar geometry, configure el tipo de columna en el modelo.
Anillos poligonales geográficos
Al usar el geography tipo de columna, SQL Server impone requisitos adicionales en el anillo exterior (o shell) y los anillos interiores (o agujeros). El anillo exterior debe orientarse en sentido contrario a las agujas del reloj y los anillos interiores en sentido de las agujas del reloj.
NetTopologySuite (NTS) valida esto antes de enviar valores a la base de datos.
FullGlobe
SQL Server tiene un tipo de geometría no estándar para representar todo el globo al usar el tipo de geography columna. También tiene una manera de representar polígonos basados en todo el globo (sin un anillo exterior). NtS no admite ninguno de estos elementos.
Advertencia
FullGlobe y polígonos basados en él no son compatibles con NTS.
Curvas
Como se mencionó en la documentación principal de datos espaciales , NTS actualmente no puede representar curvas. Esto significa que deberá transformar los valores CircularString, CompoundCurve y CurePolygon mediante el método STCurveToLine antes de usarlos en EF Core.
Advertencia
NTS no admite CircularString, CompoundCurve y CurePolygon.
Asignaciones de funciones espaciales
En esta tabla se muestra en qué funciones SQL se traducen los miembros NTS. Tenga en cuenta que las traducciones varían dependiendo de si la columna es de tipo "geography" o "geometry".
| .NET | SQL (geografía) | SQL (geometría) | Agregado en |
|---|---|---|---|
| EF.Functions.CurveToLine(geometry) | @geometry.STCurveToLine() | @geometry.STCurveToLine() | EF Core 7.0 |
| geometry. Área | @geometry.STArea() | @geometry.STArea() | |
| geometry.AsBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| geometry.AsText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| geometry. Límite | @geometry.STBoundary() | ||
| geometry. Buffer(distance) | @geometry.STBuffer(@distance) | @geometry.STBuffer(@distance) | |
| geometry. Centroid | @geometry.STCentroid() | ||
| geometry. Contains(g) | @geometry.STContains(@g) | @geometry.STContains(@g) | |
| geometry. ConvexHull() | @geometry.STConvexHull() | @geometry.STConvexHull() | |
| geometry. Crosses(g) | @geometry.STCrosses(@g) | ||
| geometry.Diferencia(otro) | @geometry.STDifference(@other) | @geometry.STDifference(@other) | |
| geometry. Dimensión | @geometry.STDimension() | @geometry.STDimension() | |
| geometry. Disjoint(g) | @geometry.STDisjoint(@g) | @geometry.STDisjoint(@g) | |
| geometry.Distance(g) | @geometry.STDistance(@g) | @geometry.STDistance(@g) | |
| geometry.Envolvente | @geometry.STEnvelope() | ||
| geometry. EqualsTopologically(g) | @geometry.STEquals(@g) | @geometry.STEquals(@g) | |
| geometry. GeometryType | @geometry.STGeometryType() | @geometry.STGeometryType() | |
| geometry.GetGeometryN(n) | @geometry.STGeometryN(@n + 1) | @geometry.STGeometryN(@n + 1) | |
| geometry.InteriorPoint | @geometry.STPointOnSurface() | ||
| geometry. Intersección(otro) | @geometry.STIntersection(@other) | @geometry.STIntersection(@other) | |
| geometry. Intersects(g) | @geometry.STIntersects(@g) | @geometry.STIntersects(@g) | |
| geometry.IsEmpty | @geometry.STIsEmpty() | @geometry.STIsEmpty() | |
| geometry.IsSimple | @geometry.STIsSimple() | ||
| geometry.IsValid | @geometry.STIsValid() | @geometry.STIsValid() | |
| geometry. IsWithinDistance(geom, distance) | @geometry.STDistance(@geom) <= @distance | @geometry.STDistance(@geom) <= @distance | |
| geometry. Longitud | @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 ... END | CASE @geometry.STGeometryType() CUANDO N'Point' THEN 1 ... END | |
| geometry. Superposiciones(g) | @geometry.STOverlaps(@g) | @geometry.STOverlaps(@g) | |
| geometry.PointOnSurface | @geometry.STPointOnSurface() | ||
| geometry. Relate(g, intersectionPattern) | @geometry.STRelate(@g, @intersectionPattern) | ||
| geometry.SRID | @geometry.STSrid | @geometry.STSrid | |
| geometry.SymmetricDifference(other) | @geometry.STSymDifference(@other) | @geometry.STSymDifference(@other) | |
| geometry.ToBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| geometry.ToText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| geometry. Toques(g) | @geometry.STTouches(@g) | ||
| geometry. Union(other) | @geometry.STUnion(@other) | @geometry.STUnion(@other) | |
| geometry.Within(g) | @geometry.STWithin(@g) | @geometry.STWithin(@g) | |
| colecciónDeGeometría[i] | @geometryCollection.STGeometryN(@i + 1) | @geometryCollection.STGeometryN(@i + 1) | |
| geometryCollection.Contar | @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 (verifica si la línea está cerrada) | @lineString.STIsClosed() | @lineString.STIsClosed() | |
| lineString.IsRing | @lineString.IsRing() | ||
| lineString.PuntoDeInicio | @lineString.STStartPoint() | @lineString.STStartPoint() | |
| multiLineString.EstáCerrado | @multiLineString.STIsClosed() | @multiLineString.STIsClosed() | |
| punto M | @point.M | @point.M | |
| punto.X | @point.Long | @point.STX | |
| point.Y | @point.Lat | @point.STY | |
| punto Z | @point.Z | @point.Z | |
| polígono.AnilloExterior | @polygon.RingN(1) | @polygon.STExteriorRing() | |
| polígono.GetInteriorRingN(n) | @polygon.RingN(@n + 2) | @polygon.STInteriorRingN(@n + 1) | |
| polígono. NumInteriorRings | @polygon.NumRings() - 1 | @polygon.STNumInteriorRing() |
Funciones agregadas
| .NET | SQL | Agregado en |
|---|---|---|
| GeometryCombiner.Combine(group.Select(x => x.Property)) | CollectionAggregate(Property) | EF Core 7.0 |
| ConvexHull.Create(group.Select(x => x.Property)) | ConvexHullAggregate(Property) | EF Core 7.0 |
| UnaryUnionOp.Union(group.Select(x => x.Property)) | AggregateUnión(Propiedad) | EF Core 7.0 |
| EnvelopeCombiner.CombineAsGeometry(group.Select(x => x.Property)) | EnvelopeAggregate(Property) | EF Core 7.0 |