我将CSV文件转换为shapefile,但无法创建其投影

时间:2017-05-25 08:33:31

标签: c# asp.net arcgis shapefile

我尝试将 csv 文件转换为 shapefile 及其投影。转换有效,但我无法创建 .prj 文件。

错误说

  

"当前位置没有可用的源代码"。

我的代码如下:

    public Form1() {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)  {
        AxMap axMap1 = new AxMap();
        Shapefile sf = new Shapefile();
        bool result = sf.CreateNewWithShapeID("", ShpfileType.SHP_POLYGON);

        if (!result)  {
            MessageBox.Show(sf.get_ErrorMsg(sf.LastErrorCode));
        } else  {
            double xMin = 0.0;
            double yMin = 0.0;
            double xMax = 1000.0;
            double yMax = 1000.0;
            Random rnd = new Random(DateTime.Now.Millisecond);

            int fldX = sf.EditAddField("x", FieldType.DOUBLE_FIELD, 9, 12);
            int fldY = sf.EditAddField("y", FieldType.DOUBLE_FIELD, 9, 12);
            int fldArea = sf.EditAddField("area", FieldType.DOUBLE_FIELD, 9, 12);

            // In a loop we are creating 100 different points using the box established above.
            for (int i = 0; i < 100; i++) {
                if (i % 10 == 0)  {
                    Shape shp1 = new Shape();
                    shp1.Create(ShpfileType.SHP_POLYGON);
                    sf.EditInsertShape(shp1, ref i); 
                } else  {
                    double xCenter = xMin + (xMax - xMin) * rnd.NextDouble();
                    double yCenter = yMin + (yMax - yMin) * rnd.NextDouble();

                    // random radius from 10 to 100
                    double radius = 10 + rnd.NextDouble() * 90;

                    // polygons must be clockwise
                    Shape shp = new Shape();
                    shp.Create(ShpfileType.SHP_POLYGON);

                    for (int j = 0; j < 37; j++) {
                        Point pnt = new Point();
                        pnt.x = xCenter + radius * Math.Cos(j * Math.PI / 18);
                        pnt.y = yCenter - radius * Math.Sin(j * Math.PI / 18);
                        shp.InsertPoint(pnt, ref j);
                    }
                    sf.EditInsertShape(shp, ref i);

                    sf.EditCellValue(fldX, i, xCenter.ToString());
                    sf.EditCellValue(fldY, i, yCenter.ToString());
                    sf.EditCellValue(fldArea, i, Math.PI * radius * radius); 
                }
            } 
            axMap1.CreateControl(); 
            axMap1.AddLayer(sf, true);
            axMap1.ZoomToLayer(0);

            sf.Categories.Generate(fldArea, tkClassificationType.ctNaturalBreaks, 7);
            ColorScheme scheme = new ColorScheme();
            scheme.SetColors2(tkMapColor.Wheat, tkMapColor.Salmon); sf.Categories.ApplyColorScheme(tkColorSchemeType.ctSchemeGraduated, scheme); 
            axMap1.Redraw();
            sf.SaveAs(@"D:\shp1\polygons.shp", null);
            sf.Open("D:\\shp1\\polygons.shp");
            sf.Projection = (DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N).ToString();  
            sf.SaveAs(@"D:\shp1\polygons.prj");
        }
    }

0 个答案:

没有答案