public static FeatureCollection GetFeaturesFor(this RoutingNetwork network, List <uint> vertices)
        {
            FeatureCollection featureCollection = new FeatureCollection();

            foreach (uint vertex in vertices)
            {
                float latitude;
                float longitude;
                if (network.GeometricGraph.GetVertex(vertex, out latitude, out longitude))
                {
                    GeoCoordinate geoCoordinate = new GeoCoordinate((double)latitude, (double)longitude);
                    featureCollection.Add(new Feature((Geometry) new Point(new GeoCoordinate(geoCoordinate.Latitude, geoCoordinate.Longitude)), (GeometryAttributeCollection) new SimpleGeometryAttributeCollection((IEnumerable <Tag>) new Tag[1]
                    {
                        Tag.Create("id", vertex.ToInvariantString())
                    })));
                }
            }
            return(featureCollection);
        }
        public static List <ICoordinate> GetShape(this RoutingNetwork graph, RoutingEdge edge)
        {
            List <ICoordinate> coordinateList = new List <ICoordinate>();

            coordinateList.Add((ICoordinate)graph.GetVertex(edge.From));
            ShapeBase shapeBase = edge.Shape;

            if (shapeBase != null)
            {
                if (edge.DataInverted)
                {
                    shapeBase = shapeBase.Reverse();
                }
                IEnumerator <ICoordinate> enumerator = shapeBase.GetEnumerator();
                enumerator.Reset();
                while (enumerator.MoveNext())
                {
                    coordinateList.Add(enumerator.Current);
                }
            }
            coordinateList.Add((ICoordinate)graph.GetVertex(edge.To));
            return(coordinateList);
        }
        public static FeatureCollection GetFeaturesIn(this RoutingNetwork network, float minLatitude, float minLongitude, float maxLatitude, float maxLongitude)
        {
            FeatureCollection featureCollection = new FeatureCollection();
            HashSet <uint>    uintSet           = network.GeometricGraph.Search(minLatitude, minLongitude, maxLatitude, maxLongitude);
            HashSet <long>    longSet           = new HashSet <long>();

            RoutingNetwork.EdgeEnumerator edgeEnumerator = network.GetEdgeEnumerator();
            foreach (uint vertex1 in uintSet)
            {
                GeoCoordinateSimple vertex2 = network.GeometricGraph.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             = network.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);
        }
Exemplo n.º 4
0
 internal EdgeEnumerator(RoutingNetwork network, GeometricGraph.EdgeEnumerator enumerator)
 {
     this._network    = network;
     this._enumerator = enumerator;
 }
 public static FeatureCollection GetFeatures(this RoutingNetwork network)
 {
     return(network.GetFeaturesIn(float.MinValue, float.MinValue, float.MaxValue, float.MaxValue));
 }
 public static uint AddEdge(this RoutingNetwork network, uint vertex1, uint vertex2, EdgeData data, params ICoordinate[] shape)
 {
     return(network.AddEdge(vertex1, vertex2, data, (ShapeBase) new ShapeEnumerable((IEnumerable <ICoordinate>)shape)));
 }