protected void InitWorldBounds() { String worldBoundsStr; if (!Args.TryGetValue("worldBounds", out worldBoundsStr) || worldBoundsStr == null) { return; } //kinda ugly we do this just to read a rectangle. TODO refactor var simpleCtx = new SpatialContext(geo, Calculator, null); WorldBounds = (Rectangle)simpleCtx.ReadShape(worldBoundsStr); }
/// <summary> /// Parses a string such as "Intersects(-10,20,-8,22) distErrPct=0.025". /// </summary> /// <param name="v"></param> /// <param name="ctx"></param> /// <returns></returns> public SpatialArgs Parse(String v, SpatialContext ctx) { int idx = v.IndexOf('('); int edx = v.LastIndexOf(')'); if (idx < 0 || idx > edx) { throw new ArgumentException("missing parens: " + v); } SpatialOperation op = SpatialOperation.Get(v.Substring(0, idx).Trim()); //Substring in .NET is (startPosn, length), But in Java it's (startPosn, endPosn) //see http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring(int, int) String body = v.Substring(idx + 1, edx - (idx + 1)).Trim(); if (body.Length < 1) { throw new ArgumentException("missing body : " + v); } var shape = ctx.ReadShape(body); var args = new SpatialArgs(op, shape); if (v.Length > (edx + 1)) { body = v.Substring(edx + 1).Trim(); if (body.Length > 0) { Dictionary<String, String> aa = ParseMap(body); args.DistErrPct = ReadDouble(aa["distErrPct"]); aa.Remove(DIST_ERR_PCT); args.DistErr = ReadDouble(aa["distErr"]); aa.Remove(DIST_ERR); if (aa.Count != 0) { throw new ArgumentException("unused parameters: " + aa); } } } args.Validate(); return args; }
public SpatialArgs Parse(String v, SpatialContext ctx) { int idx = v.IndexOf('('); int edx = v.LastIndexOf(')'); if (idx < 0 || idx > edx) { throw new InvalidSpatialArgument("missing parens: " + v); } SpatialOperation op = SpatialOperation.Get(v.Substring(0, idx).Trim()); //Substring in .NET is (startPosn, length), But in Java it's (startPosn, endPosn) //see http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring(int, int) String body = v.Substring(idx + 1, edx - (idx + 1)).Trim(); if (body.Length < 1) { throw new InvalidSpatialArgument("missing body : " + v); } var shape = ctx.ReadShape(body); var args = new SpatialArgs(op, shape); if (v.Length > (edx + 1)) { body = v.Substring(edx + 1).Trim(); if (body.Length > 0) { Dictionary<String, String> aa = ParseMap(body); args.Min = ReadDouble(aa["min"]); args.Max = ReadDouble(aa["max"]); args.SetDistPrecision(ReadDouble(aa["distPrec"])); if (aa.Count > 3) { throw new InvalidSpatialArgument("unused parameters: " + aa); } } } return args; }
protected void InitWorldBounds() { String worldBoundsStr; if (!Args.TryGetValue("worldBounds", out worldBoundsStr) || worldBoundsStr == null) return; //kinda ugly we do this just to read a rectangle. TODO refactor var simpleCtx = new SpatialContext(Units, Calculator, null); WorldBounds = (Rectangle)simpleCtx.ReadShape(worldBoundsStr); }