gpt4 book ai didi

mysql - DbGeometry.Distance 返回什么单位?

转载 作者:行者123 更新时间:2023-11-29 00:18:03 25 4
gpt4 key购买 nike

MSDN documentation只是将返回值定义为:

A double value that specifies the distance between the two closest points in this geometry value and other.

返回什么单位?测试值与我识别的任何内容都不匹配并且在 WHERE 子句中不起作用。

var results = db.Locations.Where(t => t.ItemPoint.Distance(targetPoint) <= 100); // 100km

注意:我使用 .NET 连接器将 MySQL 与 Entity Framework 结合使用,它不支持使用 SRID 值。

最佳答案

虽然 MSDN 文档可以提供更多信息,但它没有指定值的度量,因为它会根据 SRID(或缺少 SRID)而变化。

如果没有 SRID,Geometry 只能在平面网格(或平面)系统上工作(想想老派方格纸)。因此,您的距离答案是简单的毕达哥拉斯结果

a2 + b2 = c2>>>>>> c = SqRt(a2 + b2)

例如:

using System.Data.Entity.Spatial;

DbGeometry geom1 = DbGeometry.FromText("POINT(0 0)");
DbGeometry geom2 = DbGeometry.FromText("POINT(50 50)");

Console.WriteLine(geom1.Distance(geom2));

//Returns 70.71067811 (the square root of (50 sq'd + 50 sq'd)).

你会发现这个 blog有趣的阅​​读,跳到页面的中部,您将找到如何创建用户定义的半正弦计算方法,该方法允许您将结果转换为距离。

不过请注意,如果您不能在 EF for MySQL 中映射存储过程,那么您将需要求助于良好的老式 ADO 来获得结果。确保使用 st_distance 而不是 mbr_distance,因为 st_distance 是精确的,而 mbr_distance 将包含误报。对于 st_distance,您需要 MySQL 5.6.1。

最后,如果空间数据很重要,请尽可能考虑另一个数据库。

关于mysql - DbGeometry.Distance 返回什么单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184634/

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