public virtual object Clone() { var newFeatureType = new FeatureType(Name); foreach (var attribute in _attributes) newFeatureType.AddAttributes(attribute.Name, attribute.Type); return newFeatureType; }
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; }
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; }
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); } }
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; }
public virtual IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window) { return new Feature[0]; }
public FeatureVariableResolver(FeatureType featureType) { FeatureType = featureType; }
internal Feature(FeatureType featureType, long fid, object[] values) { FeatureType = featureType; Values = values; Fid = fid; }
public abstract IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window);
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--; } }
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; }