2010-07-27 105 views
5

如何计算存储在MySql数据库中的面的面积?多边形的点是lat long。所以,度数和分钟似乎导致了一个问题。如何计算多边形的点数为Lat长时,MySQL数据库中的多边形面积?

我已经试过:

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

因为,点纬度多头,我会有奇怪的结果。

(我无法切换到Postgre)。有没有办法在MySQL中做到这一点?我希望以平方米或平方公里或平方英里得到结果 - 其中任何一项都可以。

+0

你使用/你看看MySQL的GIS功能吗? http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html – relet 2010-07-27 23:03:10

+0

嗨relet, 感谢您的消息。是的,我正在使用MySQL空间扩展。数据存储为MySQL多边形。 – Laxmidi 2010-07-28 16:38:23

+0

所以你说AREA(my_polygon)不工作,因为你有[lat longs]而不是[long lats]?原生格式应该是[Long Lat],我不知道这是否会影响面积计算。在我的情况下,AREA(聚)工作正常。 – derickito 2014-07-30 18:31:47

回答

3

您必须将这些拉伸和长条转换为更合适的坐标系。

由于地球是一个球体,因此您正在讨论的是以球面坐标计算面积。

该文档说,MySQL "AREA" function采用多边形作为其输入。我想说,如果你想把面积看作平方英里,你应该用合适的单位(例如英里)将你的纬度/经度坐标转换成等效的表面(x,y)坐标。然后将这些传递给AREA函数。

This link暗示其他人有这个问题并解决它。

+0

嗨duffymo, 谢谢你的建议。我必须研究你提供的链接。 – Laxmidi 2010-07-28 16:48:07

+0

区域函数以笛卡尔方式进行所有计算。 – 2010-09-15 02:59:07

+1

这就是为什么我说“用右单位(例如英里)将你的纬度/经度坐标转换成等效曲面(x,y)坐标,然后将它们传递到AREA函数中。”如果你因为你没有阅读我的答案而投票给我,那么对你感到羞耻。我不知道你做了什么来赢得“博士”的称号,但是你的阅读理解需要一些工作。 – duffymo 2010-09-15 09:28:14