首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbGeography上的coordinateSystemId

DbGeography上的coordinateSystemId
EN

Stack Overflow用户
提问于 2013-04-03 07:17:21
回答 2查看 5.5K关注 0票数 12

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

当我创建一个DbGeography对象时,如下所示

代码语言:javascript
复制
string point = string.Format("POINT({0} {1})",address.Longitude,address.Latitude);
address.Location = System.Data.Spatial.DbGeography.PointFromText(point, 4326);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-29 15:08:41

有一个完整的地理信息系统StackExchange,如果你像我一样,作为一个不懂地理信息系统的程序员笨手笨脚地进入其中,你就会遇到麻烦:

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

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

关于WGS还有一些可以忽略的地方。

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

代码语言:javascript
复制
public class DbGeography
{    
    public const int SridGps = 4326;
    public const int Srid2dPlane = 3857;

但没有这样的运气。

无论如何,请考虑在您的应用程序中将它们设置为常量,而不是只抛出一个没有文档记录的魔术数字。我们的小助手类:

代码语言:javascript
复制
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);
    }
}
票数 14
EN

Stack Overflow用户

发布于 2013-04-03 07:21:22

它是一个well defined spatial reference identifier -一个唯一标识各种空间投影、基准、单位、面等的特定配置的数字。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15776161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档