Расчет ограничительной рамки в Java - PullRequest
0 голосов
/ 10 сентября 2010

Я пытаюсь создать метод, который с учетом широты, долготы и диапазона (в милях или километрах) возвращает углы 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;  

1 Ответ

0 голосов
/ 10 сентября 2010

Непонятно, что вы подразумеваете под «не работает», но из того, что я вижу, код действительно приводит к двум точкам 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);  
    }

}
...