在ArcGIS10 / VB2010中,我使用IQueryFilter接口来命中shapefile并返回一些记录。它工作得很好,但我很难弄清楚如何将结果作为用户输入的顺序返回。订单是至关重要的,因为用户期望在这些机场之间输入图形,因为它们可以按任何顺序输入。用户在列表框中输入机场,我接受它并从中创建一个WHERE子句。默认情况下,返回的记录集按字母顺序排列,在此处不起作用,因为用户需要按照输入的顺序返回结果。
Dim pQryFltr As IQueryFilter = New QueryFilter
pQryFltr.WhereClause = "APT LIKE 'DFW' OR APT LIKE 'STL' OR APT LIKE 'ORD'"
结果回归
DFW
ORD
STL
我唯一能想到的是逐步浏览每个列表框项目并对每个项目进行单独查询,然后将其添加到我的结果中。但对于大量输入来说,这似乎效率很低。
答案 0 :(得分:0)
在ArcGIS 10及更高版本中,IQueryDef2接口具有允许ORDER BY的.PostfixClause。这仅适用于地理数据库数据源。
对于shapefile,您需要使用ITableSort接口: Esri ITableSort
如何使用它的一个例子如下: ITableSort Example
如果您希望按照创建功能的顺序对shapefile进行排序,那么您需要按FID排序。
答案 1 :(得分:0)
我选择了一个非常简单的解决方案。由于用户将输入最多20个机场,因此我将每个机场进行单独查询,并继续将返回的记录添加到我的网格中。这样,它们会在列表中输入时添加到网格中。