Postgis 自定义函数解决台风影响范围问题
最近在做船舶运输的相关服务,需要在地图上展示台风行进方向的扇形区域,以及该区域内的船舶,扇形区域的输入参数包括: 台风行进方向 扇形半径 行进方向夹角 由于postgis内置函数并未提供直接构造扇形的功能,所以只能自己实现。思路很简单,利用半径画圆,利用半径和夹角画三角形,利用postgis的重影函数,求得两个对象的重叠部分,即是我们需要的扇形,示意图如下:(需要注意的是,三角形的边长要放大,以免相交后圆弧部分被切掉,这里直接放大一倍) 函数定义如下: lon,lat代表圆心坐标,radius是扇形半径,drc是 CREATE OR REPLACE FUNCTION "sdc_dw"."fn_sdc_sector"("lon" numeric, "lat" numeric, "radius" numeric, "drc" numeric, "bdc" numeric) RETURNS "public"."geography" AS $BODY$ DECLARE circle geometry; trigle geometry; lon1 NUMERIC; lat1 NUMERIC; lon2 NUMERIC; lat2 NUMERIC; c1 NUMERIC; c2 NUMERIC; center TEXT; rate NUMERIC; rate2 NUMERIC; rate3