我需要使用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。我是空间数据的新手,但我猜有一套定义良好的坐标系?我似乎找不到一个定义。
发布于 2014-08-29 15:08:41
有一个完整的地理信息系统StackExchange,如果你像我一样,作为一个不懂地理信息系统的程序员笨手笨脚地进入其中,你就会遇到麻烦:
事实证明,在地图("GIS")中有一个称为EPSG的标准,当人们提到它时,似乎可以互换地使用"EPSG“、"EPSG SRID”和"SRID“。在大多数GPS坐标的使用中,如果你谈论的是地球(包括你从谷歌地图获得的LatLngs ),你使用的是EPSG SRID4326,如果你谈论的是平面2D地图(如谷歌自定义地图),你谈论的是EPSG SRID3857。
关于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);
}
}发布于 2013-04-03 07:21:22
它是一个well defined spatial reference identifier -一个唯一标识各种空间投影、基准、单位、面等的特定配置的数字。
https://stackoverflow.com/questions/15776161
复制相似问题