Ejemplo n.º 1
0
 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();
     }));
 }
Ejemplo n.º 2
0
        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));
        }