已知条件
- 一个二维面
- 一条三维线
计算要求
- 计算二维面在三维线上的投影
二维面
--二维面对象
SELECT ST_GeomFromText('SRID=4490;
POLYGON((60 40,60 -40,-60 -40,-60 40,60 40))') AS GEOM_POLYIGON
三维线
--三维线对象
SELECT ST_GeomFromText('SRID=4490;MULTILINESTRING Z((
60.01 39.02 1000,
60.02 39.03 2000,
60.03 39.04 2500,
60.01 60.02 1000))') AS GEOM_LINE
计算关键过程
主要思路:将二维面对象转换为
POLYHEDRALSURFACE
对象。
--其中1500来自三维线对象的最大和最小的Z值
SELECT
ST_3DIntersection(
ST_Extrude(GEOM_POLYIGON,0,0,1500),
GEOM_LINE
) AS RESULT
对地下空间的计算
上述方法只适用于地上三维对象的计算。如果是地下三维对象,应当将ST_Extrude对象的全部Z值减去高差的1/2。