【问题标题】:coordinateSystemId on DbGeographyDbGeography 上的坐标系统 ID
【发布时间】:2013-04-02 23:17:20
【问题描述】:

我需要使用 Bing 地图服务、EF 5 和 SQL Server 2008 对大量地址进行地理编码。我在 SQL 中使用地理数据类型,它被 EF 转换为 DbGeography 类型。

当我创建一个 DbGeography 对象时,像这样

string point = string.Format("POINT({0} {1})",address.Longitude,address.Latitude);
address.Location = System.Data.Spatial.DbGeography.PointFromText(point, 4326);

第二个参数调用“coordinateSystemId”。这究竟是什么?我看到的很多例子都使用 4326。 我是空间数据的新手,但我猜有一组定义明确的坐标系?我似乎找不到定义。

【问题讨论】:

    标签: .net sql-server-2008-r2 entity-framework-5 geospatial


    【解决方案1】:

    有一个完整的 StackExchange for GIS,如果你像我一样,作为一个不懂 GIS 的编码员在里面笨手笨脚,那么你就是在兜风:

    https://gis.stackexchange.com/questions/48949/epsg-3857-or-4326-for-googlemaps-openstreetmap-and-leaflet

    事实证明,地图(“GIS”)中有一个标准称为 EPSG,人们在提及它时似乎可以互换使用“EPSG”、“EPSG SRID”和“SRID”。在大多数 GPS 坐标使用中,如果您谈论的是地球(包括您从谷歌地图获得的纬度),那么您使用的是 EPSG SRID 4326,如果您谈论的是平面 2D 地图(如谷歌自定义地图) ,您说的是 EPSG SRID 3857。

    您也可以忽略有关 WGS 的一些问题。

    .Net 仅在 EPSG SRID 中寻找实际的数字 ID。如果这些只是 DbGeography 上的常量,那将非常有帮助,例如:

    public class DbGeography
    {    
        public const int SridGps = 4326;
        public const int Srid2dPlane = 3857;
    

    但没有这样的运气。

    无论如何,请考虑在您的应用程序中使它们成为常量,而不是仅仅抛出一个未记录的幻数。我们的小助手类:

    public class GeoHelper
    {
        public const int SridGoogleMaps = 4326;
        public const int SridCustomMap = 3857;
    
    
    
        public static DbGeography FromLatLng(double lat, double lng)
        {
            // http://codepaste.net/73hssg
            return DbGeography.PointFromText(
                "POINT("
                + lng.ToString() + " "
                + lat.ToString() + ")",
                SridGoogleMaps);
        }
    }
    

    【讨论】:

    • SRID 4326 有一个常量:DbGeography.DefaultCoordinateSystemId,记录为地理值 (WGS 84) 的默认坐标系 ID (SRID)。
    • 很好,这是在 .Net 4.5 中添加的 - 绝对有帮助。
    • System.Data.Spatial.DbGeography 在 .NET Core 中不可用。
    【解决方案2】:

    它是一个well defined spatial reference identifier——一个唯一标识各种空间投影、基准、单位、朝向等的某种配置的数字。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 2018-07-27
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多