ORACLE PL / SQL中是否有一个函数来计算多边形的面积?

时间:2014-01-28 04:55:28

标签: oracle plsql polygon polygons oracle-spatial

根据oracle空间数据(SDO_GEOMETRY)的多边形。多边形由地理坐标形成,并且可以是不规则的。

2 个答案:

答案 0 :(得分:6)

以下函数返回GEOMETRY的区域,它也适用于包括带孔的多边形的任何多边形。

SELECT SDO_GEOM.SDO_AREA(<geometry_column_name>, <tolerance_value>) 
FROM   <table_name>;

其中TOLERANCE_VALUE用于将精度级别与空间数据相关联。有关详细信息,请参阅here

答案 1 :(得分:1)

此外,您可以指定应返回结果的单位:

select state, county, sdo_geom.sdo_area(geom, 0.005, 'unit=sq_mile')
from us_counties;

以平方英里为单位返回该区域。如果未指定任何单位,则如果几何在大地坐标系中,则结果将以平方米为单位,在投影时坐标系的距离单位的平方。这通常是平方米,因为大多数投影以米为单位(但不是全部:美国的一些预测以英尺为单位)。

我建议您始终指定一个明确的单位,即使您想要平方米。这使您的代码更具可读性,并解除任何含糊之处。

您可以在此处找到可用的区域单位:

select distinct short_name, unit_of_meas_name 
from sdo_units_of_measure 
where unit_of_meas_type = 'area'; 

返回

SHORT_NAME           UNIT_OF_MEAS_NAME
-------------------- ------------------------------
ACRE                 Acre
HECTARE              Hectare
PERCH                Perch
ROOD                 Rood
SQ_KM                Square Kilometer
SQ_KILOMETER         Square Kilometer
SQ_M                 Square Meter
SQ_METER             Square Meter
SQ_CM                Square Centimeter
SQ_CENTIMETER        Square Centimeter
SQ_MM                Square Millimeter
SQ_MILLIMETER        Square Millimeter
SQ_MILE              Square Mile
SQ_FT                Square Foot
SQ_FOOT              Square Foot
SQ_IN                Square Inch
SQ_INCH              Square Inch
SQ_YARD              Square Yard
SQ_CH                Square Chain
SQ_CHAIN             Square Chain
SQ_LI                Square Link
SQ_LINK              Square Link
SQ_ROD               Square Rod
SQ_SURVEY_FOOT       Square Survey Feet
USER-SQ-HALF-METER   USER-SQ-HALF-METER

25 rows selected.