コード例 #1
0
 public void RaiseCallbackEvent(string eventArgument)
 {
     //Random rand = new Random();
     //_callbackresult = rand.Next().ToString();
     net.webservicex.www.AreaUnit area = new AreaUnit();
     _callbackresult = area.ChangeAreaUnit(double.Parse(eventArgument), Areas.square, Areas.acre).ToString();   
 }
コード例 #2
0
 public void AreaConversions(double value1, AreaUnit units1, double value2, AreaUnit units2)
 {
     new Area(value1, units1) {
         Units = units2
     }.Value.ShouldBeWithinEpsilonOf(value2);
     new Area(value2, units2) {
         Units = units1
     }.Value.ShouldBeWithinEpsilonOf(value1);
 }
コード例 #3
0
 public Area(double value, AreaUnit unit)
     : base(FLT.Area, NormalizeValue(value, unit), DefaultUnit)
 {
 }
コード例 #4
0
        public void calcArea(List <PackageArea> list, PackageArea area, decimal width, decimal height, decimal cigseq, AreaUnit unit)
        {
            list.Remove(area);
            // list.RemoveAll(x => x.beginx == area.beginx);
            PackageArea areal = new PackageArea();
            PackageArea areaC = new PackageArea();
            PackageArea arear = new PackageArea();

            areal.left   = area.left;
            areal.right  = areaC;
            areal.beginx = area.beginx;
            areal.width  = unit.beginx;
            areal.height = area.height;
            List <Cigarette> temp = area.cigaretteList.Where(x => x.index < unit.begin).ToList();

            areal.cigaretteList = new List <Cigarette>();
            areal.cigaretteList.AddRange(temp);
            //if (area.left != null)
            //{
            //    area.left.right = areal;
            //    if (Math.Abs(area.left.height - areal.height) <= deviation)
            //    {
            //        areal.left = area.left.left;
            //        areal.beginx = area.left.beginx;
            //        areal.cigaretteList = area.left.cigaretteList;
            //        areal.cigaretteList.AddRange(areal.cigaretteList);
            //            //(new Cigarette() { CigaretteNo = cigseq, fromx = area.left.width, tox = area.left.width + width, width = width });
            //        areal.width = area.left.width + areal.width;
            //        if (areal.height < area.left.height)
            //        {
            //            areal.height = area.left.height;
            //        }
            //        list.Remove(area.left);
            //    }
            //}

            areaC.left          = areal;
            areaC.beginx        = area.beginx + unit.beginx;
            areaC.height        = height;
            areaC.width         = width;
            areaC.cigaretteList = new List <Cigarette> {
                new Cigarette()
                {
                    CigaretteNo = cigseq, fromx = 0, tox = width, width = width
                }
            };
            areaC.right  = arear;
            arear.left   = areaC;
            arear.beginx = areaC.beginx + width;
            arear.width  = area.width - width - unit.beginx;
            arear.height = area.height;
            arear.right  = area.right;
            Cigarette tempC = area.cigaretteList.Where(x => x.index == unit.begin).FirstOrDefault();

            if (tempC.width < width)
            {
                arear.cigaretteList           = area.cigaretteList.Where(x => x.index > unit.begin).ToList();
                arear.cigaretteList[0].width -= (width - tempC.width);
            }
            else
            {
                arear.cigaretteList           = area.cigaretteList.Where(x => x.index >= unit.begin).ToList();
                arear.cigaretteList[0].width -= width;
            }
            //arear.cigaretteList[0].tox = arear.width;
            //arear.cigaretteList[0].width = arear.width;
            if (area.right != null)
            {
                area.right.left = arear;
            }
            list.Add(areal);
            list.Add(areaC);
            list.Add(arear);
        }
コード例 #5
0
 public static string GetAbbreviation(AreaUnit unit, CultureInfo culture = null)
 {
     return(UnitSystem.GetCached(culture).GetDefaultAbbreviation(unit));
 }
コード例 #6
0
 public string ToString(AreaUnit unit, CultureInfo culture, string format, params object[] args)
 {
     return(string.Format(culture, format, UnitFormatter.GetFormatArgs(unit, As(unit), culture, args)));
 }
コード例 #7
0
        public void Conversion(double value, AreaUnit unit, double expected, AreaUnit targetUnit, double accurracy = 1e-10)
        {
            var v = new Measurement <AreaUnit>(value, unit);

            v.In(targetUnit).Should().BeApproximately(expected, accurracy);
        }
コード例 #8
0
ファイル: Measure.ascx.cs プロジェクト: nbadw/sjr_atlas
    private double ConvertAreaUnits(double area, MapUnit baseUnits, AreaUnit toUnits)
    {
        double mArea = area;
        if (baseUnits == MapUnit.Feet)
        {
            if (toUnits == AreaUnit.Acres)
                mArea = area * 0.000022956;
            else if (toUnits == AreaUnit.Sq_Meters)
                mArea = area * 0.09290304;
            else if (toUnits == AreaUnit.Sq_Miles)
                mArea = area * 0.00000003587;
            else if (toUnits == AreaUnit.Sq_Kilometers)
                mArea = area * 0.09290304 / 1000000;
        }
        else if (baseUnits == MapUnit.Meters)
        {
            if (toUnits == AreaUnit.Acres)
                mArea = area * 0.0002471054;
            else if (toUnits == AreaUnit.Sq_Miles)
                mArea = area * 0.0000003861003;
            else if (toUnits == AreaUnit.Sq_Kilometers)
                mArea = area * 1.0e-6;
            else if (toUnits == AreaUnit.Sq_Feet)
                mArea = area * 10.76391042;
        }

        return mArea;
    }
コード例 #9
0
 /// <summary>
 /// Initializes a new instance of <see cref="Gu.Units.Wpf.AreaConverter"/>.
 /// </summary>
 /// <param name="unit"><see cref="Gu.Units.AreaUnit"/>.</param>
 public AreaConverter(AreaUnit unit)
 {
     Unit = unit;
 }
コード例 #10
0
ファイル: AreaUnitExtensions.cs プロジェクト: asapostolov/Geo
 public double To(AreaUnit unit)
 {
     return _value.ConvertTo(unit);
 }
