gpt4 book ai didi

java - Datastore GeoSpatial 查询不返回任何内容

转载 作者:行者123 更新时间:2023-11-30 10:40:09 25 4
gpt4 key购买 nike

我正在尝试使用 Google Datastore 数据库作为我的后端数据库,并使用地理空间查询来查询它,如 this Google 教程,但所有查询均未返回任何内容。我用 Java 制作了下一个调试 servlet 的演示:

private static final String tableName = "DEBUG";
private static final double radius = 100 * 1000; //100 km
private static final String NameKey = "Name";
private static final String LocationKey = "location";

//Parameters from the http servlet request
String name;
float lat, lng;

//Insert a new person to the DB

Entity person = new Entity(tableName);
person.setProperty(NameKey, name);
GeoPt location = new GeoPt(lat, lng);
person.setProperty(LocationKey, location);
datastore.put(person);

//returns the users in the radius

Query.Filter filter = new Query.StContainsFilter(LocationKey, new Query.GeoRegion.Circle(location, radius));
Query query = new Query(tableName).setFilter(filter);

PreparedQuery pq = datastore.prepare(query);

JsonArray users = new JsonArray();
for (Entity entity : pq.asIterable()){
users.add(new JsonObject()
.add(NameKey, (String)entity.getProperty(NameKey))
.add(LocationKey, ((GeoPt)entity.getProperty(LocationKey)).toString()));
}

result.add("Users", users);

数据库的插入有效,这是 Google 控制台的屏幕截图:

screenshot

但是查询总是失败,并抛出:

javax.servlet.ServletContext log: DebugGeoPtServlet: Returns: {Error=no matching index found.
The suggested index for this query is:
<datastore-index kind="DEBUG" source="manual">
<property name="location" mode="geospatial"/>
</datastore-index>

}

我不知道代码有什么问题。我按照教程里的样子复制的,插入的点非常接近(不,甚至接近100公里半径)

最佳答案

您需要将此索引定义添加到您的 datastore-indexes.xml 文件(在 /WEB_INF 文件夹中)。它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
autoGenerate="true">

<datastore-index kind="DEBUG" source="manual">
<property name="location" mode="geospatial"/>
</datastore-index>

</datastore-indexes>

通常,当您在开发服务器中尝试不同的查询时,它会自动创建必要的索引定义。但是,有时您可能需要手动添加它们。

关于java - Datastore GeoSpatial 查询不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com