コード例 #1
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            target.Operator = entityContext.Entity.Tags.ValueOrDefault("operator");

            return true;
        }
コード例 #2
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            target.IsLit        = entityContext.Entity.Tags.EntryAsBool("lit");
            target.IsCovered    = entityContext.Entity.Tags.EntryAsBool("covered");
            target.IsSupervised = entityContext.Entity.Tags.EntryAsBool("supervised");

            return true;
        }
コード例 #3
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            if (entityContext.Entity.Tags.ContainsKey("FIXME"))
            {
                return false;
            }

            return true;
        }
コード例 #4
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            var capacity = entityContext.Entity.Tags.EntryAsInt("capacity",entityContext.Entity.Tags.EntryAsInt("capacity:disabled"));

            if ( capacity < 1 )
            {
                capacity = (int)(MathUtil.SquareDegreesToSquareMeters(target.Location.Area.Value) / configuration.Model.AreaPerParkingSpace);
            }

            target.Capacity = capacity;
            return true;
        }
コード例 #5
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            if (entityContext.Entity.Tags.ContainsKey("vehicle") && !entityContext.Entity.Tags.EntryAsBool("vehicle"))
            {
                return false;
            }

            if (entityContext.Entity.Tags.ContainsKey("motor_vehicle") && !entityContext.Entity.Tags.EntryAsBool("motor_vehicle"))
            {
                return false;
            }

            return true;
        }
コード例 #6
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            var containement = ParkingContainementType.Unknown;

            if (entityContext.Entity.Tags.EntryEquals("parking", "surface"))
            {
                containement = ParkingContainementType.Surface;
            }

            if (entityContext.Entity.Tags.ContainsKey("building"))
            {
                containement = ParkingContainementType.Building;
            }

            target.ContainementType = containement;

            return true;
        }
コード例 #7
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            if ( entityContext.Entity.Tags.EntryAsInt("capacity:disabled") > 0 )
            {
                target.IsDisabledParking = true;
            }

            if (entityContext.Entity.Tags.EntryEquals("parking_space", "disabled"))
            {
                target.IsDisabledParking = true;
            }

            if (entityContext.Entity.Tags.EntryAsBool("wheelchair"))
            {
                target.IsDisabledParking = true;
            }

            return true;
        }
コード例 #8
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            var accessType = ParkingAreaAccessType.Public;

            if (entityContext.Entity.Tags.EntryEquals("access", "customers"))
            {
                accessType = ParkingAreaAccessType.Customers;
            }

            if (entityContext.Entity.Tags.EntryAsBool("fee"))
            {
                accessType = ParkingAreaAccessType.Paid;
            }

            if (entityContext.Entity.Tags.EntryAsBool("visitor"))
            {
                accessType = ParkingAreaAccessType.Visitor;
            }

            target.AccessType = accessType;
            return true;
        }
コード例 #9
0
#pragma warning disable 1998
        public async Task<bool> Extract(OsmEntityContext entityContext, ParkingArea target)
#pragma warning restore 1998
        {
            var singleNode = entityContext.Entity as OsmNode;

            if ( singleNode != null )
            {
                target.Location = new MultiPolygon(new[] { new Polygon(singleNode.Location,MathUtil.MetersToDegrees(configuration.Model.NodeRadius))});
                return true;
            }

            var polygonList = new List<Polygon>();
            BuildPolygons(entityContext.EntityTree,polygonList);

            var resultPolygonList = new List<Polygon>();

            foreach( var polygon in polygonList)
            {
                if ( polygon.IsSelfIntersecting )
                {
                    resultPolygonList.Add(ConvexHull.CreateConvexHull(polygon.Vertices));
                }
                else
                {
                    resultPolygonList.Add(polygon);
                }
            }

            if ( resultPolygonList.Any() )
            {
                target.Location = new MultiPolygon(resultPolygonList.ToArray());
                return true;
            }

            return false;
        }