コード例 #11
0
 public static Area From(double value, AreaUnit fromUnit)
 {
     return(new Area((double)value, fromUnit));
 }
コード例 #12
0
        private void CustomizeFixture(Fixture fixture)
        {
            // Customize common fixture setup here
            fixture.Customize <number>(e => e.FromFactory(() => fixture.CreateInRange(-100, 100)));

            fixture.Customize <TimeSpan>(e => e.FromFactory(() => TimeSpan.FromSeconds(fixture.Create <double>())));
            fixture.Customize <Time>(e => e.FromFactory(() => new Time(fixture.Create <number>())));

            fixture.Customize <WeightUnit>(e => e.FromFactory(() => fixture.CreateFromSet(WeightUnit.GetPredefinedUnits())));
            fixture.Customize <Weight>(e => e.FromFactory(() => new Weight(fixture.Create <number>()).Convert(fixture.Create <WeightUnit>())));

            fixture.Customize <LengthUnit>(e => e.FromFactory(() => fixture.CreateFromSet(LengthUnit.GetPredefinedUnits())));
            fixture.Customize <Length>(e => e.FromFactory(() => new Length(fixture.Create <number>()).Convert(fixture.Create <LengthUnit>())));

            fixture.Customize <SpeedUnit>(e => e.FromFactory(() => fixture.CreateFromSet(SpeedUnit.GetPredefinedUnits())));
            fixture.Customize <Speed>(e => e.FromFactory(() => new Speed(fixture.Create <number>()).Convert(fixture.Create <SpeedUnit>())));

            fixture.Customize <AreaUnit>(e => e.FromFactory(() => fixture.CreateFromSet(AreaUnit.GetPredefinedUnits())));
            fixture.Customize <Area>(e => e.FromFactory(() => new Area(fixture.Create <number>()).Convert(fixture.Create <AreaUnit>())));

            fixture.Customize <VolumeUnit>(e => e.FromFactory(() => fixture.CreateFromSet(VolumeUnit.GetPredefinedUnits())));
            fixture.Customize <Volume>(e => e.FromFactory(() => new Volume(fixture.Create <number>()).Convert(fixture.Create <VolumeUnit>())));

            fixture.Customize <PowerUnit>(e => e.FromFactory(() => fixture.CreateFromSet(PowerUnit.GetPredefinedUnits())));
            fixture.Customize <Power>(e => e.FromFactory(() => new Power(fixture.Create <number>()).Convert(fixture.Create <PowerUnit>())));

            fixture.Customize <EnergyUnit>(e => e.FromFactory(() => fixture.CreateFromSet(EnergyUnit.GetPredefinedUnits())));
            fixture.Customize <Energy>(e => e.FromFactory(() => new Energy(fixture.Create <number>()).Convert(fixture.Create <EnergyUnit>())));

            fixture.Customize <AngleUnit>(e => e.FromFactory(() => fixture.CreateFromSet(AngleUnit.GetPredefinedUnits())));
            fixture.Customize <Angle>(e => e.FromFactory(() => new Angle(fixture.Create <number>()).Convert(fixture.Create <AngleUnit>())));

            fixture.Customize <DegreeAngle>(e => e.FromFactory(() => new DegreeAngle(fixture.Create <number>())));
            fixture.Customize <RadianAngle>(e => e.FromFactory(() => new RadianAngle(fixture.Create <number>())));

            fixture.Customize <GeoCoordinate>(e => e.FromFactory(() => new GeoCoordinate(
                                                                     latitude: fixture.CreateInRange(GeoCoordinate.MinLatitude.TotalDegrees, GeoCoordinate.MaxLatitude.TotalDegrees),
                                                                     longitude: fixture.CreateInRange(GeoCoordinate.MinLongitude.TotalDegrees, GeoCoordinate.MaxLongitude.TotalDegrees))));
        }
