--Original geometry
select St_asEWKB(geom)
from eu_geom_35_topo.edge
WHERE edge_id = 81018;
--"\001\002\000\000 \346\020\000\000\035\000\000\000\344,\354i\207?\362\277\236\230\365b(\343G@\016\333\026e6H\362\277I\205\261\205 \343G@\351+H3\026M\362\277:\0363P\031\343G@\251M\234\334\357P\362\2773\371f\233\033\343G@}\256\266b\177Y\362\277,\361\200\262)\343G@u\216\001\331\353]\362\277\320\325V\354/\343G@S?o*Ra\362\277\327\027\011m9\343G@\364\211<I\272f\362\277\310\007=\233U\343G@\270#\234\026\274h\362\2773\247\313bb\343G@\252+\237\345yp\362\277Ae\374\373\214\343G@m\305\376\262{r\362\277\272N#-\225\343G@\227\213\370N\314z\362\277$\356\261\364\241\343G@\345'\325>\035\217\362\277\217\215@\274\256\343G@6\315;N\321\221\362\277d\222\221\263\260\343G@\204\022f\332\376\225\362\277\035\346\313\013\260\343G@\3436\032\300[\240\362\277\262c#\020\257\343G@\\Z\015\211{\254\362\277r\371\017\351\267\343G@1\323\366\257\254\264\362\277O#-\225\267\343G@+\023~\251\237\267\362\277\326V\354/\273\343G@-C\034\353\342\266\362\277U\023D\335\007\344G@\021\344\240\204\231\266\362\277\025\343\374M(\344G@e\031\342X\027\267\362\277c\356ZB>\344G@\235\327\330%\252\267\362\277\343\374M(D\344G@YiR\012\272\275\362\277#\204G\033G\344G@\243\036\242\321\035\304\362\277\261\371\2706T\344G@\004s\364\370\275\315\362\277\352[\346tY\344G@Pp\261\242\006\323\362\277\361\235\230\365b\344G@bg\012\235\327\330\362\277\016O\257\224e\344G@\177\366#Ed\330\362\277\361\272~\301n\344G@"

--Geometry after simplification
select st_asEWKB(SimplifyUTM(geom, 35))
from eu_geom_35_topo.edge
WHERE edge_id = 81018;
--"\001\002\000\000 \346\020\000\000\010\000\000\000\344,\354i\207?\362\277\236\230\365b(\343G@\351+H3\026M\362\277;\0363P\031\343G@v\216\001\331\353]\362\277\320\325V\354/\343G@n\305\376\262{r\362\277\272N#-\225\343G@\230\213\370N\314z\362\277%\356\261\364\241\343G@,\023~\251\237\267\362\277\326V\354/\273\343G@\235\327\330%\252\267\362\277\344\374M(D\344G@\177\366#Ed\330\362\277\361\272~\301n\344G@"

--SimplifyUTM function
CREATE OR REPLACE FUNCTION public.simplifyutm(geomin geometry, meters double precision)
  RETURNS geometry AS
$BODY$
DECLARE
    bestUTM integer;
    geomUTM geometry;
    geomSimpl geometry;
    geomBack geometry;
BEGIN
    bestUTM:= utmzone(st_centroid(geomin));
    geomUTM:= ST_Transform(geomin,bestUTM);
    geomSimpl:= ST_Simplify(geomUTM,meters);
    geomBack:= ST_Transform(geomSimpl,ST_SRID(geomin));
    --Keep start and end point, remove extra extra decimals (original geometries have 5 decimal at most)
    geomBack:=ST_SnapToGrid(geomBack,1e-5);
    geomBack:= ST_SetPoint(geomBack, 0, ST_StartPoint(geomin));
    geomBack:= ST_SetPoint(geomBack, ST_NumPoints(geomBack)-1, ST_EndPoint(geomin));
    RETURN geomBack;
END
$BODY$
  LANGUAGE plpgsql STABLE STRICT
  COST 100;