Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта страница содержит дополнительные сведения об использовании пространственных данных с поставщиком базы данных Microsoft SQL Server. Общие сведения об использовании пространственных данных в EF Core см. в основной документации по пространственным данным .
География или геометрия
По умолчанию пространственные свойства сопоставляются со geography столбцами в SQL Server. Чтобы использовать geometry, настройте тип столбца в модели.
Круги географических многоугольников
При использовании geography типа столбца SQL Server накладывает дополнительные требования к внешнему кольцу (или оболочке) и внутренним кольцам (или отверстиям). Внешнее кольцо должно быть ориентировано на счетчик с часовой стрелкой и внутренние кольца по часовой стрелке. NetTopologySuite (NTS) проверяет это перед отправкой значений в базу данных.
FullGlobe
SQL Server имеет нестандартный тип геометрии для представления полного земного шара при использовании типа столбца geography . Он также имеет способ представить многоугольники на основе полного земного шара (без внешнего кольца). Ни в чем из них не поддерживаются NTS.
Предупреждение
FullGlobe и многоугольники, основанные на нем, не поддерживаются NTS.
Кривые
Как упоминание в основной документации по пространственным данным, NTS в настоящее время не может представлять кривые. Это означает, что необходимо преобразовать значения CircularString, CompoundCurve и CurePolygon с помощью метода STCurveToLine перед их использованием в EF Core.
Предупреждение
CircularString, CompoundCurve и CurePolygon не поддерживаются NTS.
Сопоставления пространственных функций
В этой таблице показано, какие элементы NTS преобразуются в функции SQL. Обратите внимание, что переводы различаются в зависимости от того, имеет ли столбец тип географии или геометрии.
| .NET | SQL (география) | SQL (geometry) | Добавлено в |
|---|---|---|---|
| EF. Functions.CurveToLine(geometry) | @geometry.STCurveToLine() | @geometry.STCurveToLine() | EF Core 7.0 |
| Геометрии. Области | @geometry.STArea() | @geometry.STArea() | |
| Геометрии. AsBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| Геометрии. AsText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Геометрии. Границы | @geometry.STBoundary() | ||
| Геометрии. Buffer(distance) | @geometry.STBuffer(@distance) | @geometry.STBuffer(@distance) | |
| Геометрии. Центроид | @geometry.STCentroid() | ||
| Геометрии. Contains(g) | @geometry.STContains(@g) | @geometry.STContains(@g) | |
| Геометрии. ConvexHull() | @geometry.STConvexHull() | @geometry.STConvexHull() | |
| Геометрии. Кресты(g) | @geometry.STCrosses(@g) | ||
| Геометрии. Разница(другие) | @geometry.STDifference(@other) | @geometry.STDifference(@other) | |
| Геометрии. Размер | @geometry.STDimension() | @geometry.STDimension() | |
| Геометрии. Disjoint(g) | @geometry.STDisjoint(@g) | @geometry.STDisjoint(@g) | |
| Геометрии. Distance(g) | @geometry.STDistance(@g) | @geometry.STDistance(@g) | |
| Геометрии. Конверт | @geometry.STEnvelope() | ||
| Геометрии. EqualsTopologically(g) | @geometry.STEquals(@g) | @geometry.STEquals(@g) | |
| Геометрии. GeometryType | @geometry.STGeometryType() | @geometry.STGeometryType() | |
| Геометрии. GetGeometryN(n) | @geometry.STGeometryN(@n + 1) | @geometry.STGeometryN(@n + 1) | |
| Геометрии. InteriorPoint | @geometry.STPointOnSurface() | ||
| Геометрии. Пересечение (другое) | @geometry.STIntersection(@other) | @geometry.STIntersection(@other) | |
| Геометрии. Intersects(g) | @geometry.STIntersects(@g) | @geometry.STIntersects(@g) | |
| Геометрии. Isempty | @geometry.STIsEmpty() | @geometry.STIsEmpty() | |
| Геометрии. IsSimple | @geometry.STIsSimple() | ||
| Геометрии. Isvalid | @geometry.STIsValid() | @geometry.STIsValid() | |
| Геометрии. IsWithinDistance(geom, расстояние) | @geometry.STDistance(@geom)<= @distance | @geometry.STDistance(@geom)<= @distance | |
| Геометрии. Длина | @geometry.STLength() | @geometry.STLength() | |
| Геометрии. NumGeometries | @geometry.STNumGeometries() | @geometry.STNumGeometries() | |
| Геометрии. NumPoints | @geometry.STNumPoints() | @geometry.STNumPoints() | |
| Геометрии. OgcGeometryType | СЛУЧАЙ @geometry.STGeometryType() , КОГДА N'Point' THEN 1 ... КОНЕЦ | СЛУЧАЙ @geometry.STGeometryType() , КОГДА N'Point' THEN 1 ... КОНЕЦ | |
| Геометрии. Перекрытие(г) | @geometry.STOverlaps(@g) | @geometry.STOverlaps(@g) | |
| Геометрии. PointOnSurface | @geometry.STPointOnSurface() | ||
| Геометрии. Отношение(g, пересечениеPattern) | @geometry.STRelate(@g, @intersectionPattern) | ||
| Геометрии. SRID | @geometry.STSrid | @geometry.STSrid | |
| Геометрии. СимметричнаяDifference(other) | @geometry.STSymDifference(@other) | @geometry.STSymDifference(@other) | |
| Геометрии. ToBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| Геометрии. ToText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Геометрии. Касания(g) | @geometry.STTouches(@g) | ||
| Геометрии. Union(other) | @geometry.STUnion(@other) | @geometry.STUnion(@other) | |
| Геометрии. В(г) | @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() | |
| Точки. М | @point.M | @point.M | |
| Точки. X | @point.Long | @point.STX | |
| Точки. Y | @point.Lat | @point.STY | |
| Точки. Z | @point.Z | @point.Z | |
| Полигона. Внешний ринг | @polygon.RingN(1) | @polygon.STExteriorRing() | |
| Полигона. GetInteriorRingN(n) | @polygon.RingN(@n + 2) | @polygon.STInteriorRingN(@n + 1) | |
| Полигона. NumInteriorRings | @polygon.NumRings() - 1 | @polygon.STNumInteriorRing() |
Агрегатные функции
| .NET | SQL | Добавлено в |
|---|---|---|
| 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)) | UnionAggregate(Property) | EF Core 7.0 |
| EnvelopeCombiner.CombineAsGeometry(group. Select(x => x.Property)) | EnvelopeAggregate(Property) | EF Core 7.0 |