コード例 #13
0
        void drawtool_DrawComplete(object sender, DrawEventArgs e)
        {
            e.Geometry.SpatialReference = MyMap.SpatialReference;
            Graphic graphic = new Graphic()
            {
                Geometry = e.Geometry
            };

            if (e.Geometry is MapPoint)
            {
                graphic.Symbol = LayoutRoot.Resources["DrawPointSymbol"] as SimpleMarkerSymbol;
            }
            else if (e.Geometry is Polyline)
            {
                graphic.Symbol = LayoutRoot.Resources["DrawPolylineSymbol"] as SimpleLineSymbol;
            }
            else if (e.Geometry is Polygon || e.Geometry is Envelope)
            {
                graphic.Symbol = LayoutRoot.Resources["DrawPolygonSymbol"] as SimpleFillSymbol;
            }

            drawGraphicsLayer.Graphics.Add(graphic);
            draw.IsEnabled = false;

            Geometry fromGeometry = null;
            Geometry toGeometry   = null;

            switch (mensurationOperation)
            {
            case MensurationOperation.DistanceAndAngle:
            case MensurationOperation.HeightFromBaseAndTop:
            case MensurationOperation.HeightFromBaseAndTopShadow:
            case MensurationOperation.HeightFromTopAndTopShadow:
                fromGeometry = (e.Geometry as Polyline).Paths[0][0];
                fromGeometry.SpatialReference = MyMap.SpatialReference;
                try
                {
                    toGeometry = (e.Geometry as Polyline).Paths[0][1];
                    toGeometry.SpatialReference = MyMap.SpatialReference;
                }
                catch (Exception)
                {
                }
                break;

            case MensurationOperation.AreaAndPerimeter:
            case MensurationOperation.Centroid:
            case MensurationOperation.Point:
                fromGeometry = e.Geometry;
                break;
            }

            esriUnits?LinearUnit = null;

            switch (comboLinearUnit.SelectedIndex)
            {
            case 0:
                LinearUnit = esriUnits.esriUnknownUnits;
                break;

            case 1:
                LinearUnit = esriUnits.esriInches;
                break;

            case 2:
                LinearUnit = esriUnits.esriPoints;
                break;

            case 3:
                LinearUnit = esriUnits.esriFeet;
                break;

            case 4:
                LinearUnit = esriUnits.esriYards;
                break;

            case 5:
                LinearUnit = esriUnits.esriMiles;
                break;

            case 6:
                LinearUnit = esriUnits.esriNauticalMiles;
                break;

            case 7:
                LinearUnit = esriUnits.esriMillimeters;
                break;

            case 8:
                LinearUnit = esriUnits.esriCentimeters;
                break;

            case 9:
                LinearUnit = esriUnits.esriMeters;
                break;

            case 10:
                LinearUnit = esriUnits.esriKilometers;
                break;

            case 11:
                LinearUnit = esriUnits.esriDecimalDegrees;
                break;

            case 12:
                LinearUnit = esriUnits.esriDecimeters;
                break;
            }

            DirectionUnit AngularUnit = DirectionUnit.Default;

            switch (comboAngularUnit.SelectedIndex)
            {
            case 0:
                AngularUnit = DirectionUnit.Default;
                break;

            case 1:
                AngularUnit = DirectionUnit.Radians;
                break;

            case 2:
                AngularUnit = DirectionUnit.DecimalDegrees;
                break;

            case 3:
                AngularUnit = DirectionUnit.DegreesMinutesSeconds;
                break;

            case 4:
                AngularUnit = DirectionUnit.Gradians;
                break;

            case 5:
                AngularUnit = DirectionUnit.Gons;
                break;
            }

            AreaUnit AreaUnits = AreaUnit.Default;

            switch (comboAreaUnit.SelectedIndex)
            {
            case 0:
                AreaUnits = AreaUnit.Default;
                break;

            case 1:
                AreaUnits = AreaUnit.SquareInches;
                break;

            case 2:
                AreaUnits = AreaUnit.SquareFeet;
                break;

            case 3:
                AreaUnits = AreaUnit.SquareYards;
                break;

            case 4:
                AreaUnits = AreaUnit.Acres;
                break;

            case 5:
                AreaUnits = AreaUnit.SquareMiles;
                break;

            case 6:
                AreaUnits = AreaUnit.SquareMillimeters;
                break;

            case 7:
                AreaUnits = AreaUnit.SquareCentimeters;
                break;

            case 8:
                AreaUnits = AreaUnit.SquareDecimeters;
                break;

            case 9:
                AreaUnits = AreaUnit.SquareMeters;
                break;

            case 10:
                AreaUnits = AreaUnit.Ares;
                break;

            case 11:
                AreaUnits = AreaUnit.Hectares;
                break;

            case 12:
                AreaUnits = AreaUnit.SquareKilometers;
                break;
            }

            if (!mensurationTask.IsBusy)
            {
                switch (mensurationOperation)
                {
                case MensurationOperation.AreaAndPerimeter:
                    MensurationAreaParameter p1 = new MensurationAreaParameter();
                    p1.LinearUnit = LinearUnit;
                    p1.AreaUnits  = AreaUnits;
                    mensurationTask.AreaAndPerimeterAsync(fromGeometry as Polygon, p1);
                    break;

                case MensurationOperation.Centroid:
                    MensurationPointParameter p3 = new MensurationPointParameter();
                    mensurationTask.CentroidAsync(fromGeometry as Polygon, p3);
                    break;

                case MensurationOperation.DistanceAndAngle:
                    MensurationLengthParameter p5 = new MensurationLengthParameter();
                    p5.LinearUnit  = LinearUnit;
                    p5.AngularUnit = AngularUnit;
                    mensurationTask.DistanceAndAngleAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p5);
                    break;

                case MensurationOperation.Point:
                    MensurationPointParameter p7 = new MensurationPointParameter();
                    mensurationTask.PointAsync(fromGeometry as MapPoint, p7);
                    break;

                case MensurationOperation.HeightFromBaseAndTop:
                    MensurationHeightParameter p9 = new MensurationHeightParameter();
                    p9.LinearUnit = LinearUnit;
                    mensurationTask.HeightFromBaseAndTopAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p9);
                    break;

                case MensurationOperation.HeightFromBaseAndTopShadow:
                    MensurationHeightParameter p10 = new MensurationHeightParameter();
                    p10.LinearUnit = LinearUnit;
                    mensurationTask.HeightFromBaseAndTopShadowAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p10);
                    break;

                case MensurationOperation.HeightFromTopAndTopShadow:
                    MensurationHeightParameter p11 = new MensurationHeightParameter();
                    p11.LinearUnit = LinearUnit;
                    mensurationTask.HeightFromTopAndTopShadowAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p11);
                    break;
                }
            }
        }
コード例 #14
0
 /// <summary>
 ///     Dynamically convert from value and unit enum <see cref="AreaUnit" /> to <see cref="Area" />.
 /// </summary>
 /// <param name="value">Value to convert from.</param>
 /// <param name="fromUnit">Unit to convert from.</param>
 /// <returns>Area unit value.</returns>
 public static Area?From(QuantityValue?value, AreaUnit fromUnit)
 {
     return(value.HasValue ? new Area((double)value.Value, fromUnit) : default(Area?));
 }
コード例 #15
0
ファイル: AreaUnitExtensions.cs プロジェクト: asapostolov/Geo
 public static AreaConversion ConvertFrom(this double value, AreaUnit unit)
 {
     return new AreaConversion(value * unit.GetConversionFactor());
 }
コード例 #16
0
 private Area CreateAreaInUnit(AreaUnit unit) =>
 Fixture
 .Create <Area>()
 .Convert(unit);
コード例 #17
0
 /// <summary>
 ///     Get string representation of value and unit. Using two significant digits after radix.
 /// </summary>
 /// <param name="unit">Unit representation to use.</param>
 /// <param name="provider">Format to use for localization and number formatting. Defaults to <see cref="UnitSystem.DefaultCulture" />.</param>
 /// <returns>String representation.</returns>
 public string ToString(AreaUnit unit, [CanBeNull] IFormatProvider provider)
 {
     return(ToString(unit, provider, 2));
 }
コード例 #18
0
 /// <summary>
 /// Get the Area in whatever unit you want
 /// </summary>
 /// <param name="cellArea"></param>
 /// <param name="outputUnits"></param>
 /// <returns></returns>
 public double GetAreaValue(Area cellArea, AreaUnit outputUnits)
 {
     return(GetArea(cellArea).As(outputUnits));
 }
