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); }
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))); }