MO+C#地名索引(摘要)
来源:互联网 发布:韩网络短剧 奇迹 编辑:程序博客网 时间:2024/05/22 16:45
PalaceLocator(地点定位)对象勇于匹配在其PlaceNameTable(地点名称数据表)属性中制定的地理数据库地点名。Indexed树形表示是否已经建立好索引。Locat方法勇于沛沛地点名,返回一个包含匹配后的地理位置的点集对象。FindeApproximateMatches方法利用近似方法匹配给定的地址。FindAllPlaceNames方法搜索以给定字符开始的地点名。这两个方法都返回一个Strings集合对象。
地点定位对象的一般步骤:
1.为地点定位对象的PlaceNameTable属性指定一个GetDataset对象,只要包含地名字段即可。
2.用BuildIndex方法为地名字段建立索引,检查Indexed属性,确定该索引是否已建立。
3.利用地点定位对象中的一种方法返回匹配指定地名的地名字符串集:
(1)FindAllPlaceNames返回所有以指定字符开头的地名字符串集;
(2)FindApproximateMatches返回与指定地名相似的地名字符串集;
(3)Locate返回匹配指定地名特征的所有地理位置的点集。
使用GeoDataset:点线多边形都可作为地点定位对象的PlaceNameTable的属性值。若包含线特征,则Locate方法返回的为之是沿线的起点。若是多边形特征,则返回多边形的中心位置。
例子:
private void Form1_Load(object sender, System.EventArgs e)
{
MapObjects2.DataConnection dc=new MapObjects2.DataConnection();
gdname="counties";
fldname="name";
dc.Database="D://Program Files//ESRI//MapObjects2//Samples//Data//USA";
if(dc.Connect()==false)
{
MessageBox.Show("连接错误");
return;
}
pl.PlaceNameTable=dc.FindGeoDataset(gdname);
if(!pl.BuildIndex(fldname,false))
{
MessageBox.Show("不能创建索引!");
return;
}
MapObjects2.MapLayer layer=new MapObjects2.MapLayer();
layer.GeoDataset=dc.FindGeoDataset(gdname);
axMap1.Layers.Add(layer);
layer.Symbol.Color=(uint)MapObjects2.ColorConstants.moYellow;
}
private void button1_Click(object sender, System.EventArgs e)
{
MapObjects2.Strings strs=new MapObjects2.Strings();
places=new ArrayList();
listBox3.Items.Clear();
pts=pl.Locate(textBox1.Text);
if(pts.Count>0)
{
for(int i=0;i<pts.Count;i++)
places.Add(pts.Item(i));
strs.Add(textBox1.Text);
}
else
{
if(checkBox1.Checked)
strs=pl.FindAllPlaceNames(textBox1.Text);
else
{
strs=pl.FindApproximateMatches(textBox1.Text);
if(strs.Count==0)
MessageBox.Show("没找到");
}
if(strs.Count>0)
{
places=null;
places=new ArrayList();
listBox1.Items.Clear();
for(int i=0;i<strs.Count;i++)
{
pts=pl.Locate(strs.Item(i));
for(int j=0;j<pts.Count;j++)
places.Add(pts.Item(j));
}
}
}
for(int i=0;i<strs.Count;i++)
listBox1.Items.Add(strs.Item(i));
}
private void listBox3_DoubleClick(object sender,System.EventArgs e)
{
MapObjects2.Recordset result;
MapObjects2.MapLayer layer=(MapObjects2.MapLayer)axMap1.Layers.Item(0);
if(listBox1.Items.Count>1)
{
result=layer.SearchShape(places[listBox3.SelectedIndex],MapObjects2.SearchMethodConstants.moPointInPolygon,"");
axMap1.FlashShape(result.Fields.Item("shape").Value,4);
}
else
{
for(int i=0;i<places.Count;i++)
{
result=layer.SearchShape(places[i],MapObjects2.SearchMethodConstants.moPointInPolygon,"");
axMap1.FlashShape(result.Fields.Item("shape").Value,4);
}
}
}
private void axMap1_AfterTrackingLayerDraw(object sender,AxMapObjects2._DMapEvents_AfterTrackingLayerDrawEvent e)
{
MapObjects2.Symbol sym=new MapObjects2.SymbolClass();
sym.SymbolType=MapObjects2.SymbolTypeConstants.moPointSymbol;
sym.Style=(short)MapObjects2.MarkerStyleConstants.moCircleMarker;
sym.Color=(uint)MapObjects2.ColorConstants.moRed;
sym.Size=7;
for(int i=0;i<places.Count;i++)
{
axMap1.DrawShape(places[i],sym);
}
}
private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e)
{
if(e.button==1)//左键
{
if(e.shift==0)
axMap1.Extent=axMap1.TrackRectangle();//放大
else if(e.shift==1)
{
MapObjects2.Rectangle extRect = axMap1.Extent;
extRect.ScaleRectangle(1.5);
axMap1.Extent = extRect;
}
}
else if(e.button==2)
axMap1.Pan();
}
- MO+C#地名索引(摘要)
- Android实现字母索引查找地名、联系人(一)
- Android实现字母索引查找地名、联系人(二)
- C# NPOI MO工具的应用(excel,ppt,doc)
- mo
- MO 查找地物,闪烁显示 C#
- c#简单使用IBM-MO编程
- 在 C# 中使用 Lua(摘要)
- Excel、Exchange 和 C# (摘要)
- C#信息摘要算法(MD5)
- Effective C# 摘要
- C# 通过Google Map获取给定地名的经纬度值
- C#通过Google Map获取给定地名的经纬度值
- 全球地名中英文对照表(A)
- 全球地名中英文对照表(B)
- 全球地名中英文对照表(C)
- 全球地名中英文对照表(D)
- 全球地名中英文对照表(G)
- Tlbimp.exe在Codeplex上开源啦!
- Yahoo!网站性能最佳体验的34条黄金守则
- 程序中有事务的时候需要注意的一个问题
- 一个牛人10个岁月换18家公司的经历
- try{} catch{}
- MO+C#地名索引(摘要)
- Java的XML API
- 用户定义的转换
- C# Socket 异步接受网络广播
- 网上的MD5、DES、RC2、Rijndael加密解密算法
- dB(分贝)的含义
- 我亲自使用过的DES加密解密
- 关于SQL的练习
- ActiveX技术综述