コード例 #19
0
        public static string GetAbbreviation(AreaUnit unit, [CanBeNull] IFormatProvider provider)
        {
            provider = provider ?? UnitSystem.DefaultCulture;

            return(UnitSystem.GetCached(provider).GetDefaultAbbreviation(unit));
        }
コード例 #20
0
        public void Parse_ReturnsUnitMappedByCustomAbbreviation(string customAbbreviation, AreaUnit expected)
        {
            var abbrevCache = new UnitAbbreviationsCache();

            abbrevCache.MapUnitToAbbreviation(expected, customAbbreviation);
            var parser = new UnitParser(abbrevCache);

            var actual = parser.Parse <AreaUnit>(customAbbreviation);

            Assert.Equal(expected, actual);
        }
コード例 #21
0
 public static void HasConversion(this PropertyBuilder <Area> propertyBuilder, AreaUnit unit) =>
 propertyBuilder.HasConversion(v => v.As(unit), v => new Area(v, unit));
コード例 #22
0
ファイル: Measure.ascx.cs プロジェクト: nbadw/sjr_atlas
    public string ProcessMeasureRequest(NameValueCollection queryString)
    {
        if (m_mapFunctionality == null) GetMeasureResource();
        object o = Session["MeasureMapUnits"];
        if (o != null)
            m_mapUnits = (MapUnit)Enum.Parse(typeof(MapUnit), o.ToString());
        else if (m_startMapUnits == MapUnit.Resource_Default)
            m_mapUnits = GetResourceDefaultMapUnit();
        else
            m_mapUnits = m_startMapUnits;

        string eventArg = queryString["EventArg"].ToLower();
        string vectorAction = queryString["VectorAction"].ToLower();
        string[] coordPairs, xys;
        string coordString = queryString["coords"];
        if (coordString == null && coordString.Length == 0)
            coordString = "";
        coordPairs = coordString.Split(char.Parse("|"));
        string mapUnitString = queryString["MapUnits"];
        if (mapUnitString != null && mapUnitString.Length > 0)
            m_mapUnits = (MapUnit)Enum.Parse(typeof(MapUnit), mapUnitString);
        Session["MeasureMapUnits"] = m_mapUnits;
        string measureUnitString = queryString["MeasureUnits"];
        if (measureUnitString != null && measureUnitString.Length > 0)
            m_measureUnits = (MeasureUnit)Enum.Parse(typeof(MeasureUnit),measureUnitString);
        string areaUnitstring = queryString["AreaUnits"];
        if (areaUnitstring != null && areaUnitstring.Length > 0)
            m_areaUnits = (AreaUnit)Enum.Parse(typeof(AreaUnit),areaUnitstring);
        string response = "";
        PointCollection points = new PointCollection();
        PointCollection dPoints = new PointCollection();
        ArrayList distances = new ArrayList();
        double totalDistance = 0;
        double segmentDistance = 0;
        double area = 0;
        double perimeter = 0;
        double roundFactor = Math.Pow(10, m_numberDecimals);
        double xD, yD, tempDist, tempDist2, tempArea, x1, x2, y1, y2;
        TransformationParams transformationParameters = m_map.GetTransformationParams(TransformationDirection.ToMap);
        if (vectorAction == "addpoint")
        {
            if (coordPairs != null && coordPairs.Length > 1)
            {
                for (int i = 0; i < coordPairs.Length; i++)
                {
                    xys = coordPairs[i].Split(char.Parse(":"));
                    points.Add(Point.ToMapPoint(Convert.ToInt32(xys[0]), Convert.ToInt32(xys[1]), transformationParameters));
                    if (i > 0)
                    {
                        if (m_mapUnits == MapUnit.Degrees)
                        {
                            // use great circle formula
                            tempDist = DegreeToFeetDistance(points[i - 1].X, points[i - 1].Y, points[i].X, points[i].Y);
                            y1 = DegreeToFeetDistance(points[i].X, points[i].Y, points[i].X, 0);
                            x1 = DegreeToFeetDistance(points[i].X, points[i].Y, 0, points[i].Y);
                            dPoints.Add(new Point(x1, y1));
                            segmentDistance = ConvertUnits(tempDist, MapUnit.Feet, m_measureUnits);
                        }
                        else
                        {
                            // get third side of triangle for distance
                            xD = Math.Abs(points[i].X - points[i - 1].X);
                            yD = Math.Abs(points[i].Y - points[i - 1].Y);
                            tempDist = Math.Sqrt(Math.Pow(xD, 2) + Math.Pow(yD, 2));
                            segmentDistance = ConvertUnits(tempDist, m_mapUnits, m_measureUnits);

                        }

                        distances.Add(segmentDistance);
                        totalDistance += segmentDistance;
                        segmentDistance = Math.Round(segmentDistance * roundFactor) / roundFactor;
                        totalDistance = Math.Round(totalDistance * roundFactor) / roundFactor;
                    }
                    else
                    {
                        if (m_mapUnits == MapUnit.Degrees)
                        {
                            y1 = DegreeToFeetDistance(points[i].X, points[i].Y, points[i].X, 0);
                            x1 = DegreeToFeetDistance(points[i].X, points[i].Y, 0, points[i].Y);
                            dPoints.Add(new Point(x1, y1));
                        }
                    }
                }
            }
            if (eventArg == "polygon")
            {
                if (points.Count > 2)
                {
                    if (m_mapUnits == MapUnit.Degrees)
                    {
                        tempDist = DegreeToFeetDistance(points[points.Count - 1].X, points[points.Count - 1].Y, points[0].X, points[0].Y);
                        tempDist2 = ConvertUnits(tempDist, MapUnit.Feet, m_measureUnits);
                        distances.Add(tempDist2);
                        dPoints.Add(dPoints[0]);
                    }
                    else
                    {
                        xD = Math.Abs(points[points.Count - 1].X - points[0].X);
                        yD = Math.Abs(points[points.Count - 1].Y - points[0].Y);
                        tempDist = Math.Sqrt(Math.Pow(xD, 2) + Math.Pow(yD, 2));
                        tempDist2 = ConvertUnits(tempDist, m_mapUnits, m_measureUnits);
                        distances.Add(tempDist2);
                    }
                    points.Add(points[0]);
                    perimeter = totalDistance + tempDist2;
                    // add area calculation
                    tempArea = 0;
                    MapUnit mUnits = m_mapUnits;
                    for (int j = 0; j < points.Count - 1; j++)
                    {
                        if (m_mapUnits == MapUnit.Degrees)
                        {
                            x1 = Convert.ToDouble(dPoints[j].X);
                            x2 = Convert.ToDouble(dPoints[j + 1].X);
                            y1 = Convert.ToDouble(dPoints[j].Y);
                            y2 = Convert.ToDouble(dPoints[j + 1].Y);
                            mUnits = MapUnit.Feet;
                        }
                        else
                        {
                            x1 = Convert.ToDouble(points[j].X);
                            x2 = Convert.ToDouble(points[j + 1].X);
                            y1 = Convert.ToDouble(points[j].Y);
                            y2 = Convert.ToDouble(points[j + 1].Y);
                        }
                        //tempArea += tempArea + (x1 + x2) * (y1 - y2);
                        double xDiff = x2 - x1;
                        double yDiff = y2 - y1;
                        tempArea += x1 * yDiff - y1 * xDiff;
                    }
                    tempArea = Math.Abs(tempArea) / 2;
                    area = ConvertAreaUnits(tempArea, mUnits, m_areaUnits);
                    perimeter = Math.Round(perimeter * roundFactor) / roundFactor;
                    area = Math.Round(area * roundFactor) / roundFactor;
                    response = String.Format("<table cellspacing='0'  ><tr><td>Perimeter: </td><td align='right'>{0}</td><td>{1}</td></tr><tr><td>Area:</td><td  align='right'>{2}</td><td>{3}</td></tr></table>", perimeter, WriteMeasureUnitDropdown(), area, WriteAreaUnitDropdown());

                }
                else
                    response = String.Format("<table cellspacing='0' ><tr><td>Perimeter: </td><td align='right'> 0</td><td>{0}</td></tr><tr><td>Area:</td><td align='right'>0 </td><td>{1}</td></tr></table>", WriteMeasureUnitDropdown(), WriteAreaUnitDropdown());
            }
            else
                response = String.Format("<table cellspacing='0' ><tr><td>Segment: </td><td align='right'>{0} </td><td>{1}</td></tr><tr><td>Total Length:</td><td align='right'>{2} </td><td>{3}</td></tr></table>", segmentDistance, m_measureUnits.ToString(), totalDistance, WriteMeasureUnitDropdown());
        }
        else if (vectorAction == "coordinates")
        {
            xys = coordPairs[0].Split(char.Parse(":"));
            Point coordPoint = Point.ToMapPoint(Convert.ToInt32(xys[0]), Convert.ToInt32(xys[1]), transformationParameters);

            response = String.Format("<table cellspacing='0' ><tr><td>X Coordinate:</td><td align='right'>{0}</td></tr><tr><td>Y Coordinate:</td><td align='right'>{1}</td></tr></table>", (Math.Round(coordPoint.X * roundFactor) / roundFactor).ToString(), (Math.Round(coordPoint.Y * roundFactor) / roundFactor).ToString());
        }
        else if (vectorAction == "finish")
        {
            response = "Shape complete";
        }
        return String.Format("measure:::{0}:::{1}:::{2}", m_id, vectorAction, response);
    }
