gpt4 book ai didi

.net - DbGeography 上的坐标系统 ID

转载 作者:行者123 更新时间:2023-12-04 00:47:29 25 4
gpt4 key购买 nike

我需要使用 Bing Map 服务、EF 5 和 SQL Server 2008 对大量地址进行地理编码。我在 SQL 中使用 geography 数据类型,它由 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。
我是空间数据的新手,但我猜有一组定义明确的坐标系?我似乎找不到定义。

最佳答案

有一个用于 GIS 的整个 StackExchange,如果你像我一样,作为一个不了解 GIS 的编码员在那里笨手笨脚,那么你就在兜风:

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

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

还有一些关于 WGS 的错误,您可以忽略。

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

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

但没有这样的运气。

无论如何,请考虑在您的应用程序中使它们成为常量,而不是仅仅抛出一个未记录的魔数(Magic Number)。我们的小 helper 类(class):
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);
}
}

关于.net - DbGeography 上的坐标系统 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com