|
|
@@ -1109,8 +1109,49 @@ END";
|
|
|
$sql['view__CRM_LISTA_ZASOBOW_ALIASY_view']="CREATE or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `CRM_LISTA_ZASOBOW_ALIASY_view` AS select `CRM_LISTA_ZASOBOW`.`ID` AS `ID`,`CRM_LISTA_ZASOBOW`.`ID` AS `CRM_LISTA_ZASOBOW_ID`,`ALIAS_CHILDS_FROM_CRM_LISTA_ZASOBOW`(`CRM_LISTA_ZASOBOW`.`ID`) AS `CHILDS`,`ALIAS_PATH_FROM_CRM_LISTA_ZASOBOW`(`CRM_LISTA_ZASOBOW`.`ID`) AS `PATH` from `CRM_LISTA_ZASOBOW`";
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+// funkcja do liczenia dlugosci LINESTRING
|
|
|
+$sql['drop_function_GDistance']="drop function if exists GDistance";
|
|
|
+$sql['create_function_GDistance']="CREATE DEFINER=`root`@`localhost` FUNCTION `GDistance_test`(`LS` LINESTRING) RETURNS double
|
|
|
+ NO SQL
|
|
|
+BEGIN
|
|
|
+ DECLARE LON_A, LAT_A, LON_B, LAT_B, R, RESULT DOUBLE;
|
|
|
+ DECLARE A, B POINT;
|
|
|
+ DECLARE I, N INT;
|
|
|
+ -- if LS is not geometry type then return 0
|
|
|
+ -- if GeometryType is not 'LINESTRING' then return 1
|
|
|
+ -- if GeometryType is 'LINESTRING' then return length
|
|
|
+
|
|
|
+ IF LS is null or GeometryType(LS) is null THEN
|
|
|
+ RETURN 0;
|
|
|
+ END IF;
|
|
|
+ IF 'LINESTRING' != GeometryType(LS) THEN
|
|
|
+ RETURN 1;
|
|
|
+ END IF;
|
|
|
+
|
|
|
+ SET R = 6372795.477598;
|
|
|
+
|
|
|
+ SET N = NUMPOINTS(LS);
|
|
|
+ IF N is null or N = 1 THEN
|
|
|
+ RETURN 1;
|
|
|
+ END IF;
|
|
|
+
|
|
|
+ SET RESULT = 0;
|
|
|
+ SET I = 1;
|
|
|
+
|
|
|
+ WHILE I < N DO
|
|
|
+ SET A = POINTN(LS, I);
|
|
|
+ SET B = POINTN(LS, I + 1);
|
|
|
+ SET LON_A = RADIANS(X(A));
|
|
|
+ SET LAT_A = RADIANS(Y(A));
|
|
|
+ SET LON_B = RADIANS(X(B));
|
|
|
+ SET LAT_B = RADIANS(Y(B));
|
|
|
+ SET RESULT = RESULT + ACOS(SIN(LAT_A) * SIN(LAT_B) + COS(LAT_A) * COS(LAT_B) * COS(LON_A - LON_B));
|
|
|
+ SET I = I + 1;
|
|
|
+ END WHILE;
|
|
|
+
|
|
|
+ SET RESULT = RESULT * R;
|
|
|
+ RETURN RESULT;
|
|
|
+END";
|
|
|
|
|
|
|
|
|
$sql['event_shedule_init']="SET GLOBAL event_scheduler = ON";
|