コード例 #23
0
 /// <summary>
 ///     Get unit abbreviation string.
 /// </summary>
 /// <param name="unit">Unit to get abbreviation for.</param>
 /// <returns>Unit abbreviation string.</returns>
 public static string GetAbbreviation(AreaUnit unit)
 {
     return(GetAbbreviation(unit, null));
 }
コード例 #24
0
        public override void OnApplyTemplate()
#endif
        {
            base.OnApplyTemplate();

            _measureLengthButton = GetTemplateChild("MeasureLength") as ToggleButton;
            if (_measureLengthButton != null)
            {
                _measureLengthButton.Click += OnToggleMeasureMode;
            }

            _measureAreaButton = GetTemplateChild("MeasureArea") as ToggleButton;
            if (_measureAreaButton != null)
            {
                _measureAreaButton.Click += OnToggleMeasureMode;
            }

            _measureFeatureButton = GetTemplateChild("MeasureFeature") as ToggleButton;
            if (_measureFeatureButton != null)
            {
                _measureFeatureButton.Click += OnToggleMeasureMode;
            }

            _clearButton = GetTemplateChild("Clear") as ButtonBase;
            if (_clearButton != null)
            {
                _measureFeatureResultOverlay.Graphics.CollectionChanged += (s, e) =>
                {
                    if (Mode == MeasureToolbarMode.Feature)
                    {
                        _clearButton.IsEnabled = _measureFeatureResultOverlay.Graphics.Any();
                        AddMeasureFeatureResultOverlay(MapView);
                    }
                };
                _clearButton.Click += OnClear;
            }

            _measureResultTextBlock = GetTemplateChild("MeasureResult") as TextBlock;
            _linearUnitsSelector    = GetTemplateChild("LinearUnitsSelector") as UIElement;
            _areaUnitsSelector      = GetTemplateChild("AreaUnitsSelector") as UIElement;
            if (LinearUnits == null || !LinearUnits.Any())
            {
                LinearUnits = new LinearUnit[]
                {
                    Geometry.LinearUnits.Centimeters,
                    Geometry.LinearUnits.Feet,
                    Geometry.LinearUnits.Inches,
                    Geometry.LinearUnits.Kilometers,
                    Geometry.LinearUnits.Meters,
                    Geometry.LinearUnits.Miles,
                    Geometry.LinearUnits.Millimeters,
                    Geometry.LinearUnits.NauticalMiles,
                    Geometry.LinearUnits.Yards
                };
            }

            if (SelectedLinearUnit == null)
            {
                SelectedLinearUnit = LinearUnits.Any(u => u == Geometry.LinearUnits.Meters) ?
                                     Geometry.LinearUnits.Meters :
                                     LinearUnits.FirstOrDefault();
            }

            if (AreaUnits == null || !AreaUnits.Any())
            {
                AreaUnits = new AreaUnit[]
                {
                    Geometry.AreaUnits.Acres,
                    Geometry.AreaUnits.Hectares,
                    Geometry.AreaUnits.SquareCentimeters,
                    Geometry.AreaUnits.SquareDecimeters,
                    Geometry.AreaUnits.SquareFeet,
                    Geometry.AreaUnits.SquareKilometers,
                    Geometry.AreaUnits.SquareMeters,
                    Geometry.AreaUnits.SquareMiles,
                    Geometry.AreaUnits.SquareMillimeters,
                    Geometry.AreaUnits.SquareYards
                };
            }

            if (SelectedAreaUnit == null)
            {
                SelectedAreaUnit = AreaUnits.Any(u => u == Geometry.AreaUnits.SquareMiles) ?
                                   Geometry.AreaUnits.SquareMiles :
                                   AreaUnits.FirstOrDefault();
            }

            if (LineSketchEditor == null)
            {
                LineSketchEditor = new SketchEditor();
            }

            if (AreaSketchEditor == null)
            {
                AreaSketchEditor = new SketchEditor();
            }

            if (SelectionLineSymbol == null)
            {
                SelectionLineSymbol = LineSketchEditor?.Style?.LineSymbol;
            }

            if (SelectionFillSymbol == null)
            {
                SelectionFillSymbol = AreaSketchEditor?.Style?.FillSymbol;
            }

            Mode = MeasureToolbarMode.None;
            PrepareMeasureMode();
        }
