DbGeography绘制的圆形是不希望的蛋形

时间:2015-12-09 16:17:36

标签: sql-server geometry spatial geo

我正在使用DbGeography类创建一个圆并在地图上绘制,但产品圆形形状不正确,而是蛋形。

string textPoint = String.Format("POINT ({0} {1})", longitude, latitude);
DbGeography point = DbGeography.PointFromText(textPoint, DbGeography.DefaultCoordinateSystemId); //4326 = [WGS84]
double earthsRadius = 3437.670013352;
radius = radius / earthsRadius;
DbGeography targetCircle = point.Buffer(earthsRadius);

enter image description here

1 个答案:

答案 0 :(得分:1)

GEOGRAPHY数据类型是在球体表面绘制的几何体。通过在平面上绘制它,形状将会扭曲。这就是所谓的投影。我猜你可能正在使用墨卡托投影。一个mercator投影将采用lat / long并将它们绘制成网格,即使它们是极坐标,而不是笛卡尔坐标。

想象一下剥橙。当你完成后,橘皮不是正方形,它不是完全平坦的。要做到这一点,你必须拉伸它。在墨卡托投影的情况下,您在不接触中间的同时向左和向右拉伸顶部和底部。这使得圆圈看起来像椭圆形。