GeoLine.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Ips.Library.Entity
  6. {
  7. public class GeoLine
  8. {
  9. public GeoLine()
  10. {
  11. Points = new List<GeoLLA>();
  12. }
  13. public List<GeoLLA> Points { get; set; }
  14. public string ToString(string pointsep)
  15. {
  16. return string.Join(pointsep, Points);
  17. }
  18. public static GeoLine FromString(string val, string itemsep = ",", string pointsep = ";")
  19. {
  20. var strPoints = val.Split(pointsep.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  21. GeoLine line = new GeoLine();
  22. for (int i = 0; i < strPoints.Length; i++)
  23. {
  24. var geoPoint = GeoLLA.FromString(strPoints[i], itemsep);
  25. line.Points.Add(geoPoint);
  26. }
  27. return line;
  28. }
  29. public static List<GeoLine> FromListString(string val, string itemsep = ",", string pointsep = ";", string linesep = "\r\n")
  30. {
  31. var lineStrArr = val.Split(linesep.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  32. List<GeoLine> lines = new List<GeoLine>();
  33. foreach (var linestr in lineStrArr)
  34. {
  35. var line = FromString(linestr, itemsep, pointsep);
  36. lines.Add(line);
  37. }
  38. return lines;
  39. }
  40. }
  41. public static class GeoLineExtensions
  42. {
  43. public static string ToLinesString(this IEnumerable<GeoLine> lines, string pointsep = ";", string linesep = "\r\n")
  44. {
  45. return string.Join(linesep, lines.Select(line => line.ToString(pointsep)));
  46. }
  47. }
  48. }