Exemple #1
0
        public static Shape ReadShape(string shapeWKT)
        {
            shapeWKT = TranslateCircleFromKmToRadians(shapeWKT);
            Shape shape = shapeReadWriter.ReadShape(shapeWKT);

            return(shape);
        }
Exemple #2
0
        public Shape ReadShape(string shape, SpatialUnits?unitOverride = null)
        {
            shape = shapeStringConverter.ConvertToWKT(shape);
            shape = WktSanitizer.Sanitize(shape);

            // Circle translation should be done last, before passing to NtsShapeReadWriter
            if (options.Type == SpatialFieldType.Geography)
            {
                shape = TranslateCircleRadius(shape, unitOverride.HasValue ? unitOverride.Value : options.Units);
            }

            return(ntsShapeReadWriter.ReadShape(shape));
        }
Exemple #3
0
        public static Query MakeQuery(SpatialStrategy spatialStrategy, string shapeWKT, SpatialRelation relation,
                                      double distanceErrorPct = 0.025)
        {
            SpatialOperation spatialOperation;
            Shape            shape = ShapeReadWriter.ReadShape(shapeWKT);

            switch (relation)
            {
            case SpatialRelation.Within:
                spatialOperation = SpatialOperation.IsWithin;
                break;

            case SpatialRelation.Contains:
                spatialOperation = SpatialOperation.Contains;
                break;

            case SpatialRelation.Disjoint:
                spatialOperation = SpatialOperation.IsDisjointTo;
                break;

            case SpatialRelation.Intersects:
                spatialOperation = SpatialOperation.Intersects;
                break;

            case SpatialRelation.Nearby:
                var nearbyArgs = new SpatialArgs(SpatialOperation.IsWithin, shape);
                nearbyArgs.SetDistPrecision(distanceErrorPct);
                // only sort by this, do not filter
                return(new FunctionQuery(spatialStrategy.MakeValueSource(nearbyArgs)));

            default:
                throw new ArgumentOutOfRangeException("relation");
            }
            var args = new SpatialArgs(spatialOperation, shape);

            args.SetDistPrecision(distanceErrorPct);

            return(spatialStrategy.MakeQuery(args));
        }