Exemple #1
0
 internal GeometricEdge(GeometricGraph.EdgeEnumerator enumerator)
 {
     this.Id           = enumerator.Id;
     this.From         = enumerator.From;
     this.To           = enumerator.To;
     this.Data         = enumerator.Data;
     this.DataInverted = enumerator.DataInverted;
     this.Shape        = enumerator.Shape;
 }
Exemple #2
0
 public bool RemoveEdge(uint vertex1, uint vertex2)
 {
     GeometricGraph.EdgeEnumerator edgeEnumerator = this.GetEdgeEnumerator(vertex1);
     while (edgeEnumerator.MoveNext())
     {
         if ((int)edgeEnumerator.To == (int)vertex2)
         {
             return(this.RemoveEdge(edgeEnumerator.Id));
         }
     }
     return(false);
 }
Exemple #3
0
        public int RemoveEdges(uint vertex)
        {
            int num = 0;

            GeometricGraph.EdgeEnumerator edgeEnumerator = this.GetEdgeEnumerator(vertex);
            while (edgeEnumerator.MoveNext())
            {
                ((ArrayBase <ShapeBase>) this._shapes)[(long)edgeEnumerator.Id] = (ShapeBase)null;
                if (this.RemoveEdge(edgeEnumerator.Id))
                {
                    ++num;
                }
            }
            return(num);
        }
Exemple #4
0
        public static FeatureCollection GetFeaturesIn(this GeometricGraph graph, float minLatitude, float minLongitude, float maxLatitude, float maxLongitude)
        {
            FeatureCollection featureCollection = new FeatureCollection();
            HashSet <uint>    uintSet           = graph.Search(minLatitude, minLongitude, maxLatitude, maxLongitude);
            HashSet <long>    longSet           = new HashSet <long>();

            GeometricGraph.EdgeEnumerator edgeEnumerator = graph.GetEdgeEnumerator();
            foreach (uint vertex1 in uintSet)
            {
                GeoCoordinateSimple vertex2 = graph.GetVertex(vertex1);
                featureCollection.Add(new Feature((Geometry) new Point(new GeoCoordinate((double)vertex2.Latitude, (double)vertex2.Longitude)), (GeometryAttributeCollection) new SimpleGeometryAttributeCollection((IEnumerable <Tag>) new Tag[1]
                {
                    Tag.Create("id", vertex1.ToInvariantString())
                })));
                edgeEnumerator.MoveTo(vertex1);
                edgeEnumerator.Reset();
                while (edgeEnumerator.MoveNext())
                {
                    if (!longSet.Contains((long)edgeEnumerator.Id))
                    {
                        longSet.Add((long)edgeEnumerator.Id);
                        List <ICoordinate>   shape             = graph.GetShape(edgeEnumerator.Current);
                        List <GeoCoordinate> geoCoordinateList = new List <GeoCoordinate>();
                        foreach (ICoordinate coordinate in shape)
                        {
                            geoCoordinateList.Add(new GeoCoordinate((double)coordinate.Latitude, (double)coordinate.Longitude));
                        }
                        LineString lineString = new LineString((IEnumerable <GeoCoordinate>)geoCoordinateList);
                        featureCollection.Add(new Feature((Geometry)lineString, (GeometryAttributeCollection) new SimpleGeometryAttributeCollection((IEnumerable <Tag>) new Tag[1]
                        {
                            Tag.Create("id", edgeEnumerator.Id.ToInvariantString())
                        })));
                    }
                }
            }
            return(featureCollection);
        }