计算经纬度之间的距离、通过指定经纬度查询一定范围内的数据

计算经纬度之间的距离、通过指定经纬度查询一定范围内的数据

1.1 计算两个经纬度之间的距离

此方法需要导入一个依赖包,专门用于计算经纬度的数据的

        <dependency>
            <groupId>org.gavaghan</groupId>
            <artifactId>geodesy</artifactId>
            <version>1.1.3</version>
        </dependency>

计算的方式方法,根据不特定的需求使用不同的方式(Ellipsoid.Sphere,Ellipsoid.WGS84)

    public static String distanceUtil(double lat1, double lng1, double lat2, double lng2) {
   

        GlobalCoordinates source = new GlobalCoordinates(lat1, lng1);
        GlobalCoordinates target = new GlobalCoordinates(lat2, lng2);

        
        double meter1 = getDi
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的GeoTools库来实现通过经纬度距离查询表中符合范围内的数据。首先需要将经纬度转换为Geometry类型,然后使用GeoTools提供的过滤器工具类来进行查询。 以下是一个基本的示例代码: ```java // 创建数据源 File file = new File("data.shp"); Map<String, Serializable> params = new HashMap<>(); params.put("url", file.toURI().toURL()); DataStore dataStore = DataStoreFinder.getDataStore(params); // 获取目标数据集 String typeName = dataStore.getTypeNames()[0]; SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName); // 构建查询条件 CoordinateReferenceSystem crs = featureSource.getSchema().getCoordinateReferenceSystem(); GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Point point = geometryFactory.createPoint(new Coordinate(lon, lat)); double distance = 5000.0; // 查询距离为5000米 Filter filter = CQL.toFilter("DWITHIN(the_geom, " + point + ", " + distance + ", meters)"); // 执行查询 SimpleFeatureCollection features = featureSource.getFeatures(filter); // 遍历查询结果 try (SimpleFeatureIterator iterator = features.features()) { while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); // 处理查询结果 } } ``` 其中,`data.shp`是包含经纬度信息的数据文件,`lon`和`lat`分别表示查询点的经度和纬度。`DWITHIN`是GeoTools提供的过滤器函数,用于查询距离指定一定范围内的数据查询结果为一个`SimpleFeatureCollection`对象,可以通过迭代器遍历获取查询结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值