Entity Framework Core + Spatial Data is Raising SRID not vaild 错误
Entity Framework Core + Spatial Data is Raising SRID not vaild error
我收到以下错误:
ERROR:
SqlException: .NET Framework error during routine execution or user-defined aggregate 'geography':
System.ArgumentException: 24204: spatial reference identifier (SRID) is not valid. The specified SRID must match one of the supported SRIDs shown in the sys.spatial_reference_systems catalog view.
当我尝试将这样创建的点保存到 SQL 数据库时出现此错误
new Point(it.Lat, it.Lng)
之后我尝试使用 GeometryFactory
像这样的:
public static class GeometryHelper
{
public static IGeometryFactory GeometryFactory { get; set; }
= NtsGeometryServices.Instance.CreateGeometryFactory();
}
...
geometryFactory.CreatePoint(new Coordinate(it.Lat, it.Lng))
什么也没有。
还尝试设置特定的 SRID:
public static class GeometryHelper
{
public static IGeometryFactory GeometryFactory { get; set; }
= NtsGeometryServices.Instance.CreateGeometryFactory(4326);
}
但随后出现此错误:
SqlException: .NET Framework error during routine execution or user-defined aggregate 'geography':
System.FormatException: One of the identified elements has an invalid format.
System.FormatException:
发布问题几分钟后就解决了。关于第一个错误,解决它的正确方法是做问题中的内容:创建一个几何工厂并使用 4326 作为 SRID。您必须检查您使用的 SRID 是否在数据库 table (sys.spatial_reference_systems catalog view
) 中。显然 4326
是标准的,因为它在 Microsft 文档中。
public static class GeometryHelper
{
public static IGeometryFactory GeometryFactory { get; set; }
= NtsGeometryServices.Instance.CreateGeometryFactory(4326);
}
第二个错误与点和经纬度对象之间的映射有关。
Longitude and Latitude
Coordinates in NTS are in terms of X and Y values. To represent longitude and latitude, use X for longitude and Y for latitude. Note that this is backwards from the latitude, longitude format in which you typically see these values.
我也运行关注这个问题。这就是我最终解决它的方式。
new Point(geoLocation.Longitude, geoLocation.Latitude) { SRID = 4326 }
我只是在创建新的 Point 实例时分配了 SRID,而不是创建、工厂和创建点。
我收到以下错误:
ERROR: SqlException: .NET Framework error during routine execution or user-defined aggregate 'geography': System.ArgumentException: 24204: spatial reference identifier (SRID) is not valid. The specified SRID must match one of the supported SRIDs shown in the sys.spatial_reference_systems catalog view.
当我尝试将这样创建的点保存到 SQL 数据库时出现此错误
new Point(it.Lat, it.Lng)
之后我尝试使用 GeometryFactory
像这样的:
public static class GeometryHelper
{
public static IGeometryFactory GeometryFactory { get; set; }
= NtsGeometryServices.Instance.CreateGeometryFactory();
}
...
geometryFactory.CreatePoint(new Coordinate(it.Lat, it.Lng))
什么也没有。
还尝试设置特定的 SRID:
public static class GeometryHelper
{
public static IGeometryFactory GeometryFactory { get; set; }
= NtsGeometryServices.Instance.CreateGeometryFactory(4326);
}
但随后出现此错误:
SqlException: .NET Framework error during routine execution or user-defined aggregate 'geography': System.FormatException: One of the identified elements has an invalid format. System.FormatException:
发布问题几分钟后就解决了。关于第一个错误,解决它的正确方法是做问题中的内容:创建一个几何工厂并使用 4326 作为 SRID。您必须检查您使用的 SRID 是否在数据库 table (sys.spatial_reference_systems catalog view
) 中。显然 4326
是标准的,因为它在 Microsft 文档中。
public static class GeometryHelper
{
public static IGeometryFactory GeometryFactory { get; set; }
= NtsGeometryServices.Instance.CreateGeometryFactory(4326);
}
第二个错误与点和经纬度对象之间的映射有关。
Longitude and Latitude Coordinates in NTS are in terms of X and Y values. To represent longitude and latitude, use X for longitude and Y for latitude. Note that this is backwards from the latitude, longitude format in which you typically see these values.
我也运行关注这个问题。这就是我最终解决它的方式。
new Point(geoLocation.Longitude, geoLocation.Latitude) { SRID = 4326 }
我只是在创建新的 Point 实例时分配了 SRID,而不是创建、工厂和创建点。