ArcGIS Runtime 本地API介绍(五)
分享
缓冲区空间查询
下面这个例子是在地图单击,然后做缓冲区,并找到跟这个缓冲区相交的面
LocalGeometryService pLocalGeometryService;
GeometryService pGeometryService;
QueryTask pQueryTask;
GraphicsLayer pBuffResultGraphicsLayer;
GraphicsLayer pBufferGraphicsLayer;
//该代码是用来创建几何服务对象,查询对象和创建本地动态地图服务和为地图加载图层
private void btnGeo_Click(objectsender,RoutedEventArgse)
{
//获取要查询的URL,构造QueryTask对象
pQueryTask = new QueryTask();
//使用QueryTaskLocalExtentions及创建了本地地图服务,又构造了QueryTask
LocalMapService pLocalMap = QueryTaskLocalExtensions.InitializeWithLocalService(pQueryTask,"radialflow.mpk", 2);
ArcGISLocalDynamicMapServiceLayerpLocalDymLayer =newArcGISLocalDynamicMapServiceLayer();
pLocalDymLayer.Service =pLocalMap;
_mapControl.Layers.Add(pLocalDymLayer);
pBufferGraphicsLayer =newGraphicsLayer();
//缓冲区查询
pBuffResultGraphicsLayer =newGraphicsLayer();
_mapControl.Layers.Add(pBuffResultGraphicsLayer);
_mapControl.Layers.Add(pBufferGraphicsLayer);
pLocalGeometryService =LocalGeometryService.GetService();
//创建GoemtryService,用来设置Buff
pGeometryService = new GeometryService(pLocalGeometryService.UrlGeometryService);
pGeometryService.BufferCompleted +=newEventHandler<GraphicsEventArgs>(GeometryService_BufferCompleted);
pGeometryService.Failed +=newEventHandler<TaskFailedEventArgs>(GeometryService_Failed);
pQueryTask.ExecuteCompleted +=newEventHandler<QueryEventArgs>(QueryTask_ExecuteCompleted);
pQueryTask.Failed +=newEventHandler<TaskFailedEventArgs>(GeometryService_Failed);
}
void GeometryService_BufferCompleted(object sender, GraphicsEventArgs args)
{
Graphic bufferGraphic = new Graphic();
bufferGraphic.Geometry =args.Results[0].Geometry;
bufferGraphic.Symbol =Layout.Resources["BufferSymbol"]asESRI.ArcGIS.Client.Symbols.Symbol;
pBufferGraphicsLayer.Graphics.Add(bufferGraphic);
//查找
ESRI.ArcGIS.Client.Tasks.Queryquery = new ESRI.ArcGIS.Client.Tasks.Query();
query.ReturnGeometry =true;
query.OutSpatialReference =newSpatialReference(4326);
query.Geometry =bufferGraphic.Geometry;
query.OutFields.Add("OBJECTID");
query.SpatialRelationship =SpatialRelationship.esriSpatialRelIntersects;
pQueryTask.ExecuteAsync(query);
}
private void QueryTask_ExecuteCompleted(objectsender,QueryEventArgsargs)
{
pBuffResultGraphicsLayer.ClearGraphics();
if (args.FeatureSet.Features.Count < 1)
{
MessageBox.Show("没有找到要素");
return;
}
foreach (GraphicselectedGraphicinargs.FeatureSet.Features)
{
selectedGraphic.Symbol =Layout.Resources["ParcelSymbol"]asESRI.ArcGIS.Client.Symbols.Symbol;
pBuffResultGraphicsLayer.Graphics.Add(selectedGraphic);
}
_mapControl.Extent =pBuffResultGraphicsLayer.FullExtent;
}
private void GeometryService_Failed(objectsender,TaskFailedEventArgsargs)
{
MessageBox.Show("Geometry service failed: " +args.Error);
}
void queryTask_Failed(object sender, TaskFailedEventArgs e)
{
MessageBox.Show("Query failed: " +e.Error);
}
//在地图上点击,然后创建缓冲区做空间查询
private void _mapControl_MouseClick(objectsender,Map.MouseEventArgse)
{
pGeometryService.CancelAsync();
//获取鼠标位置
Graphic clickGraphic = new Graphic();
clickGraphic.Symbol =Layout.Resources["DefaultMarkerSymbol"]asESRI.ArcGIS.Client.Symbols.Symbol;
clickGraphic.Geometry =e.MapPoint;
// 空间参考
clickGraphic.Geometry.SpatialReference =newSpatialReference(4326);
pBufferGraphicsLayer.ClearGraphics();
clickGraphic.SetZIndex(2);
pBufferGraphicsLayer.Graphics.Add(clickGraphic);
// 设置缓冲区参数
ESRI.ArcGIS.Client.Tasks.BufferParametersbufferParams = newESRI.ArcGIS.Client.Tasks.BufferParameters()
{
BufferSpatialReference =newSpatialReference(4326),
OutSpatialReference =newSpatialReference(4326),
Unit = LinearUnit.Meter,
};
bufferParams.Distances.Add(0.1);
bufferParams.Features.Add(clickGraphic);
pGeometryService.BufferAsync(bufferParams);
}
文章来源:http://blog.csdn.net/arcgis_all/article/details/8215126
下面这个例子是在地图单击,然后做缓冲区,并找到跟这个缓冲区相交的面
LocalGeometryService pLocalGeometryService;
GeometryService pGeometryService;
QueryTask pQueryTask;
GraphicsLayer pBuffResultGraphicsLayer;
GraphicsLayer pBufferGraphicsLayer;
//该代码是用来创建几何服务对象,查询对象和创建本地动态地图服务和为地图加载图层
private void btnGeo_Click(objectsender,RoutedEventArgse)
{
//获取要查询的URL,构造QueryTask对象
pQueryTask = new QueryTask();
//使用QueryTaskLocalExtentions及创建了本地地图服务,又构造了QueryTask
LocalMapService pLocalMap = QueryTaskLocalExtensions.InitializeWithLocalService(pQueryTask,"radialflow.mpk", 2);
ArcGISLocalDynamicMapServiceLayerpLocalDymLayer =newArcGISLocalDynamicMapServiceLayer();
pLocalDymLayer.Service =pLocalMap;
_mapControl.Layers.Add(pLocalDymLayer);
pBufferGraphicsLayer =newGraphicsLayer();
//缓冲区查询
pBuffResultGraphicsLayer =newGraphicsLayer();
_mapControl.Layers.Add(pBuffResultGraphicsLayer);
_mapControl.Layers.Add(pBufferGraphicsLayer);
pLocalGeometryService =LocalGeometryService.GetService();
//创建GoemtryService,用来设置Buff
pGeometryService = new GeometryService(pLocalGeometryService.UrlGeometryService);
pGeometryService.BufferCompleted +=newEventHandler<GraphicsEventArgs>(GeometryService_BufferCompleted);
pGeometryService.Failed +=newEventHandler<TaskFailedEventArgs>(GeometryService_Failed);
pQueryTask.ExecuteCompleted +=newEventHandler<QueryEventArgs>(QueryTask_ExecuteCompleted);
pQueryTask.Failed +=newEventHandler<TaskFailedEventArgs>(GeometryService_Failed);
}
void GeometryService_BufferCompleted(object sender, GraphicsEventArgs args)
{
Graphic bufferGraphic = new Graphic();
bufferGraphic.Geometry =args.Results[0].Geometry;
bufferGraphic.Symbol =Layout.Resources["BufferSymbol"]asESRI.ArcGIS.Client.Symbols.Symbol;
pBufferGraphicsLayer.Graphics.Add(bufferGraphic);
//查找
ESRI.ArcGIS.Client.Tasks.Queryquery = new ESRI.ArcGIS.Client.Tasks.Query();
query.ReturnGeometry =true;
query.OutSpatialReference =newSpatialReference(4326);
query.Geometry =bufferGraphic.Geometry;
query.OutFields.Add("OBJECTID");
query.SpatialRelationship =SpatialRelationship.esriSpatialRelIntersects;
pQueryTask.ExecuteAsync(query);
}
private void QueryTask_ExecuteCompleted(objectsender,QueryEventArgsargs)
{
pBuffResultGraphicsLayer.ClearGraphics();
if (args.FeatureSet.Features.Count < 1)
{
MessageBox.Show("没有找到要素");
return;
}
foreach (GraphicselectedGraphicinargs.FeatureSet.Features)
{
selectedGraphic.Symbol =Layout.Resources["ParcelSymbol"]asESRI.ArcGIS.Client.Symbols.Symbol;
pBuffResultGraphicsLayer.Graphics.Add(selectedGraphic);
}
_mapControl.Extent =pBuffResultGraphicsLayer.FullExtent;
}
private void GeometryService_Failed(objectsender,TaskFailedEventArgsargs)
{
MessageBox.Show("Geometry service failed: " +args.Error);
}
void queryTask_Failed(object sender, TaskFailedEventArgs e)
{
MessageBox.Show("Query failed: " +e.Error);
}
//在地图上点击,然后创建缓冲区做空间查询
private void _mapControl_MouseClick(objectsender,Map.MouseEventArgse)
{
pGeometryService.CancelAsync();
//获取鼠标位置
Graphic clickGraphic = new Graphic();
clickGraphic.Symbol =Layout.Resources["DefaultMarkerSymbol"]asESRI.ArcGIS.Client.Symbols.Symbol;
clickGraphic.Geometry =e.MapPoint;
// 空间参考
clickGraphic.Geometry.SpatialReference =newSpatialReference(4326);
pBufferGraphicsLayer.ClearGraphics();
clickGraphic.SetZIndex(2);
pBufferGraphicsLayer.Graphics.Add(clickGraphic);
// 设置缓冲区参数
ESRI.ArcGIS.Client.Tasks.BufferParametersbufferParams = newESRI.ArcGIS.Client.Tasks.BufferParameters()
{
BufferSpatialReference =newSpatialReference(4326),
OutSpatialReference =newSpatialReference(4326),
Unit = LinearUnit.Meter,
};
bufferParams.Distances.Add(0.1);
bufferParams.Features.Add(clickGraphic);
pGeometryService.BufferAsync(bufferParams);
}
文章来源:http://blog.csdn.net/arcgis_all/article/details/8215126
0 个评论
推荐内容
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- ArcGIS知乎社区改进意见征集
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- arcgis版本兼容性
- ArcGIS 知乎社区活动 之 字幕组加鸡腿暨KBP字幕组招新【获奖名单公布与优秀作品展示】
- ArcGIS 知乎社区活动 之 2018拒绝boring,来,在线答题赢kindle【结果已出,速来领奖】
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- ArcGIS如何求栅格图像的“质心”