コード例 #25
0
        /// <summary>
        ///     Get unit abbreviation string.
        /// </summary>
        /// <param name="unit">Unit to get abbreviation for.</param>
        /// <returns>Unit abbreviation string.</returns>
        /// <param name="cultureName">Name of culture (ex: "en-US") to use when parsing number and unit. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
        public static string GetAbbreviation(AreaUnit unit, [CanBeNull] string cultureName)
        {
            IFormatProvider provider = GetFormatProviderFromCultureName(cultureName);

            return(UnitAbbreviationsCache.Default.GetDefaultAbbreviation(unit, provider));
        }
コード例 #26
0
 public string ToString(AreaUnit unit, CultureInfo culture = null, int significantDigitsAfterRadix = 2)
 {
     return(ToString(unit, culture, UnitFormatter.GetFormat(As(unit), significantDigitsAfterRadix)));
 }
コード例 #27
0
 public static Area From(decimal value, AreaUnit fromUnit)
 {
     return(new Area((decimal)value, fromUnit));
 }
コード例 #28
0
 public ConstructorForValueAndUnitTestData(decimal value, AreaUnit unit, decimal expectedSquareMetres)
     : base(new Area((number)value, unit), new Area((number)expectedSquareMetres))
 {
 }
コード例 #29
0
 public static bool TryParseUnit(string str, out AreaUnit unit)
 {
     return(TryParseUnit(str, null, out unit));
 }
コード例 #30
0
 private Area(FLT flt, double value, AreaUnit unit)
     : base(flt, value, unit)
 {
 }
コード例 #31
0
        /// <summary>
        ///     Parse a unit string.
        /// </summary>
        /// <param name="str">String to parse. Typically in the form: {number} {unit}</param>
        /// <param name="unit">The parsed unit if successful.</param>
        /// <returns>True if successful, otherwise false.</returns>
        /// <example>
        ///     Length.TryParseUnit("m", new CultureInfo("en-US"));
        /// </example>
        /// <param name="cultureName">Name of culture (ex: "en-US") to use when parsing number and unit. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
        public static bool TryParseUnit(string str, [CanBeNull] string cultureName, out AreaUnit unit)
        {
            IFormatProvider provider = GetFormatProviderFromCultureName(cultureName);

            return(UnitParser.Default.TryParse <AreaUnit>(str, provider, out unit));
        }
