Ejemplo n.º 1
0
        /// <summary>
        /// Get value from WKT format
        /// SRID=0;POINT (x y) or POINT (x y)
        /// </summary>
        /// <param name="value">WKT string format</param>
        public static MyCatGeometry Parse(string value)
        {
            if (String.IsNullOrEmpty(value))
            {
                throw new ArgumentNullException("value");
            }

            if (!(value.Contains("SRID") || value.Contains("POINT(") || value.Contains("POINT (")))
            {
                throw new FormatException("String does not contain a valid geometry value");
            }

            MyCatGeometry result = new MyCatGeometry(0, 0);

            MyCatGeometry.TryParse(value, out result);

            return(result);
        }
Ejemplo n.º 2
0
        void IMyCatValue.WriteValue(MyCatPacket packet, bool binary, object val, int length)
        {
            byte[] buffToWrite = null;

            try
            {
                buffToWrite = ((MyCatGeometry)val)._valBinary;
            }
            catch
            {
                buffToWrite = val as Byte[];
            }

            if (buffToWrite == null)
            {
                MyCatGeometry v = new MyCatGeometry(0, 0);
                MyCatGeometry.TryParse(val.ToString(), out v);
                buffToWrite = v._valBinary;
            }

            byte[] result = new byte[GEOMETRY_LENGTH];

            for (int i = 0; i < buffToWrite.Length; i++)
            {
                if (buffToWrite.Length < GEOMETRY_LENGTH)
                {
                    result[i + 4] = buffToWrite[i];
                }
                else
                {
                    result[i] = buffToWrite[i];
                }
            }

            packet.WriteStringNoNull("_binary ");
            packet.WriteByte((byte)'\'');
            EscapeByteArray(result, GEOMETRY_LENGTH, packet);
            packet.WriteByte((byte)'\'');
        }