/// <summary> /// Determines the area and length details for the specified features /// </summary> private void DetermineAreaAndLengthDetailsFor(IList <Feature> features, out string areaString, out string lengthString) { var length = 0.0; var area = 0.0; foreach (var feature in features) { foreach (FeatureGeometryFieldDescriptor field in feature.TableDescriptor.FieldDescriptors.Descriptors(FeatureFieldDescriptorType.Geometry)) { var geometry = feature[field.Name]; if (geometry != null) { switch (field.FieldType.PhysicalType) { case FeaturePhysicalFieldType.Curve: case FeaturePhysicalFieldType.MultiCurve: ICurveGeometry curveGeometry = geometry as ICurveGeometry; length += curveGeometry.LineLength(LinearLineLengthType.Meter); break; case FeaturePhysicalFieldType.Polygon: case FeaturePhysicalFieldType.MultiPolygon: IPolygonGeometry polygonGeometry = geometry as IPolygonGeometry; area += polygonGeometry.Area(SurfaceAreaType.MeterSquared); break; } } } } // Interpret the area in m2, but let the unitSystem determine the actual locale's settings areaString = UnitSystem.Convert(area, "m2").ToString(); // Interpret the length in m, but let the unitSystem determine the display units lengthString = UnitSystem.Convert(length, "m").ToString(); }
/// <summary> /// Transforms the area to a human readable string, making use of the active unit system /// </summary> protected static String AreaInMetersToString(double area) { return(UnitSystem.Convert(area, "m2").ToString()); }
/// <summary> /// Transforms the length to a human readable string, making use of the active unit system /// </summary> protected static String LengthInMetersToString(double length) { return(UnitSystem.Convert(length, "m").ToString()); }
/// <summary> /// Raises that the area to be displayed has changed. Interprets the specified /// area as an area in m2. /// </summary> protected void RaiseAreaChanged(double area) { RaiseAreaChanged(UnitSystem.Convert(area, "m2").ToString()); }