本文在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;
}