本文在Silverlight中通过WCF和ArcGIS SDE获取图层中的属性和要素列表。
应用程序:Silverlight
方法:WCF,通过ArcSDE读取医院图层地理要素
结果如下:
结果:
步骤:
新建WCF:MyGeometryService.svc,如下:
IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)pWorkspace;
IFeatureDataset featureDataset = featureWorkspace.OpenFeatureDataset("SDE.shanghai");
//IFeatureClassContainer featureClassContainer = (IFeatureClassContainer)featureDataset;
IFeatureWorkspace fws = featureDataset.Workspace as IFeatureWorkspace;
string layerName = "SDE.Hospital";
IFeatureClass featureClass = fws.OpenFeatureClass(layerName);
//IFeatureClass featureClass = featureLayer.FeatureClass;
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "CN_NAME LIKE '%区%'";
queryFilter.SubFields = "CN_NAME";
int fieldPosition = featureClass.FindField("CN_NAME");
IFeatureCursor featureCursor = featureClass.Search(null, true);
IFeature feature = null;
StringBuilder sb = new StringBuilder();
while ((feature = featureCursor.NextFeature()) != null)
{
//geoString += feature.get_Value(fieldPosition).ToString();
sb.Append(feature.get_Value(fieldPosition).ToString());
}
return sb.ToString();
步骤二:引用WCF并调用该服务:
如下:
private void btnMyGeometryService_Click(object sender, RoutedEventArgs e)
{
MyGeometryService.MyGeometryServiceClient client = new MyGeometryService.MyGeometryServiceClient();
client.GetGeoStringCompleted += new EventHandler<MyGeometryWCFServiceApp.MyGeometryService.GetGeoStringCompletedEventArgs>(client_GetGeoStringCompleted);
client.GetGeoStringAsync();
}
void client_GetGeoStringCompleted(object sender, MyGeometryWCFServiceApp.MyGeometryService.GetGeoStringCompletedEventArgs e)
{
txtGeoString.Text = e.Result;
}