RethinkDb 地理空间查询 Java return 不正确的值
RethinkDb geospatial queries with Java return incorrect values
我正在尝试使用 java 进行涉及 r.point 方法的简单 RethinkDb 查询。乍一看,它似乎工作正常。但是,使用 reql 语法 return 直接从终端执行此方法是一个完全不同的值。谁能理解为什么会这样?或者如果它们代表相同的地理空间坐标?
这是我使用的代码:
Point geoloc = RethinkDB.r.point(Float.parseFloat(parsedLocation[0]),Float.parseFloat(parsedLocation[1]));
data.setGeolocation(geoloc);
db = new Db();
int reponse = db.putDataInCollection(data); //Simply put the object in the database
哪个return这是地理定位字段:
"geolocation": {
"args": [
{
"args": [ ],
"datum": -122 ,
"optargs": { } ,
"termType": "DATUM"
} ,
{
"args": [ ],
"datum": 88 ,
"optargs": { } ,
"termType": "DATUM"
}
],
"optargs": { } ,
"termType": "POINT"
}
但是,从终端执行完全相同的命令 returns :
"geolocation": {
"$reql_type$": "GEOMETRY" ,
"coordinates": [
-122.2 ,
74.8
] ,
"type": "Point"
}
这绝对不是一回事。
我做错了什么?
编辑:尝试使用 Javascript 执行相同的方法并且它工作得很好。然而 java.
似乎有些不对劲
今天我还没有找到问题的原因,但我在前一段时间设法找到了一个替代解决方案,如果有人遇到同样的问题,就在这里:
包 com.unwheeze.beans;
public class GeoBean {
private String $reql_type$;
private double coordinates[];
private String type;
public GeoBean() {}
public GeoBean(double[] coordinates) {
this.$reql_type$ = "GEOMETRY";
this.coordinates = coordinates;
this.type = "POINT";
}
public String get$reql_type$() {
return $reql_type$;
}
public void set$reql_type$(String $reql_type$) {
this.$reql_type$ = $reql_type$;
}
public double[] getCoordinates() {
return coordinates;
}
public void setCoordinates(double[] coordinates) {
this.coordinates = coordinates;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
我创建了一个简单的 bean 来复制 rethinkDb 中 REAL geoJson 字段的字段,我只是在将整个 Json 对象推送到数据库之前使用 Gson 对其进行解析。
我正在尝试使用 java 进行涉及 r.point 方法的简单 RethinkDb 查询。乍一看,它似乎工作正常。但是,使用 reql 语法 return 直接从终端执行此方法是一个完全不同的值。谁能理解为什么会这样?或者如果它们代表相同的地理空间坐标?
这是我使用的代码:
Point geoloc = RethinkDB.r.point(Float.parseFloat(parsedLocation[0]),Float.parseFloat(parsedLocation[1]));
data.setGeolocation(geoloc);
db = new Db();
int reponse = db.putDataInCollection(data); //Simply put the object in the database
哪个return这是地理定位字段:
"geolocation": {
"args": [
{
"args": [ ],
"datum": -122 ,
"optargs": { } ,
"termType": "DATUM"
} ,
{
"args": [ ],
"datum": 88 ,
"optargs": { } ,
"termType": "DATUM"
}
],
"optargs": { } ,
"termType": "POINT"
}
但是,从终端执行完全相同的命令 returns :
"geolocation": {
"$reql_type$": "GEOMETRY" ,
"coordinates": [
-122.2 ,
74.8
] ,
"type": "Point"
}
这绝对不是一回事。
我做错了什么?
编辑:尝试使用 Javascript 执行相同的方法并且它工作得很好。然而 java.
似乎有些不对劲今天我还没有找到问题的原因,但我在前一段时间设法找到了一个替代解决方案,如果有人遇到同样的问题,就在这里:
包 com.unwheeze.beans;
public class GeoBean {
private String $reql_type$;
private double coordinates[];
private String type;
public GeoBean() {}
public GeoBean(double[] coordinates) {
this.$reql_type$ = "GEOMETRY";
this.coordinates = coordinates;
this.type = "POINT";
}
public String get$reql_type$() {
return $reql_type$;
}
public void set$reql_type$(String $reql_type$) {
this.$reql_type$ = $reql_type$;
}
public double[] getCoordinates() {
return coordinates;
}
public void setCoordinates(double[] coordinates) {
this.coordinates = coordinates;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
我创建了一个简单的 bean 来复制 rethinkDb 中 REAL geoJson 字段的字段,我只是在将整个 Json 对象推送到数据库之前使用 Gson 对其进行解析。