public static object NodeGeomConv(object arg) { return(Utils.CalcNotNulls(arg, 5, 1, args => { var toWGS = GeoCoordConv.GetConvByOrganization(Convert.ToString(args[4])); if (toWGS.conv == null) { return null; } //***** INSERT var sb = new StringBuilder("INSERT INTO MARKER(Marker_ID,NAME,TYPE_RD,Geometry) VALUES ("); //***** Marker_ID var Node_ID = Convert.ToInt64(args[5]); // undocumented feature, most significant key value is after last data value sb.Append(Node_ID * 10 + toWGS.id); sb.Append(','); //***** NAME sb.Append('\''); sb.Append(EscapeSpecialChars(Convert.ToString(args[0]))); sb.Append("',"); //***** TYPE_RD sb.Append('\''); sb.Append(EscapeSpecialChars(Convert.ToString(args[3]))); sb.Append("',"); //***** Geometry var X = Convert.ToDouble(args[1]); var Y = Convert.ToDouble(args[2]); var wgs = toWGS.conv(new double[2] { X, Y }); sb.Append("geometry::STGeomFromText('POINT("); PipeGeometryUtils.PointToWKT(wgs, sb, 2); sb.Append(")',4326)"); //***** trailing bracket sb.Append(')'); return sb.ToString(); })); }
public static object PipeGeomConv(object arg) { return(Utils.Calc(arg, 7, 1, args => { var raw = Utils.Cast <byte[]>(args[0]); var Lnom = Convert.ToDouble(args[1]); var Z0 = Convert.ToDouble(args[2]); var Z1 = Convert.ToDouble(args[3]); var res = PipeGeometryUtils.FromPipeCoords(raw, Lnom, Z0, Z1); if ((string.IsNullOrEmpty(res.errMsg) || !res.errMsg.Contains("Lcalc >")) && res.points.Length >= 2) { var toWGS = GeoCoordConv.GetConvByOrganization(Convert.ToString(args[6])); if (toWGS.conv == null) { return null; } var sb = new StringBuilder("LINESTRING("); PipeGeometryUtils.LineToWKT(res.points.Select(p => toWGS.conv(p.coords)), sb, 2); sb.Append(")"); var PuId = Convert.ToInt64(args[7]); // undocumented feature, most significant key value is after last data value var Pipe_ID = PuId * 10 + toWGS.id; var Name = EscapeSpecialChars($"{args[4]}-{args[5]}"); var ins = $"INSERT INTO wgs_pipe(Pipe_ID, Name, Geometry) VALUES ({Pipe_ID}, '{Name}', geometry::STGeomFromText('{sb}',4326))"; return ins; } return null; }, 0, 1)); }