Ejemplo n.º 1
3
 public static IGeometry Project(IGeometry geometry, ProjectionInfo pStart, ProjectionInfo pEnd)
 {
     var featureSet = new FeatureSet();
     featureSet.AddFeature(geometry.ToDotSpatial());
     featureSet.Projection = pStart;
     featureSet.Reproject(pEnd);
     return
         GeometryConverter.ToGeoAPI(
             ((featureSet.Features[0].BasicGeometry as DotSpatial.Topology.IGeometry)));
 }
Ejemplo n.º 2
0
 public static System.Data.Entity.Spatial.DbGeometry Project(System.Data.Entity.Spatial.DbGeometry source,
     ProjectionInfo pStart, ProjectionInfo pEnd)
 {
     var wkt = source.WellKnownValue.WellKnownText;
     var wktReader = new WKTReader();
     var geometry = wktReader.Read(wkt);
     var featureSet = new FeatureSet();
     featureSet.Features.Add(geometry.ToDotSpatial());
     featureSet.Projection = pStart;
     featureSet.Reproject(pEnd);
     var projected =
         (featureSet.Features.First().BasicGeometry as IGeometry).ToGeoAPI();
     var wktWriter = new WKTWriter();
     var projectedWkt = wktWriter.Write(projected);
     return System.Data.Entity.Spatial.DbGeometry.FromText(projectedWkt);
 }
Ejemplo n.º 3
0
 public static List<IGeometry> Project(List<IGeometry> toList, ProjectionInfo pStart, ProjectionInfo pEnd)
 {
     var geometryCollection = new GeometryCollection(toList.ToArray());
     var collection = geometryCollection.ToDotSpatial();
     var featureSet = new FeatureSet();
     foreach (var geo in collection.Geometries)
     {
         featureSet.Features.Add(geo);
     }
     featureSet.Projection = pStart;
     featureSet.Reproject(pEnd);
     var dotSpatialProjectedGeos =
         featureSet.Features.Select(x => x.BasicGeometry as DotSpatial.Topology.IGeometry).ToList();
     var result =
         dotSpatialProjectedGeos.Select(
             dotSpatialProjectedGeo => GeometryConverter.ToGeoAPI((dotSpatialProjectedGeo)))
             .ToList();
     return result;
 }
Ejemplo n.º 4
0
        private void CalculateProductForm_Shown(object sender, EventArgs e)
        {
            if (_field != null)
            {

                label1.Text = "Reading Polygon..";
                var polygonFile = Path.Combine(_field.Folder, "input_polygon.shp");
                var polygonFeatures = FeatureSet.Open(polygonFile).Features;

                label1.Text = "Reading Grid..";
                var gridFile = Path.Combine(_field.Folder, "grid_points.shp");
                var featuresDataset = FeatureSet.Open(gridFile);


                progressBar1.Maximum = polygonFeatures.Count;
                progressBar1.Value = 0;

                var newPolygonLayer = new FeatureSet(FeatureType.Polygon);
                var tbl = new DataTable();

                tbl.Columns.Add("Z");
                tbl.Columns.Add("AreaM2");
                tbl.Columns.Add("Hectare");

                int pCount = 1;

                foreach (Feature poly in polygonFeatures)
                {

                    label1.Text = "Caculating Product Value for plot:" + pCount;

                    var extent = poly.Envelope.ToExtent();

                    var fe = featuresDataset.CopySubset(featuresDataset.SelectIndices(extent));

                    double zTotalCount = 0;

                    for (int i = 0; i < fe.Features.Count; i++)
                    {
                        if (poly.Contains(fe.Features[i]))
                        {
                            var z = double.Parse(Convert.ToString(fe.DataTable.Rows[i]["Z"]));
                            zTotalCount += z;
                        }
                    }

                    tbl.Rows.Add(Math.Round(zTotalCount / 25, 2), Math.Round(poly.Area(), 2), Math.Round(poly.Area() / 10000, 0));

                    newPolygonLayer.AddFeature(poly);

                    progressBar1.Value = progressBar1.Value + 1;
                    pCount++;
                }


                newPolygonLayer.DataTable = tbl;
                newPolygonLayer.Projection = _map.Projection;
                newPolygonLayer.Reproject(_map.Projection);

                var newPolyFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TempFiles", "Temp-Product" + DateTime.Now.Ticks + ".shp");

                newPolygonLayer.SaveAs(newPolyFile, true);
                
                
                var layer = _map.Layers.Add(newPolyFile);

                layer.ContextMenuItems.Add(
                    new DotSpatial.Symbology.SymbologyMenuItem("Save Product File", new EventHandler((s, ev) => SaveProductFileClick(s, ev, (IMapPolygonLayer)layer))));

                label1.Text = "Completed";

            }
        }