/**
* 按时间范围、多站点/单站点、经纬度范围检索地面要素
*
* @param begin
* 开始时间,必填 yyyyMMddHHmmss
* @param end
* 结束时间,必填 yyyyMMddHHmmss
* @param stationid
* 区站号(数字),Station_Id_c,可选,多选
* @param elements
* 要素,可选,多选
* @param maxLon
* 最大经度
* @param maxLat
* 最大纬度
* @param minLon
* 最小经度
* @param minLat
* 最小纬度
* @return
* @throws ParseException
*/
public List<XXBean> getXXInRectByTimeRange(String begin, String end, String stationids, String elements,
String maxLon, String maxLat, String minLon, String minLat) throws ParseException {
DBObject dbObject = new BasicDBObject();
dbObject.put("datetime", new BasicDBObject("$gte", begin).append("$lte", end));
if (stationids != null) {
String[] stationid = stationids.split(",");
dbObject.put("station_id_c", new BasicDBObject("$in", stationid));
}
BasicDBObject fieldsObject = null;
if (elements != null) {
fieldsObject = new BasicDBObject();
String[] param = elements.split(",");
for (int i = 0; i < param.length; i++) {
fieldsObject.put(param[i], true);
}
}
if (maxLon != null && maxLat != null && minLon != null && minLat != null) {
BasicDBObject loc = new BasicDBObject();
loc.append("$geoWithin",
new BasicDBObject().append("$box",
new double[][] { new double[] { Double.parseDouble(minLon), Double.parseDouble(minLat) },
new double[] { Double.parseDouble(maxLon), Double.parseDouble(maxLat) } }));
dbObject.put("loc", loc);
}
Query query = new BasicQuery(dbObject, fieldsObject);
return mongoTemplate.find(query, XXBean.class, "XXBean");
}
/**
* 按时间范围、多站点/单站点、经纬度最近的多个站点检索地面要素
*
* @param begin
* 开始时间,必填 yyyyMMddHHmmss
* @param end
* 结束时间,必填 yyyyMMddHHmmss
* @param stationid
* 区站号(数字),Station_Id_c,可选,多选
* @param elements
* 要素,可选,多选
* @param lon
* 经度
* @param lat
* 纬度
* @param size
* 显示站点个数
* @return
* @throws ParseException
*/
public List<XXBean> getXXInNearByTimeRange(String begin, String end, String stationids, String elements,
String lon, String lat, String size) throws ParseException {
DBObject dbObject = new BasicDBObject();
dbObject.put("datetime", new BasicDBObject("$gte", begin).append("$lte", end));
if (stationids != null) {
String[] stationid = stationids.split(",");
dbObject.put("station_id_c", new BasicDBObject("$in", stationid));
}
BasicDBObject fieldsObject = null;
if (elements != null) {
fieldsObject = new BasicDBObject();
String[] param = elements.split(",");
for (int i = 0; i < param.length; i++) {
fieldsObject.put(param[i], true);
}
}
if (lon != null && lat != null && size != null) {
BasicDBObject loc = new BasicDBObject();
loc.append("$near", new BasicDBObject().append("$geometry", new BasicDBObject().append("type", "Point")
.append("coordinates", new double[] { Double.parseDouble(lon), Double.parseDouble(lat) })));
dbObject.put("loc", loc);
}
Query query;
if (size != null) {
query = new BasicQuery(dbObject, fieldsObject).limit(Integer.parseInt(size));
} else {
query = new BasicQuery(dbObject, fieldsObject);
}
return mongoTemplate.find(query, XXBean.class, "XXBean");
}
@GeoSpatialIndexed(type=GeoSpatialIndexType.GEO_2DSPHERE)
private double[] loc;
double[] loc = { lon, lat };