/// <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); }
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)'\''); }