【问题标题】:DbGeography drawn circle is unwantedly egg shapedDbGeography 绘制的圆圈是不必要的蛋形
【发布时间】:2016-03-15 00:22:14
【问题描述】:

我正在使用 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);

【问题讨论】:

    标签: sql-server geometry spatial geo


    【解决方案1】:

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

    想象剥橘子。完成后,橘子皮不是方形的,也不是完全平坦的。为此,您必须拉伸它。在墨卡托投影的情况下,您在不接触中间的情况下左右拉伸顶部和底部。这使圆形看起来像椭圆形。

    【讨论】:

    • @Xerxes,好吧,这并不是真正需要补救的东西,它是可取的,沿绘制的椭圆形的所有点与中心的距离相同。您也许可以切换到不同的投影,这可能会显示失真较小的结果,但这有其自身的问题和需要考虑的警告。
    • 有一篇关于预测的完整维基百科文章以及每种预测的优缺点。 en.wikipedia.org/wiki/Map_projection 看起来您正在寻找保形投影。但正如@hcaelxxam 所提到的,你获得的一切都需要权衡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多