Пространственный и атрибутивный запросы

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Minor
Новоприбывший
Сообщения: 1
Зарегистрирован: 27 май 2014, 06:48
Репутация: 0

Пространственный и атрибутивный запросы

Сообщение Minor » 27 май 2014, 07:42

Здравствуйте! :wink:
Возникла проблема с курсовой работай. На карте ArcMap есть АЗС, необходимо создать приложение на ArcObjects C#, которое выполняет пространственный и атрибутивный запросы. А именно при пространственном запросе строит буфер, при этом выделяя АЗС, которые попали в этот самый буфер, и после выполняет атрибутивный запрос по ним. Нашел код на http://help.arcgis.com/, пространственный запрос:

Код: Выделить всё

public ESRI.ArcGIS.Geodatabase.IFeatureCursor GetAllFeaturesFromPointSearchInGeoFeatureLayer(System.Double searchTolerance, ESRI.ArcGIS.Geometry.IPoint point, ESRI.ArcGIS.Carto.IGeoFeatureLayer geoFeatureLayer, ESRI.ArcGIS.Carto.IActiveView activeView)
{

  if (searchTolerance < 0 || point == null || geoFeatureLayer == null || activeView == null)
  {
    return null;
  }
  ESRI.ArcGIS.Carto.IMap map = activeView.FocusMap;

  // Expand the points envelope to give better search results    
  ESRI.ArcGIS.Geometry.IEnvelope envelope = point.Envelope;
  envelope.Expand(searchTolerance, searchTolerance, false);

  ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = geoFeatureLayer.FeatureClass;
  System.String shapeFieldName = featureClass.ShapeFieldName;

  // Create a new spatial filter and use the new envelope as the geometry    
  ESRI.ArcGIS.Geodatabase.ISpatialFilter spatialFilter = new ESRI.ArcGIS.Geodatabase.SpatialFilterClass();
  spatialFilter.Geometry = envelope;
  spatialFilter.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects;
  spatialFilter.set_OutputSpatialReference(shapeFieldName, map.SpatialReference);
  spatialFilter.GeometryField = shapeFieldName;

  // Do the search
  ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor = featureClass.Search(spatialFilter, false);

  return featureCursor;
}
и атрибутивный запрос:
#1

Код: Выделить всё

public ESRI.ArcGIS.Geodatabase.ICursor PerformAttributeQuery(ESRI.ArcGIS.Geodatabase.ITable table, System.String whereClause)
{
  ESRI.ArcGIS.Geodatabase.IQueryFilter queryFilter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass();
  queryFilter.WhereClause = whereClause; // create the where clause statement
    
  // query the table passed into the function and use a cursor to hold the results
  ESRI.ArcGIS.Geodatabase.ICursor cursor = table.Search(queryFilter, false);

  return cursor;
}
#2 - взят с данного сатйа: http://help.arcgis.com/en/sdk/10.0/serv ... 007s000000

Код: Выделить всё

FeatureLayer featurelayer = (FeatureLayer)layer;
Filter filter = new Filter();
Filter.WhereExpression = "CITY_NAME = &apos;Phoenix&apos;";
Envelope envelope = new Envelope( - 119, 32,  - 113, 35);
filter.Geometry = envelope;

FeatureLayer targetlayer = (FeatureLayer)layercollection.FindByName("States");
string targetwhere = "";

SelectionBuffer selectionbuffer = new SelectionBuffer(targetlayer, targetwhere);
selectionbuffer.Distance = 200;
selectionbuffer.Units = BufferUnits.Miles;

SimpleRenderer targetrenderer = new SimpleRenderer();
SimpleFillSymbol sfs = new SimpleFillSymbol();
sfs.Color = System.Drawing.Color.Yellow;
targetrenderer.Symbol = sfs;

FeatureLayer selectionlayer = featurelayer.CreateBufferSelectionLayer(filter,
    selectionbuffer, targetrenderer, "mybufferselection");
mapview.Layers.Add(selectionlayer);
mapview.Draw();
Не могу преобразовать эти запросы для свой курсовой. Помогите разобраться в них? :cry:
Заранее благодарен за помощь!

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость