在一个程序中要找到固定点附近最近的图元,于是想用SearchNearst。
2015-06-10 10:31:22 访问(1801) 赞(0) 踩(0)
7.在一个程序中要找到固定点附近最近的图元,于是想用SearchNearst。
但是总是出现异常,说"不能对NonEarth坐标系应用Spherical操作"
所以想问一下,MXT04中的SearchNearst方法是不是不支持NonEarth坐标系?
//这个问题在MapXtreme2004的6.0和6.1版本都会有。以后版本会改正。
//暂时解决方案:在经纬度投影坐标系中操作。
try
{
MapInfo.Mapping.Map _map=mapControl1.Map;
MapInfo.Data.Catalog _catalog=Session.Current.Catalog;
//打开非地球坐标系的图层,并设置地图坐标系
mapControl1.Map.Load(new MapTableLoader(@"E:/MapInfo/培训材料/技术培训教材与PPT/MapXtreme2004/示例/OpenTable/MAP_AREA.TAB"));
Cursor.Current = Cursors.WaitCursor;
MapInfo.Geometry.CoordSysFactory cf=new MapInfo.Geometry.CoordSysFactory();
MapInfo.Geometry.CoordSys Nonearth=cf.CreateFromMapBasicString("CoordSys NonEarth Units /"m/" Bounds (-2000000, -2000000) (2000000, 2000000)");
_map.SetDisplayCoordSys (Nonearth);
//确定查找点-为非地球坐标的中心点
MapInfo.Geometry.DPoint pt=new MapInfo.Geometry.DPoint(_map.Center.x,_map.Center.y);
//将地图坐标系转换为经纬度投影
MapInfo.Geometry.CoordSys LonLat=cf.CreateFromMapBasicString("CoordSys Earth Projection 1, 0");
_map.SetDisplayCoordSys (LonLat);
//将非地球坐标下的查找点转换我经纬度投影下的点
MapInfo.Geometry.CoordinateTransform Transformer=cf.CreateCoordinateTransform(LonLat,Nonearth);
MapInfo.Geometry.DPoint dpt=Transformer.CoordSys2ToCoordSys1(pt);
//设置查找半径
Distance d = MapInfo.Mapping.SearchInfoFactory.ScreenToMapDistance(_map, 3);
SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchNearest(dpt, LonLat, d);
IResultSetFeatureCollection fc = _catalog.Search("MAP_AREA", si);
Session.Current.Selections.DefaultSelection.Add(fc);
}
finally
{
Cursor.Current = Cursors.Default;
}
标签:
在一个程序中要找到固定点附近最近的图元,于是想用SearchNearst。 


上一条:
下一条:
相关评论
发表评论