【问题标题】:Mysql geometry AREA() function returns what exactly when coords are long/lat?Mysql几何AREA()函数在坐标长/纬度时返回什么?
【发布时间】:2011-08-24 07:29:15
【问题描述】:

我的问题与this similar one 有点相关,它链接到一个非常复杂的解决方案 - 但我想了解的是这样的结果:

使用 Mysql Geometry 字段存储我适当运行的小多边形

select AREA(myPolygon) where id =1 

超过它,得到一个像 2.345 这样的值。那么谁能告诉我,当存储的值是描述多边形的长/纬度集时,这个数字代表什么?

仅供参考,我正在处理的区域相对较小(停车场等),并且该区域不必精确 - 我不会关心地球的曲率。

2.345 什么?谢谢,这让我很烦。

【问题讨论】:

    标签: mysql geometry polygon latitude-longitude area


    【解决方案1】:

    简短的回答是,您的面积计算单位基本上没有意义([deg lat diff] * [deg lon diff])。即使地球的曲率不会在面积计算中发挥作用(因为您的区域是“小”),但它确实在计算纬度/经度多边形坐标之间的距离时起作用。

    由于与赤道 (http://en.wikipedia.org/wiki/Longitude#Degree_length) 的距离不同,经度的度数也不同,因此您的区域确实无法直接转换为 m^2 或 km^2。它取决于赤道的南北距离。

    如果您总是有矩形多边形,您可以只存储对角坐标并使用以下内容计算面积:PHP Library: Calculate a bounding box for a given lat/lng location

    最“正确”的做法是使用 XY(米)坐标(可能是使用 WGS-84 椭球的 UTM)存储多边形,可以使用各种库(如以下 Java 库)从纬度/经度计算:Java, convert lat/lon to UTM。然后您可以继续使用 MySQL AREA() 函数。

    【讨论】:

    • 感谢您向我解释这一点 - 很高兴您也只是给了我一个想法。在英国,我们有一个国家对应的 Eastings / Northings 系统(距离英国 btm LH 角的距离以米为单位) - 我知道转换器。我可能只会为 E/N 创建第二个字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    相关资源
    最近更新 更多