Устаревшие проекты C# использовали тип System Библиотека .Data.Entity.Spatial и собственная dll SQLServerTypes с типом DbGeography для сохранения этих записей в базе данных.
Я создаю новую утилиту в .NET8 для вставки записей и не делай хочу получить зависимость от собственных DLL, поэтому я пытаюсь использовать для этого NetTopologySuite и объект MultiPoint.
Код: Выделить всё
private MultiPoint CreateMultiPoint(DateTime departureTime, IEnumerable
positions)
{
var coordinates = new List();
var points = new List();
var geometryFactory = NtsGeometryServices.Instance.CreateGeometryFactory(srid: 4326);
foreach (var position in positions)
{
var coordinate = new CoordinateZM(position.Lon, position.Lat, position.Fal,
(position.Svd - departureTime).TotalSeconds);
coordinates.Add(coordinate);
var point = new Point(coordinate) { SRID = 4326 };
points.Add(point);
}
return new MultiPoint(points.ToArray(), geometryFactory);
Входящие табличные данные поток (TDS) Неверный поток протокола вызова удаленных процедур (RPC). Параметр 1 ("@p0"): предоставленное значение не является допустимым экземпляром географии типа данных. Проверьте исходные данные на наличие недопустимых значений. Примером недопустимого значения являются данные числового типа с масштабом, превышающим точность.
Похоже, что мультиточка, которую пытаются вставить, представляет собой MultipointZ code> и, возможно, отсутствует значение M.
Я пробовал множество различных способов создания фабрики геометрии и мог бы воспользоваться некоторой помощью, поскольку ни один из них, похоже, не работает.< /п>
Подробнее здесь: https://stackoverflow.com/questions/791 ... ography-ty