示例#1
0
        public static Dictionary <string, object> OSMData(List <OSMPoint> OSM, string File, string featureType, List <string> subTypes)
        {
            // Convert the string featureType to the FeatureType wayFT.
            if (featureType != way)
            {
                wayFT = ElkLib.ByName(featureType);
                way   = wayFT.ToString();
            }

            selectedTypes = subTypes;
            if (selectedTypes.Count == 0)
            {
                selectedTypes = new List <string> {
                    "*"
                };
            }

            way = wayFT.ToString().ToLower();

            // Gather the ways
            List <OSMWay> collectedWays = ElkLib.GatherWays(way, selectedTypes.ToArray(), File, OSM);

            Point[][][]           wayPoints = new Point[collectedWays.Count][][];
            List <List <string> > tags      = new List <List <string> >();

            try
            {
                // Convert all of the OSMPoints to Dynamo Points
                for (int i = 0; i < collectedWays.Count; i++)
                {
                    OSMWay currentWay = collectedWays[i];
                    wayPoints[i] = new Point[currentWay.Points.Count][];
                    for (int j = 0; j < currentWay.Points.Count; j++)
                    {
                        try
                        {
                            List <LINE.Geometry.Point3d> pointList = currentWay.Points[j];
                            wayPoints[i][j] = new Point[pointList.Count];
                            for (int k = 0; k < pointList.Count; k++)
                            {
                                LINE.Geometry.Point3d pt = pointList[k];
                                try
                                {
                                    wayPoints[i][j][k] = Point.ByCoordinates(pt.X, pt.Y, pt.Z);
                                }
                                catch
                                {
                                    wayPoints[i][j][k] = Point.Origin();
                                }
                            }
                        }
                        catch { }
                    }

                    // Collect all of the tags
                    List <string> tagList = new List <string>();
                    foreach (KeyValuePair <string, string> tag in currentWay.Tags)
                    {
                        try
                        {
                            string currentTag = tag.Key + ":" + tag.Value;
                            tagList.Add(currentTag);
                        }
                        catch { }
                    }
                    tags.Add(tagList);
                }
            }
            catch { }

            return(new Dictionary <string, object>
            {
                { "Points", wayPoints },
                { "Keys", tags }
            });
        }
示例#2
0
        public static Dictionary <string, List <string> > SubFeatures(string feature, List <int> subIndexes)
        {
            #region Get Available Types
            List <string>      availableTemp = new List <string>();
            ElkLib.FeatureType featureType   = ElkLib.ByName(feature);
            switch (featureType)
            {
            case ElkLib.FeatureType.Aerialway:
                availableTemp = Elk.Common.ElkLib.Aerialways;
                break;

            case ElkLib.FeatureType.Aeroway:
                availableTemp = Elk.Common.ElkLib.Aeroways;
                break;

            case ElkLib.FeatureType.Amenity:
                availableTemp = Elk.Common.ElkLib.Amenities;
                break;

            case ElkLib.FeatureType.Barrier:
                availableTemp = Elk.Common.ElkLib.Barrier;
                break;

            case ElkLib.FeatureType.Boundary:
                availableTemp = Elk.Common.ElkLib.Boundary;
                break;

            case ElkLib.FeatureType.Building:
                availableTemp = Elk.Common.ElkLib.Building;
                break;

            case ElkLib.FeatureType.Craft:
                availableTemp = Elk.Common.ElkLib.Craft;
                break;

            case ElkLib.FeatureType.Emergency:
                availableTemp = Elk.Common.ElkLib.Emergency;
                break;

            case ElkLib.FeatureType.Geological:
                availableTemp = Elk.Common.ElkLib.Geological;
                break;

            case ElkLib.FeatureType.Highway:
                availableTemp = Elk.Common.ElkLib.Highway;
                break;

            case ElkLib.FeatureType.Historic:
                availableTemp = Elk.Common.ElkLib.Historic;
                break;

            case ElkLib.FeatureType.Landuse:
                availableTemp = Elk.Common.ElkLib.Landuse;
                break;

            case ElkLib.FeatureType.Leisure:
                availableTemp = Elk.Common.ElkLib.Leisure;
                break;

            case ElkLib.FeatureType.ManMade:
                availableTemp = Elk.Common.ElkLib.ManMade;
                break;

            case ElkLib.FeatureType.Military:
                availableTemp = Elk.Common.ElkLib.Military;
                break;

            case ElkLib.FeatureType.Natural:
                availableTemp = Elk.Common.ElkLib.Natural;
                break;

            case ElkLib.FeatureType.Office:
                availableTemp = Elk.Common.ElkLib.Office;
                break;

            case ElkLib.FeatureType.Place:
                availableTemp = Elk.Common.ElkLib.Places;
                break;

            case ElkLib.FeatureType.Power:
                availableTemp = Elk.Common.ElkLib.Power;
                break;

            case ElkLib.FeatureType.PublicTransport:
                availableTemp = Elk.Common.ElkLib.PublicTransport;
                break;

            case ElkLib.FeatureType.Railway:
                availableTemp = Elk.Common.ElkLib.Railway;
                break;

            case ElkLib.FeatureType.Route:
                availableTemp = Elk.Common.ElkLib.Route;
                break;

            case ElkLib.FeatureType.Shop:
                availableTemp = Elk.Common.ElkLib.Shop;
                break;

            case ElkLib.FeatureType.Sport:
                availableTemp = Elk.Common.ElkLib.Sport;
                break;

            case ElkLib.FeatureType.Tourism:
                availableTemp = Elk.Common.ElkLib.Toursim;
                break;

            case ElkLib.FeatureType.Waterway:
                availableTemp = Elk.Common.ElkLib.Waterway;
                break;
            }
            ;
            availableTemp.Sort();
            #endregion

            List <string> selected = new List <string>();
            if (subIndexes == null || subIndexes.Count == 0)
            {
                selected = new List <string> {
                    "*"
                };
            }
            else
            {
                foreach (int index in subIndexes)
                {
                    try
                    {
                        selected.Add(availableTemp[index]);
                    }
                    catch { }
                }
            }

            return(new Dictionary <string, List <string> >
            {
                { "all", availableTemp },
                { "selected", selected }
            });
        }