如何在arcgis引擎中创建渔网?

时间:2016-09-06 01:05:11

标签: arcgis arcobjects

我在arcobject中找到了createfishnet方法,但它不起作用。我的错误是什么?

Geoprocessor gp = new Geoprocessor();
            gp.OverwriteOutput = true;
            ESRI.ArcGIS.DataManagementTools.CreateFishnet fishnet = new ESRI.ArcGIS.DataManagementTools.CreateFishnet();
            fishnet.template = buffer_out;
            //txtOutputPath2.Text="E:\\program\\shenzhen_science_committee\\sc\\landuse_subway\\shenzhen_subway\\23_net.shp"

            fishnet.out_feature_class = txtOutputPath2.Text;
            IFeatureCursor cursor1=buffer_out.Search(null,true);
            IFeature buffer=cursor1.NextFeature();
            IPoint centerPoint =new ESRI.ArcGIS.Geometry.Point();
            IArea pArea = buffer.Shape as IArea;  
            pArea.QueryCentroid(centerPoint);
            fishnet.origin_coord = centerPoint;
            double height=0;
            double width=0;
            fishnet.cell_height = 0.1;
            fishnet.cell_width = 0.1;
            fishnet.number_columns = 50;
            fishnet.number_rows = 50;

            IGeoProcessorResult results = (IGeoProcessorResult)gp.Execute(fishnet, null);

结果显示错误HRESULT E_FAIL

1 个答案:

答案 0 :(得分:0)

我在使用Java的ArcObjects中尝试了这个。我发现无法为特定多边形内的区域生成渔网,如ArcMap应用程序中所示。您必须在渔网输出上交叉或使用空间过滤器。 另外,尝试给出所有参数,甚至是设置角坐标等可选参数。如果您在特定投影系统中使用数据,可以通过设置模板将其设置为输出(这只需要信封)。

以下是我使用过的代码。我也想要鱼网标签,所以我启用了它。确保在点的x和y坐标之间使用空格,以字符串形式输入,这可能是此处的问题。

GeoProcessor gp = new GeoProcessor();
gp.setOverwriteOutput(true);

IEnvelope aoi = buffer_out.getEnvelope();
CreateFishnet createFishnet = new CreateFishnet(); 
createFishnet.setOutFeatureClass(tempDir+"/"+fishnetOutput+".shp");
createFishnet.setTemplate(aoi);
createFishnet.setOriginCoord(aoi.getXMin()+" "+aoi.getYMin());
createFishnet.setYAxisCoord(aoi.getXMin()+" "+aoi.getYMax());
createFishnet.setCornerCoord(aoi.getXMax()+" "+aoi.getYMax());
createFishnet.setCellHeight(30.0);                  
createFishnet.setCellWidth(30.0);
createFishnet.setNumberRows(0);
createFishnet.setNumberColumns(0);
createFishnet.setLabels("LABELS");
createFishnet.setGeometryType("POLYLINE");

gp.execute(createFishnet, null);

我希望您可以使用此示例并将其应用于您的代码。