【问题标题】:How Do I Calculate the Area of a Polygon in a MySQL Database When the Polygon's Points are Lat Longs?MySQL数据库中多边形的点是纬度时如何计算多边形的面积?
【发布时间】:2011-03-21 21:15:30
【问题描述】:

如何计算存储在 MySql 数据库中的多边形的面积?多边形的点是纬度。因此,度数和分钟数似乎造成了问题。

我试过了:

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

因为点是经纬度,所以我得到了奇怪的结果。

(我无法切换到 Postgre)。有没有办法在 MySQL 中做到这一点?我希望得到以平方米、平方公里或平方英里为单位的结果——这些都可以。

【问题讨论】:

  • 您是否正在使用/查看过 MySQL 的 GIS 功能? dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html
  • 您好,感谢您的留言。是的,我正在使用 MySQL 空间扩展。数据存储为 MySQL 多边形。
  • 所以你是说 AREA(my_polygon) 不起作用,因为你有 [lat longs] 而不是 [long lats]?本机格式应该是 [Long Lat],我不知道这是否会影响面积计算。就我而言,AREA(poly) 工作正常。

标签: mysql polygon latitude-longitude area


【解决方案1】:

您必须将这些纬度和经度转换为更合适的坐标系。

由于地球是一个球体,所以你说的是用球坐标计算面积。

文档说 MySQL "AREA" function 将多边形作为其输入。我想说,如果您希望面积类似于平方英里,您应该将您的纬度/经度坐标转换为具有正确单位(例如英里)的等效表面(x,y)坐标。然后将它们传递给 AREA 函数。

This link 表示其他人遇到了这个问题并解决了。

【讨论】:

  • 嗨 duffymo,谢谢您的建议。我得研究一下你提供的链接。
  • 面积函数以笛卡尔方式进行所有计算。
  • 这就是为什么我说“将您的纬度/经度坐标转换为具有正确单位(例如英里)的等效表面 (x,y) 坐标。然后将它们传递给 AREA 函数。”如果您因为没有阅读我的答案而投了我的票,那么您会感到羞耻。我不知道你做了什么才配得上“博士”的称号,但你的阅读理解需要一些努力。
猜你喜欢
  • 2016-07-01
  • 2023-03-16
  • 1970-01-01
  • 2013-11-13
  • 2012-04-07
  • 2013-10-24
  • 2020-01-24
  • 1970-01-01
相关资源
最近更新 更多