コード例 #32
0
        public void calcPackage(List <T_PACKAGE_TASK> task, List <PackageArea> list)
        {
            var     unnormaltask    = task.Where(x => x.CIGTYPE == "2").ToList();
            var     normaltask      = task.Where(x => x.CIGTYPE == "1").ToList();
            decimal startpackagenum = allpackagenum;

            int packageNO = 1;
            //var templist = task.Where(x => x.STATE != 10).ToList().Take(taskCount).ToList();
            var templist = unnormaltask.Where(x => x.STATE == 0).ToList().Take(taskCount).ToList();

            if (templist != null && templist.Count > 0)
            {
                while (templist.Where(x => x.STATE == 10) != null && templist.Where(x => x.STATE != 10).Count() > 0)
                {
                    // templist = templist.Where(x => x.STATE != 10).ToList();
                    decimal minHeight = 0;
                    if (list.Where(x => x.isscan == 0 && x.width > minWidth) != null && list.Where(x => x.isscan == 0 && x.width > minWidth).Count() > 0)
                    {
                        minHeight = list.Where(x => x.isscan == 0 && x.width > minWidth).Min(x => x.height);
                    }
                    else
                    {
                        decimal sciseq = templist.Where(x => x.STATE != 10).Min(x => x.CIGSEQ) ?? 0;
                        List <T_PACKAGE_TASK> bigList = templist.Where(x => x.STATE == 10 && x.CIGSEQ > sciseq).OrderBy(x => x.CIGSEQ).ToList();//有大于当前序号已排好的烟
                        if (bigList != null && bigList.Count > 0)
                        {
                            //  bigList = templist.Where(x => x.STATE == 10).OrderBy(x => x.CIGSEQ).ToList();

                            //list.Clear();

                            list = RollBackList(list, bigList);
                            list.ForEach(x => x.isscan = 0);
                            templist.ForEach(x => { x.PACKAGESEQ = 0; x.STATE = 0; x.DOUBLETAKE = "0"; });
                            templist  = templist.Where(x => x.CIGSEQ <= sciseq).ToList();
                            minHeight = list.Where(x => x.isscan == 0 && x.width > minWidth).Min(x => x.height);
                            //List<PackageArea> list1 = new List<PackageArea>(list);
                            //diclist.Push(list1);
                        }
                        else
                        {
                            NormalCig(task, normaltask, 1);

                            packageNO     += 1;
                            allpackagenum += 1;
                            list.Clear();
                            diclist.Clear();
                            PackageArea areainit = new PackageArea();
                            areainit.width         = packageWidth;
                            areainit.height        = 0;
                            areainit.cigaretteList = new List <Cigarette>()
                            {
                                new Cigarette()
                                {
                                    CigaretteNo = 0, fromx = 0, tox = packageWidth, width = packageWidth
                                }
                            };
                            list.Add(areainit);

                            diclist.Push(CopyList(list));
                        }
                    }
                    PackageArea area = list.Find(x => x.height == minHeight && x.isscan == 0 && x.width > minWidth);
                    area = list.FindAll(x => x.beginx == area.beginx && x.isscan == 0 && x.width > minWidth).OrderByDescending(x => x.height).FirstOrDefault();
                    //是否有相同品牌的烟
                    List <ItemGroup> allGroupList = templist.Where(x => x.STATE != 10).GroupBy(x => x.CIGARETTECODE).Select(x => new ItemGroup()
                    {
                        CigaretteCode = x.Key, Total = x.Count()
                    }).ToList();

                    List <ItemGroup> groupList = allGroupList.FindAll(x => x.Total > 1);

                    foreach (var item in groupList)
                    {
                        var doubleList = templist.Where(x => x.STATE != 10 && x.CIGARETTECODE == item.CigaretteCode).Take(2).ToList();
                        if (Math.Abs((doubleList[0].CIGSEQ ?? 0) - (doubleList[1].CIGSEQ ?? 0)) != 1)
                        {
                            item.Total = 100;
                        }
                    }
                    groupList.RemoveAll(x => x.Total == 100);
                    //  List<ItemGroup> smallGroupList = allGroupList;


                    String          tempcode  = "";
                    decimal         tempWidth = 0;
                    decimal         gdc       = 0;//高度差
                    List <AreaUnit> unit      = new List <AreaUnit>();
                    AreaUnit        tempunit  = null;
                    if (groupList != null && groupList.Count > 0)//优先双抓 而且是宽度大的双抓
                    {
                        //  List<Cigarette> cigList = area.cigaretteList;
                        foreach (var v in groupList)
                        {
                            unit.Clear();
                            T_PACKAGE_TASK temptask = templist.Find(x => x.CIGARETTECODE == v.CigaretteCode);
                            decimal        cgiseq   = templist.Where(x => x.CIGARETTECODE == v.CigaretteCode && x.STATE != 10).FirstOrDefault().CIGSEQ ?? 0;
                            if ((temptask.CIGWIDTH + jx) * 2 <= area.width && area.height + temptask.CIGHIGH < packageHeight)//小于区域宽度,同时小于整包高度
                            {
                                int i = 0;

                                decimal flag     = 1;
                                decimal lastflag = 0;
                                decimal beginx   = 0;
                                foreach (var item in area.cigaretteList)
                                {
                                    item.index = i;
                                    if (cgiseq < item.CigaretteNo)
                                    {
                                        flag = 0;
                                    }
                                    else
                                    {
                                        flag = 1;
                                    }
                                    if (lastflag == 1 && flag == 1)
                                    {
                                        AreaUnit u = unit.ElementAt(unit.Count - 1);
                                        u.width += item.width;
                                        u.end    = i;
                                    }
                                    else if (lastflag == 0 && flag == 1)
                                    {
                                        AreaUnit cell = new AreaUnit();
                                        cell.width  = item.width;
                                        cell.begin  = i;
                                        cell.end    = i;
                                        cell.beginx = beginx;
                                        unit.Add(cell);
                                    }

                                    lastflag = flag;

                                    beginx += item.width;

                                    i++;
                                }
                                foreach (var cell in unit)
                                {
                                    if ((temptask.CIGWIDTH + jx) * 2 <= cell.width) //后面的seq必须大于已放的才能放
                                    {
                                        if (tempWidth <= temptask.CIGWIDTH)
                                        {
                                            if (tempWidth == temptask.CIGWIDTH)
                                            {
                                                if (area.left != null)
                                                {
                                                    //看左边高度差 取相差小的
                                                    if (Math.Abs(area.height + (temptask.CIGHIGH ?? 0) - area.left.height) - Math.Abs(gdc) < 0)
                                                    {
                                                        tempWidth = temptask.CIGWIDTH ?? 0;
                                                        tempcode  = v.CigaretteCode;
                                                        gdc       = area.height + (temptask.CIGHIGH ?? 0) - area.left.height;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                tempWidth = temptask.CIGWIDTH ?? 0;
                                                tempcode  = v.CigaretteCode;
                                                if (area.left != null)
                                                {
                                                    gdc = area.height + (temptask.CIGHIGH ?? 0) - area.left.height;
                                                }
                                            }
                                        }
                                        tempunit = cell;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    if (tempcode != "" && tempunit != null)
                    {
                        var     chooseItem = templist.FindAll(x => x.CIGARETTECODE == tempcode && x.STATE != 10).OrderBy(x => x.CIGSEQ).Take(2).ToList();
                        decimal width      = 0;
                        decimal height     = 0;
                        decimal cigseq     = 0;

                        foreach (var v in chooseItem)
                        {
                            v.PACKAGESEQ    = packageNO;
                            v.CIGWIDTHX     = area.beginx + tempunit.beginx + v.CIGWIDTH + jx;//两条当做一条
                            v.CIGHIGHY      = area.height + v.CIGHIGH;
                            v.STATE         = 10;
                            v.DOUBLETAKE    = "1";
                            v.ALLPACKAGESEQ = allpackagenum;
                            width          += (v.CIGWIDTH ?? 0) + jx;
                            height          = area.height + (v.CIGHIGH ?? 0);
                            cigseq          = v.CIGSEQ ?? 0;
                        }
                        //更新area
                        if (tempunit.begin == 0)
                        {
                            calcArea(list, area, width, height, cigseq);
                        }
                        else
                        {
                            calcArea(list, area, width, height, cigseq, tempunit);
                        }

                        diclist.Push(CopyList(list));
                    }
                    else
                    {
                        tempWidth = 0;
                        gdc       = 0;//高度差
                        unit.Clear();
                        foreach (var v in allGroupList)
                        {
                            T_PACKAGE_TASK temptask = templist.Find(x => x.CIGARETTECODE == v.CigaretteCode && x.STATE != 10);
                            int            i        = 0;
                            unit.Clear();
                            decimal flag     = 1;
                            decimal lastflag = 0;
                            decimal beginx   = 0;
                            foreach (var item in area.cigaretteList)
                            {
                                item.index = i;
                                if (temptask.CIGSEQ < item.CigaretteNo)
                                {
                                    flag = 0;
                                }
                                else
                                {
                                    flag = 1;
                                }
                                if (lastflag == 1 && flag == 1)
                                {
                                    AreaUnit u = unit.ElementAt(unit.Count - 1);
                                    u.width += item.width;
                                    u.end    = i;
                                }
                                else if (lastflag == 0 && flag == 1)
                                {
                                    AreaUnit cell = new AreaUnit();
                                    cell.width  = item.width;
                                    cell.begin  = i;
                                    cell.end    = i;
                                    cell.beginx = beginx;
                                    unit.Add(cell);
                                }

                                lastflag = flag;

                                beginx += item.width;

                                i++;
                            }
                            if (temptask.CIGWIDTH + jx * 2 <= area.width && area.height + temptask.CIGHIGH < packageHeight)
                            {
                                foreach (var cell in unit)
                                {
                                    if (temptask.CIGWIDTH + jx * 2 <= cell.width) //后面的seq必须大于已放的才能放
                                    {
                                        if (tempWidth <= temptask.CIGWIDTH + jx * 2)
                                        {
                                            if (tempWidth == temptask.CIGWIDTH + jx * 2)
                                            {
                                                if (area.left != null)
                                                {
                                                    //看左边高度差 取相差小的
                                                    if (Math.Abs(area.height + (temptask.CIGHIGH ?? 0) - area.left.height) - Math.Abs(gdc) < 0)
                                                    {
                                                        tempWidth = (temptask.CIGWIDTH ?? 0) + jx * 2;
                                                        tempcode  = v.CigaretteCode;
                                                        gdc       = area.height + (temptask.CIGHIGH ?? 0) - area.left.height;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                tempWidth = (temptask.CIGWIDTH ?? 0) + jx * 2;
                                                tempcode  = v.CigaretteCode;
                                                if (area.left != null)
                                                {
                                                    gdc = area.height + (temptask.CIGHIGH ?? 0) - area.left.height;
                                                }
                                            }
                                        }
                                        tempunit = cell;
                                        break;
                                    }
                                }
                            }
                        }
                        if (tempcode != "" && tempunit != null)
                        {
                            var     chooseItem = templist.FindAll(x => x.CIGARETTECODE == tempcode && x.STATE != 10).OrderBy(x => x.CIGSEQ).FirstOrDefault();
                            decimal width      = 0;
                            decimal height     = 0;
                            decimal cigseq     = 0;


                            chooseItem.PACKAGESEQ    = packageNO;
                            chooseItem.CIGWIDTHX     = area.beginx + tempunit.beginx + chooseItem.CIGWIDTH / 2 + jx;
                            chooseItem.CIGHIGHY      = area.height + chooseItem.CIGHIGH;
                            chooseItem.STATE         = 10;
                            chooseItem.ALLPACKAGESEQ = allpackagenum;
                            width += (chooseItem.CIGWIDTH ?? 0) + jx * 2;
                            height = area.height + (chooseItem.CIGHIGH ?? 0);
                            cigseq = chooseItem.CIGSEQ ?? 0;
                            //更新area
                            //更新area
                            if (tempunit.begin == 0)
                            {
                                calcArea(list, area, width, height, cigseq);
                            }
                            else
                            {
                                calcArea(list, area, width, height, cigseq, tempunit);
                            }
                            diclist.Push(CopyList(list));
                        }
                        else
                        {
                            area.isscan = 1;
                        }
                    }


                    if (templist.Where(x => x.STATE != 10) == null || templist.Where(x => x.STATE != 10).Count() == 0)

                    {
                        list.ForEach(x => x.isscan = 0);
                        templist = task.Where(x => x.STATE != 10).ToList().Take(taskCount).ToList();
                    }
                }
            }
        }
コード例 #33
0
 public Plan()
 {
     this.angleUnitsField = DirectionUnit.Degree;
     this.areaUnitsField = AreaUnit.Squaremeter;
     this.distanceUnitsField = DistanceUnit.Meter;
     this.directionFormatField = DirectionFormat.northazimuth;
     this.lineParametersField = CadastralLineParameter.bearingAndDistance;
     this.distanceAtGroundField = true;
     this.combinedGridFactorField = 1;
     this.trueMidBearingField = false;
     this.accuracyField = 0;
     this.oIDField = 0;
     this.internalAnglesField = false;
 }
コード例 #34
0
 private AreaUnit CreateUnitOtherThan(params AreaUnit[] unitsToExclude) =>
 Fixture.CreateFromSet(AreaUnit.GetPredefinedUnits().Except(unitsToExclude));
コード例 #35
0
 /// <summary>
 ///     Get string representation of value and unit. Using current UI culture and two significant digits after radix.
 /// </summary>
 /// <param name="unit">Unit representation to use.</param>
 /// <returns>String representation.</returns>
 public string ToString(AreaUnit unit)
 {
     return(ToString(unit, null, 2));
 }
コード例 #36
0
        /// <summary>
        ///     Converts this Area to another Area with the unit representation <paramref name="unit" />.
        /// </summary>
        /// <returns>A Area with the specified unit.</returns>
        public Area ToUnit(AreaUnit unit)
        {
            var convertedValue = AsBaseNumericType(unit);

            return(new Area(convertedValue, unit));
        }
コード例 #37
0
ファイル: AreaUnitExtensions.cs プロジェクト: asapostolov/Geo
 public static double ConvertTo(this double metres, AreaUnit unit)
 {
     return metres / unit.GetConversionFactor();
 }
コード例 #38
0
        public void Parse_ReturnsUnitMappedByCustomAbbreviation(string customAbbreviation, AreaUnit expected)
        {
            UnitSystem unitSystem = UnitSystem.Default;

            unitSystem.MapUnitToAbbreviation(expected, customAbbreviation);
            var actual = unitSystem.Parse <AreaUnit>(customAbbreviation);

            Assert.Equal(expected, actual);
        }
コード例 #39
0
 protected static string CreateSuffix(SymbolFormat format, AreaUnit unit)
 {
     return default(Area).ToString(unit, format).Trim('0');
 }