| 
					
				 | 
			
			
				@@ -0,0 +1,35 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<?xml version="1.0" encoding="UTF-8"?> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<mapper namespace="com.onemap.analyse.mapper.raster.DsmMapper"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <select id="getAveDsm" resultType="Double"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WITH poly AS (SELECT public.st_geomfromtext(#{geomWkt}, 4326) AS geom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SELECT AVG((gv).val) AS avg_dsm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        FROM (SELECT public.st_clip(rast, 1, geom, false) AS clipped_rast 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              FROM raster.sy_dsm, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   poly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              WHERE public.st_intersects(rast, geom)) AS clipped, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             LATERAL public.st_pixelaspoints(clipped_rast) AS gv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WHERE (gv).val IS NOT NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <select id="getMaxDsm" resultType="Double"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WITH poly AS (SELECT public.st_geomfromtext(#{geomWkt}, 4326) AS geom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SELECT MAX((gv).val) AS max_dsm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        FROM (SELECT public.st_clip(rast, 1, geom, false) AS clipped_rast 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              FROM raster.sy_dsm, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   poly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              WHERE public.st_intersects(rast, geom)) AS clipped, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             LATERAL public.st_pixelaspoints(clipped_rast) AS gv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WHERE (gv).val IS NOT NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <select id="getMinDsm" resultType="Double"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WITH poly AS (SELECT public.st_geomfromtext(#{geomWkt}, 4326) AS geom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SELECT MIN((gv).val) AS min_dsm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        FROM (SELECT public.st_clip(rast, 1, geom, false) AS clipped_rast 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              FROM raster.sy_dsm, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   poly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              WHERE public.st_intersects(rast, geom)) AS clipped, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             LATERAL public.st_pixelaspoints(clipped_rast) AS gv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WHERE (gv).val IS NOT NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</mapper> 
			 |