Search in sources :

Example 1 with KeyAlgo

use of com.graphhopper.geohash.KeyAlgo in project graphhopper by graphhopper.

the class BresenhamLineTest method testRealBresenham.

@Test
public void testRealBresenham() {
    int parts = 4;
    int bits = (int) (Math.log(parts * parts) / Math.log(2));
    double minLon = -1, maxLon = 1.6;
    double minLat = -1, maxLat = 0.5;
    final KeyAlgo keyAlgo = new SpatialKeyAlgo(bits).setBounds(minLon, maxLon, minLat, maxLat);
    double deltaLat = (maxLat - minLat) / parts;
    double deltaLon = (maxLon - minLon) / parts;
    final ArrayList<Long> keys = new ArrayList<Long>();
    PointEmitter tmpEmitter = new PointEmitter() {

        @Override
        public void set(double lat, double lon) {
            keys.add(keyAlgo.encode(lat, lon));
        }
    };
    keys.clear();
    BresenhamLine.calcPoints(.3, -.3, -0.2, 0.2, tmpEmitter, minLat, minLon, deltaLat, deltaLon);
    assertEquals(Arrays.asList(11L, 9L), keys);
    keys.clear();
    BresenhamLine.calcPoints(.3, -.1, -0.2, 0.4, tmpEmitter, minLat, minLon, deltaLat, deltaLon);
    // 11, 9, 12
    assertEquals(Arrays.asList(11L, 12L), keys);
    keys.clear();
    BresenhamLine.calcPoints(.5, -.5, -0.1, 0.9, tmpEmitter, minLat, minLon, deltaLat, deltaLon);
    // precise: 10, 11, 14, 12
    assertEquals(Arrays.asList(10L, 11L, 12L), keys);
}
Also used : SpatialKeyAlgo(com.graphhopper.geohash.SpatialKeyAlgo) SpatialKeyAlgo(com.graphhopper.geohash.SpatialKeyAlgo) KeyAlgo(com.graphhopper.geohash.KeyAlgo) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Aggregations

KeyAlgo (com.graphhopper.geohash.KeyAlgo)1 SpatialKeyAlgo (com.graphhopper.geohash.SpatialKeyAlgo)1 ArrayList (java.util.ArrayList)1 Test (org.junit.Test)1