关于sharpmap 的属性查询
我的查询代码如下:
private void QueryFeatureByAttri(string sLayerName, string sFieldName, string sFieldValue)
{SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet();
SharpMap.Layers.VectorLayer objVLyr = myMap.Layers[sLayerName] as SharpMap.Layers.VectorLayer;
if (objVLyr != null)
{
long count = objVLyr.DataSource.GetFeatureCount();
if (!objVLyr.DataSource.IsOpen) objVLyr.DataSource.Open();
SharpMap.Data.FeatureDataRow tempFeat;
for (uint i = 0; i < count; i++)
{
tempFeat = objVLyr.DataSource.GetFeature(i);
lblProperty.Text = tempFeat[sFieldName].ToString();//就是这里出现问题,这里得到的是一些奇怪的文字
if (tempFeat[sFieldName].ToString() == sFieldValue){
//高亮度显示该要素
SharpMap.Data.FeatureDataTable tempTable = new SharpMap.Data.FeatureDataTable();
tempTable = (tempFeat.Table as SharpMap.Data.FeatureDataTable).Clone();
tempTable.LoadDataRow(tempFeat.ItemArray, false);
FeatureDataRow tempRow;
tempRow = tempTable.Rows[tempTable.Rows.Count - 1] as FeatureDataRow;
tempRow.Geometry = tempFeat.Geometry;
SharpMap.Layers.VectorLayer laySelected = new SharpMap.Layers.VectorLayer("Selection");
laySelected.DataSource = new SharpMap.Data.Providers.GeometryProvider(tempTable);
laySelected.Style.Fill = new System.Drawing.SolidBrush(System.Drawing.Color.Yellow);
myMap.Layers.Add(laySelected);
//显示该要素的其他属性
lblProperty.Text = "<table width='95%' border='0' cellpadding='0' cellspacing='0' align='center'>";
lblProperty.Text += "<tr><td colspan='2' heigth='25'><b>属性:</b></td></tr>";
for (int j = 0; j < tempFeat.Table.Columns.Count; j++)
{
// lblProperty.Text += tempFeat.Table.Columns[i].ColumnName+ " " +tempFeat[i].ToString()+" "
lblProperty.Text += "<tr><td>" + tempFeat.Table.Columns[j].ColumnName;
lblProperty.Text += "</td><td>" + tempFeat[j].ToString() + "</td></tr>";
}
lblProperty.Visible = true;
break;
}
}
}
}
就因为tempFeat[sFieldName].ToString()得到的是一些奇怪的文字,最后导致查询不了,我想知道是因为我的软件问题吗?我用的是vs2010
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你是不是用的shapefile文件做的数据源,如果是的话,你这里就要转换一下,转换成你之前的数据,也就是读shapefile的过程,然后就能显示成功了