示例#1
0
        public StPoint(string wkt)
        {
            if (wkt.ToUpper().Contains("Z"))
            {
                HasZ = true;
            }
            if (wkt.ToUpper().Contains("M"))
            {
                HasM = true;
            }

            string coordsText = wkt.ToUpper().Replace("POINT", String.Empty).Replace("Z", String.Empty).Replace("M", String.Empty).Replace("(", String.Empty).Replace(")", String.Empty).Trim();

            string[] coords = coordsText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            decimal x = Convert.ToDecimal(coords[0], CultureInfo.InvariantCulture);
            decimal y = Convert.ToDecimal(coords[1], CultureInfo.InvariantCulture);
            decimal?z = null;
            decimal?m = null;

            if (HasZ && HasM)
            {
                z = Convert.ToDecimal(coords[2], CultureInfo.InvariantCulture);
                m = Convert.ToDecimal(coords[3], CultureInfo.InvariantCulture);
            }
            else if (HasZ)
            {
                z = Convert.ToDecimal(coords[2], CultureInfo.InvariantCulture);
            }
            else if (HasM)
            {
                m = Convert.ToDecimal(coords[2], CultureInfo.InvariantCulture);
            }

            X = new StCoordinate(x, StCoordType.X);
            Y = new StCoordinate(y, StCoordType.Y);

            if (HasZ)
            {
                if (!z.HasValue)
                {
                    throw new ArgumentException();
                }
                Z = new StCoordinate(z.Value, StCoordType.Z);
            }

            if (HasM)
            {
                if (!m.HasValue)
                {
                    throw new ArgumentException();
                }
                M = new StCoordinate(m.Value, StCoordType.M);
            }

            CalculateBytes();
        }
示例#2
0
        public StPoint(decimal x, decimal y, decimal? z = null, decimal? m = null)
        {
            X = new StCoordinate(x, StCoordType.X);
            Y = new StCoordinate(y, StCoordType.Y);
            if (z.HasValue)
            {
                HasZ = true;
                Z = new StCoordinate(z.Value, StCoordType.Z);
            }
            if (m.HasValue)
            {
                HasM = true;
                M = new StCoordinate(m.Value, StCoordType.M);
            }

            // Set Bytes
            CalculateBytes();
        }
示例#3
0
        public StPoint(byte[] x, byte[] y, byte[] z = null, byte[] m = null)
        {
            X = new StCoordinate(x, StCoordType.X);
            Y = new StCoordinate(y, StCoordType.Y);
            if (z != null)
            {
                HasZ = true;
                Z = new StCoordinate(z, StCoordType.Z);
            }
            if (m != null)
            {
                HasM = true;
                M = new StCoordinate(m, StCoordType.M);
            }

            // Set Bytes
            CalculateBytes();
        }
示例#4
0
        public StPoint(decimal x, decimal y, decimal?z = null, decimal?m = null)
        {
            X = new StCoordinate(x, StCoordType.X);
            Y = new StCoordinate(y, StCoordType.Y);
            if (z.HasValue)
            {
                HasZ = true;
                Z    = new StCoordinate(z.Value, StCoordType.Z);
            }
            if (m.HasValue)
            {
                HasM = true;
                M    = new StCoordinate(m.Value, StCoordType.M);
            }

            // Set Bytes
            CalculateBytes();
        }
示例#5
0
        public StPoint(byte[] x, byte[] y, byte[] z = null, byte[] m = null)
        {
            X = new StCoordinate(x, StCoordType.X);
            Y = new StCoordinate(y, StCoordType.Y);
            if (z != null)
            {
                HasZ = true;
                Z    = new StCoordinate(z, StCoordType.Z);
            }
            if (m != null)
            {
                HasM = true;
                M    = new StCoordinate(m, StCoordType.M);
            }

            // Set Bytes
            CalculateBytes();
        }
示例#6
0
 private void SetGeometry(List <List <byte> > bytesList)
 {
     X = new StCoordinate(bytesList[0], StCoordType.X);
     Y = new StCoordinate(bytesList[1], StCoordType.Y);
     if (HasZ && HasM)
     {
         Z = new StCoordinate(bytesList[2], StCoordType.Z);
         M = new StCoordinate(bytesList[3], StCoordType.M);
     }
     else if (HasZ)
     {
         Z = new StCoordinate(bytesList[2], StCoordType.Z);
     }
     else if (HasM)
     {
         M = new StCoordinate(bytesList[2], StCoordType.M);
     }
 }
示例#7
0
        public StPoint(string wkt)
        {
            if (wkt.ToUpper().Contains("Z"))
                HasZ = true;
            if (wkt.ToUpper().Contains("M"))
                HasM = true;

            string coordsText = wkt.ToUpper().Replace("POINT", String.Empty).Replace("Z", String.Empty).Replace("M", String.Empty).Replace("(", String.Empty).Replace(")", String.Empty).Trim();
            string[] coords = coordsText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            decimal x = Convert.ToDecimal(coords[0], CultureInfo.InvariantCulture);
            decimal y = Convert.ToDecimal(coords[1], CultureInfo.InvariantCulture);
            decimal? z = null;
            decimal? m = null;

            if (HasZ && HasM)
            {
                z = Convert.ToDecimal(coords[2], CultureInfo.InvariantCulture);
                m = Convert.ToDecimal(coords[3], CultureInfo.InvariantCulture);
            }
            else if (HasZ)
                z = Convert.ToDecimal(coords[2], CultureInfo.InvariantCulture);
            else if (HasM)
                m = Convert.ToDecimal(coords[2], CultureInfo.InvariantCulture);

            X = new StCoordinate(x, StCoordType.X);
            Y = new StCoordinate(y, StCoordType.Y);

            if (HasZ)
            {
                if (!z.HasValue)
                    throw new ArgumentException();
                Z = new StCoordinate(z.Value, StCoordType.Z);
            }

            if (HasM)
            {
                if (!m.HasValue)
                    throw new ArgumentException();
                M = new StCoordinate(m.Value, StCoordType.M);
            }

            CalculateBytes();
        }
示例#8
0
 private void SetGeometry(List<List<byte>> bytesList)
 {
     X = new StCoordinate(bytesList[0], StCoordType.X);
     Y = new StCoordinate(bytesList[1], StCoordType.Y);
     if (HasZ && HasM)
     {
         Z = new StCoordinate(bytesList[2], StCoordType.Z);
         M = new StCoordinate(bytesList[3], StCoordType.M);
     }
     else if (HasZ)
         Z = new StCoordinate(bytesList[2], StCoordType.Z);
     else if (HasM)
         M = new StCoordinate(bytesList[2], StCoordType.M);
 }