static void Main(string[] args) { var dataReader = new DataFileReader <GeoInfoModel>(); var dir = Path.Combine(Directory.GetCurrentDirectory(), "../../../../../data/001/"); var imgDir = Path.Combine(Directory.GetCurrentDirectory(), "img"); var pltFiles = FileTools.GetAllFile(dir, "*.plt"); var tracks = dataReader.GetTrajectories(pltFiles); Parallel.ForEach(tracks, t => { t.GeoCodes = t.GeoPoints.Select(tt => GeoHash.Encode(tt.Latitude, tt.Longitude, 7)) .Distinct() .ToList(); }); Console.WriteLine(tracks.Count()); var cluster = new CommonSubsequenceCluster(); var sh = new Stopwatch(); sh.Start(); var tree = cluster.BuildClusterTree(tracks.ToArray(), 0.7f, 0.4f); Console.WriteLine($"BuildClusterTree, count:{tracks.Count()}, time:{sh.Elapsed}"); if (Directory.Exists(imgDir)) { Directory.GetFiles(imgDir, "*.png") .ToList() .ForEach(File.Delete); } else { Directory.CreateDirectory(imgDir); } cluster.ForeachTree(tree, node => { var draw = new DrawBase(256, 256) .OpenAutoFit(node.MinLon, node.MinLat, node.MaxLon, node.MaxLat) .Draw(node, Color.Red, 3); draw.Image.Save($"{imgDir}/{node.LevelTag}.png"); draw.Image.Dispose(); // Console.WriteLine(node.LevelTag); foreach (var sib in node.Siblings) { var drawSib = new DrawBase(256, 256) .OpenAutoFit(sib.MinLon, sib.MinLat, sib.MaxLon, sib.MaxLat) .Draw(sib, Color.Red, 3); drawSib.Image.Save($"{imgDir}/{sib.LevelTag}.png"); drawSib.Image.Dispose(); // Console.WriteLine(sib.LevelTag); } }); }
static void Main(string[] args) { DrawBase rect = new DrawBase(); Console.WriteLine(rect.name); DrawBase line = rect.Clone() as DrawBase; line.name = "new"; line.listName.Add("123"); Console.WriteLine(rect.name); Console.WriteLine(rect.listName.Count); Console.ReadLine(); }
/// <summary> /// 绑定ROI画直线参数传递事件,需要传入五个参数类型分别为double,double,double,double,object的函数 /// </summary> /// <param name="Func"></param> public void BindingLineROIEvent(DrawBase <double, double, double, double, object> .ParametersHandler Func, bool bAdd = true) { if (line != null) { if (bAdd) { line.ProcessParameters += Func; } else { line.ProcessParameters -= Func; } } }
/// <summary> /// 绑定ROI画椭圆参数传递事件,需要传入五个参数类型分别为double,double,double,double,double的函数 /// </summary> /// <param name="Func"></param> public void BindingEllipseROIEvent(DrawBase <double, double, double, double, double> .ParametersHandler Func, bool bAdd = true) { if (ellipse != null) { if (bAdd) { ellipse.ProcessParameters += Func; } else { ellipse.ProcessParameters -= Func; } } }
/// <summary> /// 绑定ROI画矩形参数传递事件,需要传入五个参数类型分别为double,double,double,double,double的函数 /// </summary> /// <param name="Func"></param> public void BindingRectangle2ROIEvent(DrawBase <double, double, double, double, double> .ParametersHandler Func, bool bAdd = true) { if (rectangle2 != null) { if (bAdd) { rectangle2.ProcessParameters += Func; } else { rectangle2.ProcessParameters -= Func; } } }
//外部事件绑定 /// <summary> /// 绑定ROI画圆参数传递事件,需要传入五个参数类型分别为int,int,double,object,object的函数 /// </summary> /// <param name="Func"></param> public void BindingCircleROIEvent(DrawBase <int, int, double, object, object> .ParametersHandler Func, bool bAdd = true) { if (circle != null) { if (bAdd) { circle.ProcessParameters += Func; } else { circle.ProcessParameters -= Func; } } }
/// <summary>Register service method with a service binder with or without implementation. Useful when customizing the service binding logic. /// Note: this method is part of an experimental API that can change or be removed without any prior notice.</summary> /// <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param> /// <param name="serviceImpl">An object implementing the server-side handling logic.</param> public static void BindService(grpc::ServiceBinderBase serviceBinder, DrawBase serviceImpl) { serviceBinder.AddMethod(__Method_DrawPoints, serviceImpl == null ? null : new grpc::DuplexStreamingServerMethod <global::gRPCServer.DrawPointRequest, global::gRPCServer.DrawPoint>(serviceImpl.DrawPoints)); serviceBinder.AddMethod(__Method_ReceiveId, serviceImpl == null ? null : new grpc::UnaryServerMethod <global::gRPCServer.IdRequest, global::gRPCServer.IdResponse>(serviceImpl.ReceiveId)); }
/// <summary>Creates service definition that can be registered with a server</summary> /// <param name="serviceImpl">An object implementing the server-side handling logic.</param> public static grpc::ServerServiceDefinition BindService(DrawBase serviceImpl) { return(grpc::ServerServiceDefinition.CreateBuilder() .AddMethod(__Method_DrawPoints, serviceImpl.DrawPoints) .AddMethod(__Method_ReceiveId, serviceImpl.ReceiveId).Build()); }