当多边形的点是纬度和经度时,在MySQL数据库中如何计算多边形的面积?

5

我该如何计算存储在MySql数据库中的多边形的面积?这些多边形的点是纬度和经度。因此,度数和分钟似乎会引起问题。

我已经尝试过:

SELECT AREA( my_polygon ) 
FROM  `my_table` 
WHERE name =  'Newport'

由于这些点是经纬度,所以我得到了奇怪的结果。

(我无法切换到Postgre)。在MySQL中有没有方法可以做到这一点?我想要得到平方米、平方千米或平方英里的结果-任何一个都可以。


你是否使用过/查看了MySQL的GIS功能?http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html - relet
嗨relet,感谢您的信息。是的,我正在使用MySQL空间扩展。数据存储为MySQL多边形。 - Laxmidi
所以你的意思是AREA(my_polygon)不起作用,因为你有[lat longs]而不是[long lats]?本地格式应该是[Long Lat],我不知道这是否会影响面积计算。在我的情况下,AREA(poly)运行良好。 - derickito
1个回答

2
你需要将那些纬度和经度转换成更合适的坐标系。
由于地球是一个球体,所以你正在谈论计算球面坐标系中的区域。
文档显示MySQL的"AREA"函数以多边形作为输入。如果你想要将面积表示为类似平方英里之类的单位,你应该将你的纬度/经度坐标转换为等效的表面(x,y)坐标,并使用正确的单位(例如英里)。然后将它们传递给AREA函数。 这个链接表明有人遇到了这个问题并解决了它。

嗨,duffymo, 谢谢您的建议。我将不得不学习您提供的链接。 - Laxmidi
区域函数以笛卡尔方式进行所有计算。 - SO Stinks
1
这就是为什么我说“将您的纬度/经度坐标转换为具有正确单位(例如英里)的等效表面(x,y)坐标。然后将它们传递到AREA函数中。”如果您因为没有阅读我的答案而对我投反对票,那么您应该感到羞耻。我不知道您做了什么才获得“博士”头衔,但您的阅读理解需要改进。 - duffymo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接