Example #1
0
        public virtual object Clone()
        {
            var newFeatureType = new FeatureType(Name);

            foreach (var attribute in _attributes)
                newFeatureType.AddAttributes(attribute.Name, attribute.Type);

            return newFeatureType;
        }
Example #2
0
        public FeatureType WrapFeatureType(PointExtractor pointExtractor, FeatureType featureType)
        {
            var newFeatureType = (FeatureType)featureType.Clone();

            _xIndex = !string.IsNullOrEmpty(pointExtractor.XColumn) ? newFeatureType.AddAttributes(pointExtractor.XColumn, typeof(double)).Ordinal : -1;
            _yIndex = !string.IsNullOrEmpty(pointExtractor.YColumn) ? newFeatureType.AddAttributes(pointExtractor.YColumn, typeof(double)).Ordinal : -1;
            _zIndex = !string.IsNullOrEmpty(pointExtractor.ZColumn) ? newFeatureType.AddAttributes(pointExtractor.ZColumn, typeof(double)).Ordinal : -1;
            _mIndex = !string.IsNullOrEmpty(pointExtractor.MColumn) ? newFeatureType.AddAttributes(pointExtractor.MColumn, typeof(double)).Ordinal : -1;
            _angleIndex = !string.IsNullOrEmpty(pointExtractor.AngleColumn) ? newFeatureType.AddAttributes(pointExtractor.AngleColumn, typeof(double)).Ordinal : -1;

            return newFeatureType;
        }
        private FeatureType WrapFeatureType(FeatureType featureType)
        {
            var newFeatureType = (FeatureType)featureType.Clone();
            newFeatureType.AddAttributes("vertex_id", typeof(double));
            newFeatureType.AddAttributes("vertex_x", typeof(double));
            newFeatureType.AddAttributes("vertex_y", typeof(double));
            newFeatureType.AddAttributes("vertex_z", typeof(double));
            newFeatureType.AddAttributes("vertex_m", typeof(double));
            
            //newFeatureType.GeometryType = OgcGeometryType.Point;

            return newFeatureType;
        }
Example #4
0
        public override void Compile(bool recursive = false)
        {
            _outputFeatureType = WrapFeatureType(_pointExtractor, InputFeatureType);
            base.Compile(_outputFeatureType, recursive);

            //var context = CreateContext();
            //_featureVarResolver = new FeatureVariableResolver(OutputFeatureType);
            //_featureVarResolver.BindContext(context);

            _startEvaluator = CompileDoubleExpression(PointExtractor.StartField, _pointExtractor.Start, ref _start, false);
            _endEvaluator = CompileDoubleExpression(PointExtractor.EndField, _pointExtractor.End, ref _end, false);
            _incEvaluator = CompileDoubleExpression(PointExtractor.IncField, _pointExtractor.Increment, ref _increment, false);
            _offsetEvaluator = CompileDoubleExpression(PointExtractor.OffsetField, _pointExtractor.Offset, ref _offset);
            
            _compiled = true;
        }
Example #5
0
        public override void Compile(bool recursive)
        {
            _layer.Open();
            _featureType = _layer.GetFeatureType();
            Renderer.FeatureVarResolver.FeatureType = _featureType;

            base.Compile(false);

            foreach (var renderer in Renderers)
            {
                var featureRenderer = renderer as IFeatureRenderer;
                if (featureRenderer != null)
                    featureRenderer.InputFeatureType = _featureType;

                if (recursive)
                    renderer.Compile(true);
            }
        }
Example #6
0
        public virtual void Compile(FeatureType featuretype, bool recursive = false)
        {
            //_containerNode.CascadeStyles();

            _renderers = new List<IBaseRenderer>();
            _declarations = new List<IBaseRenderer>();

            foreach (IFeatureRenderer renderer in Renderer.GetRenderers(_containerNode, this))
                if (renderer.Node is Macro)
                    _declarations.Add(renderer);
                else
                {
                    renderer.InputFeatureType = featuretype;
                    _renderers.Add(renderer);

                    if (recursive)
                        renderer.Compile(true);
                }

            _compiled = true;
        }
        public override void Compile(bool recursive = false)
        {
            _outputFeatureType =  WrapFeatureType(InputFeatureType);
            base.Compile(recursive);

            _compiled = true;
        }
Example #8
0
 public virtual IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window)
 {
     return new Feature[0];
 }
 public FeatureVariableResolver(FeatureType featureType)
 {
     FeatureType = featureType;
 }
Example #10
0
		internal Feature(FeatureType featureType, long fid, object[] values)
		{
			FeatureType = featureType;
			Values = values;
			Fid = fid;
		}
Example #11
0
		public abstract IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window);
Example #12
0
        public override IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window)
        {
            var cmd = _useCounter > 0 ? CreateCommand(Connection) : GetOrCreateCommand(Connection);
            _useCounter++;

            try
            {

                SetParameters(cmd, window);
                using (var reader = cmd.ExecuteReader())
                {
                    var geomOrdinal = reader.GetOrdinal(GeometryColumn);
                    if (geomOrdinal < 0) throw new Exception("Geometry column not found: " + GeometryColumn);

                    var fidOrdinal = string.IsNullOrEmpty(FidColumn) ? -1 : reader.GetOrdinal(FidColumn);
                    var buffer = new byte[1024];

                    var fieldCount = reader.FieldCount;
                    var values = new object[fieldCount];
                    var geoReader = new GaiaGeoReader();

                    while (reader.Read())
                    {
                        long fid;
                        if (fidOrdinal >= 0)
                        {
                            fid = reader.GetInt64(fidOrdinal);
                            values[fidOrdinal] = fid;
                        }
                        else
                            fid = 0;

                        for (int i = 0; i < fieldCount; i++)
                            if (i != fidOrdinal && i != geomOrdinal)
                                values[i] = reader.GetValue(i);

                        var len = (int)reader.GetBytes(geomOrdinal, 0L, null, 0, 0);
                        if (len > buffer.Length)
                            buffer = new byte[len];

                        reader.GetBytes(geomOrdinal, 0L, buffer, 0, len);

                        IGeometry geom;
                        try
                        {
                            geom = geoReader.Read(buffer, 0, len);
                            if (geom == null) continue;
                        }
                        catch (Exception ex)
                        {
                            Trace.WriteLine(string.Format("Invalid geometry while reading {0} Fid={1}: {2}", ToString(), fid, ex.Message));
                            continue;
                        }

                        //var geom = GeometryReader.ReadBlobGeometry(new MemoryStream(buffer, 0, buffer.Length));
                        values[geomOrdinal] = geom;
                        //featureType.GeometryType = geom.OgcGeometryType;
                        var feature = featureType.NewFeature(fid, values);
                        feature.Geometry = geom;

                        yield return feature;
                    }
                }
            }
            finally
            {
                _useCounter--;
            }
        }
Example #13
0
        public override FeatureType GetFeatureType()
        {
            var featureType = new FeatureType(Name);

            var cmd = _cmd ?? (_cmd = GetOrCreateCommand(Connection));

            using (var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly))
            {
                var fieldCount = reader.FieldCount;
                for (int i = 0; i < fieldCount; i++)
                    featureType.AddAttributes(reader.GetName(i), reader.GetFieldType(i));
            }

            return featureType;
        }