我有一个名为Layer.cs的模型,它有一个名为Geometry的属性,例如:
public NetTopologySuite.Geometries.Geometry Geometry { get; set; }
我想将示例 GeoJson 文件(您可以在此处找到)转换为特征集合(NetTopologySuite.Features.FeatureCollection):
// create NetTopology JSON reader
var reader = new NetTopologySuite.IO.GeoJsonReader();
// pass geoJson's FeatureCollection to read all the features
var featureCollection = reader.Read<NetTopologySuite.Features.FeatureCollection>(josnData);
然后将其保存到 Layer.Geomerty 使用:
layer.Geometry =
NetTopologySuite.Geometries.Geometry.DefaultFactory.CreateGeometryCollection(featureCollection.Select(c => c.Geometry).ToArray());
或者
layer.Geometry =
NetTopologySuite.Geometries.Geometry.DefaultFactory.BuildGeometry(featureCollection.Select(c => c.Geometry));
但是在调用 save change 之后(在这两种情况下)我得到了休闲错误:
传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。参数 3 ("@p2"):提供的值不是数据类型 geography 的有效实例。检查源数据中的无效值。无效值的一个示例是小数位数大于精度的数值类型数据。
是否有任何干净的解决方案可以使用 EF Core 5 将 GeoJson 文件保存为 NetTopologySuite.Geometries.Geometry?