首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SortBy的GeoTools查询:生成的SQL语法错误

使用SortBy的GeoTools查询:生成的SQL语法错误
EN

Stack Overflow用户
提问于 2017-05-16 21:36:46
回答 1查看 134关注 0票数 0

我正在尝试使用GeoTools及其OGR Plugin在Java语言中读取MapInfo映射文件。我想以特定的排序顺序遍历这些特征。为此,我尝试使用GeoTool的查询和SortBy,但是生成的SQL查询有一个语法错误。

代码示例:

代码语言:javascript
运行
复制
OGRDataStoreFactory factory = new JniOGRDataStoreFactory();
Map<String, String> connectionParams = new HashMap<String, String>();
connectionParams.put("DriverName", "MapInfo File");
connectionParams.put("DatasourceName", new File("MyTable.TAB").getAbsolutePath());
DataStore store = factory.createDataStore(connectionParams);
SimpleFeatureSource featureSource = store.getFeatureSource("MyTable");
Query query = new Query();
query.setSortBy(new SortBy[]{ new SortByImpl(new AttributeExpressionImpl("PED"), SortOrder.ASCENDING)});
SimpleFeatureIterator features = featureSource.getFeatures(query).features();
int count = 0;
while (features.hasNext() && count++ < 10) {
    Feature feature = features.next();
    System.out.println(feature);
}

这将导致以下错误消息打印到stderr:

代码语言:javascript
运行
复制
ERROR 1: SQL Expression Parsing Error: syntax error, unexpected ORDER, expecting '.'. Occurred around :
SELECT FID, * FROM 'MyTable' ORDER BY PED
                                 ^

问题在于表名两边的单引号。

如果我删除setSortBy()行,就会返回特性。因此,数据访问在一般情况下是有效的。

如果我在命令行中使用带双引号的ogr2ogr尝试相同的查询,它将按预期工作:

代码语言:javascript
运行
复制
ogr2ogr -f "CSV" /vsistdout/ MyTable.TAB -lco GEOMETRY=AS_WKT -sql "SELECT FID, * FROM \"MyTable\" ORDER BY \"PED\" ASC"

我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-17 15:41:47

它看起来像一个bug here,如果你能写一个简单的测试用例并归档一个bug report,它应该很容易修复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44003075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档