我先说明一下定定义,拉运地:地图中的一个点包含经度和维度,也是“起点”,运往地:地图中的一个点包含经度和维度,也是“终点”。我的数据库里存放着很多拉运地和运往地的坐标点。现在,我想要一个java语言编写的代码,我可以传入拉运地的偏差范围和运往地的偏差范围,然后从数据库中给我返回符合条件的坐标信息。注意:1. 我用的持久化框架是mybaties-plus。2. 我传入的偏差范围是一个单位为"千米"的数。3. 我要的代码类型为工具类。4. 要求有良好的注释
时间: 2023-04-01 18:01:22 浏览: 61
垃圾清运处理方案.docx
好的,根据您的需求,我可以为您提供以下的Java工具类代码,用于查询符合条件的坐标信息:
```
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class CoordinateQueryUtil extends ServiceImpl<BaseMapper<Coordinate>, Coordinate> {
@Autowired
private BaseMapper<Coordinate> coordinateMapper;
/**
* 根据拉运地和运往地的偏差范围查询符合条件的坐标信息
*
* @param startLatitude 拉运地的纬度
* @param startLongitude 拉运地的经度
* @param endLatitude 运往地的纬度
* @param endLongitude 运往地的经度
* @param startRange 拉运地的偏差范围(单位:千米)
* @param endRange 运往地的偏差范围(单位:千米)
* @return 符合条件的坐标信息列表
*/
public List<Coordinate> queryCoordinatesByRange(double startLatitude, double startLongitude, double endLatitude, double endLongitude, double startRange, double endRange) {
// 计算拉运地和运往地的最大和最小纬度、经度
double minLatitude = Math.min(startLatitude - startRange / 111, endLatitude - endRange / 111);
double maxLatitude = Math.max(startLatitude + startRange / 111, endLatitude + endRange / 111);
double minLongitude = Math.min(startLongitude - startRange / (111 * Math.cos(startLatitude)), endLongitude - endRange / (111 * Math.cos(endLatitude)));
double maxLongitude = Math.max(startLongitude + startRange / (111 * Math.cos(startLatitude)), endLongitude + endRange / (111 * Math.cos(endLatitude)));
// 构造查询条件
QueryWrapper<Coordinate> queryWrapper = new QueryWrapper<>();
queryWrapper.between("latitude", minLatitude, maxLatitude)
.between("longitude", minLongitude, maxLongitude);
// 执行查询
List<Coordinate> coordinateList = coordinateMapper.selectList(queryWrapper);
return coordinateList;
}
}
```
这个工具类使用了Mybatis-Plus框架,可以方便地进行数据库操作。在查询坐标信息时,根据传入的拉运地和运往地的偏差范围,计算出最大和最小的纬度和经度,然后使用Mybatis-Plus的查询条件构造器,查询符合条件的坐标信息。最后返回符合条件的坐标信息列表。
希望这个工具类能够满足您的需求。如果您有任何问题或建议,欢迎随时与我交流。
阅读全文