【问题标题】:Bounding Box Calculation in JavaJava中的边界框计算
【发布时间】:2011-04-10 17:35:24
【问题描述】:

我正在尝试创建一种方法,该方法给定纬度和经度以及范围(以英里或公里为单位)返回边界框的 NE 和 SW 角?

我在某处找到了一个功能,但经过一些测试后它似乎不起作用(见下文):

        double latrange=range/69.172;
    double longrange=Math.abs(range/(Math.cos(inLat) *69.172));
    double minlat=inLat-latrange;
    double maxlat=inLat+latrange;
    double minlon=inLong-longrange;
    double maxlon=inLong+longrange;

    MapCoord min = new MapCoord(minlat,minlon);
    MapCoord max = new MapCoord(maxlat,maxlon);
    MapCoord [] rs = new MapCoord[2];
    rs[0] = min;
    rs[1] = max;
    return rs;  

【问题讨论】:

    标签: geolocation


    【解决方案1】:

    不清楚您所说的“不起作用”是什么意思,但据我所知,代码确实会导致输入的两个点 SW 和 NE。然而,它将在两极和国际日期变更线附近断裂。

    产生合理输出的简单测试程序:

    public class LatLonBoundBox {
    
        public static class MapCoord {
            final double lat;
            final double lon;
            public MapCoord(double lat, double lon) {
                this.lat=lat;
                this.lon=lon;
            }
            @Override
            public String toString() {
                return "MapCoord [lat=" + lat + ", lon=" + lon + "]";
            }
        }
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            double range = 1.0; 
            double inLat = 51.350801;
            double inLong = -0.251850;
    
            double latrange=range/69.172;
            double longrange=Math.abs(range/(Math.cos(inLat) *69.172));
            double minlat=inLat-latrange;
            double maxlat=inLat+latrange;
            double minlon=inLong-longrange;
            double maxlon=inLong+longrange;
    
            MapCoord min = new MapCoord(minlat,minlon);
            MapCoord max = new MapCoord(maxlat,maxlon);
            System.out.println(min);  
            System.out.println(max);  
        }
    
    }
    

    【讨论】:

    • 我的问题是,当我为俄勒冈州波特兰市和 20 英里半径添加纬度/经度时,它给了我真正的几百英里半径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2019-08-06
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多