2016-09-06 13 views
0

Я нашел createfishnet метод в arcobject, но он не работает. Где моя ошибка?Как создать fishnet в arcgis engine?

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.

ответ

0

Я пробовал это в ArcObjects с Java. Я обнаружил, что сетка не может быть создана для области внутри определенного полигона, как в приложении ArcMap. Вам нужно будет пересечь или использовать пространственный фильтр на выходе из сети. Также попробуйте указать все параметры, даже необязательные, например, заданную угловую координату. Если вы используете данные в конкретной проекционной системе, которые могут быть установлены на выходе путем установки шаблона (и для этого требуется только конверт).

Ниже приведен код, который я использовал. Мне тоже понравилась метка fishnet, поэтому я включил ее. Убедитесь, что вы используете пробел между координатой x и y точки, введенной как String, что, вероятно, является проблемой здесь.

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

Надеюсь, вы можете использовать этот пример и применить его к своему коду.

 Смежные вопросы

  • Нет связанных вопросов^_^