两幅图,一幅是区域图,另一幅是标注图,查找在某个区域内的所有标注点!

     以下示例说明如何使用 SearchForFeature 和 SearchWithinGeometry。 它查找 uscty_1k 表中位于佛罗里达州的所有城市。 假定 "usa" 和 "uscty_1k" 表均打开,此外还有一张地图。

public static void MapInfo_Data_SearchInfo(Catalog catalog)

{

       Feature fFlorida  = catalog.SearchForFeature("usa",MapInfo.Data.SearchInfoFactory.SearchWhere("State='FL'"));

 

    SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchWithinGeometry(fFlorida.Geometry, ContainsType.Centroid);

 

//ContainsType枚举类型:Centroid:Geometry包含另一个几何体的中心,Geometry:Geometry完全包含另一个几何体

     IResultSetFeatureCollection fc = MapInfo.Engine.Session.Current.Catalog.Search("uscty_1k", si);

     // Set the map view to show search results

    MapInfo.Engine.Session.Current.MapFactory[0].SetView(fc.Envelope);// Set the view of the first map.

     // 查找结果,显示选中状态

     MapInfo.Engine.Session.Current.Selections.DefaultSelection.Add(fc);

}

catalog有两个用于搜索的方法:

  • search方法:用于搜索一个或多个表,并且返回或修改IResultSetFeatureCollection或MultiResultSetFeatureCollection(表示搜索的结果。)
  • searchForFeature方法:用于搜索使用指定SearchInfo的单一表,并返回单一的Feature(Feature 通常表示带有几何体、样式和属性的表中的行。)

SearchInfo类----定义搜索中使用的 Query 和需要搜索结果的后续处理。 所有 Catalog 搜索方法都需要。由SearchInfoFactory 创建 SearchInfo 对象。SearchInfoFactory有几种方法指定搜索条件:

  • SearchAll--返回所有行
  • SearchIntersectsFeature--在表几何体与搜索图元几何体相交的位置,创建返回行
  • SearchIntersectsGeometry--在表几何体与搜索几何体相交的位置返回行
  • SearchNearest 重载
  • SearchWhere--创建SearchInfo,返回由给出的where子句指定的行
  • SearchWithinFeature--在表几何体包含在图元几何体的位置创建返回行
  • SearchWithinGeometry--在表几何体包含在几何体内的位置,创建返回行的SeachInfo
  • SearchWithinRect--在表几何体与给出的矩形相交的位置,创建返回行的SearchInfo

思考:该方法可借鉴到鸡种分布查询中,查询某个省的所有鸡种。需要考虑是,是否可以计算该返回结果的数目,就可以知道每个省的鸡种数目,从而为主题图的制作做准备。

 

你可能感兴趣的:(search,query)