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))); }
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); }
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; }
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"; } }