public boolean isSeaLevel() { return heights.getHeader(0) == 1; }
protected int loadNodesHeader() { nodeEntryBytes = nodes.getHeader(1 * 4); nodeCount = nodes.getHeader(2 * 4); bounds.minLon = Helper.intToDegree(nodes.getHeader(3 * 4)); bounds.maxLon = Helper.intToDegree(nodes.getHeader(4 * 4)); bounds.minLat = Helper.intToDegree(nodes.getHeader(5 * 4)); bounds.maxLat = Helper.intToDegree(nodes.getHeader(6 * 4)); if (bounds.hasElevation()) { bounds.minEle = Helper.intToEle(nodes.getHeader(7 * 4)); bounds.maxEle = Helper.intToEle(nodes.getHeader(8 * 4)); } frozen = nodes.getHeader(9 * 4) == 1; return 10; }
@Override public boolean loadExisting() { if (initialized) throw new IllegalStateException("Call loadExisting only once"); if (!dataAccess.loadExisting()) return false; if (dataAccess.getHeader(0) != MAGIC_INT) throw new IllegalStateException("incorrect location index version, expected:" + MAGIC_INT); if (dataAccess.getHeader(1 * 4) != calcChecksum()) throw new IllegalStateException("location index was opened with incorrect graph: " + dataAccess.getHeader(1 * 4) + " vs. " + calcChecksum()); setMinResolutionInMeter(dataAccess.getHeader(2 * 4)); prepareAlgo(); initialized = true; return true; }
/** * Loads the index from disc if exists. Make sure you are using the identical graph which was * used while flushing this index. * <p> * * @return if loading from file was successfully. */ @Override public boolean loadExisting() { if (!index.loadExisting()) return false; if (index.getHeader(0) != MAGIC_INT) throw new IllegalStateException("incorrect loc2id index version"); int lat = index.getHeader(1 * 4); int lon = index.getHeader(2 * 4); int checksum = index.getHeader(3 * 4); if (checksum != graph.getNodes()) throw new IllegalStateException("index was created from a different graph with " + checksum + ". Current nodes:" + graph.getNodes()); initAlgo(lat, lon); return true; }
throw new IllegalStateException("landmark weights loaded but not the subnetworks!?"); int version = landmarkWeightDA.getHeader(0 * 4); if (version != getVersion()) throw new IllegalArgumentException("Cannot load landmark data due to incompatible version. Storage used version: " + version + ", expected: " + getVersion()); int nodes = landmarkWeightDA.getHeader(4 * 4); if (nodes != graph.getNodes()) throw new IllegalArgumentException("Cannot load landmark data as written for different graph storage with " + nodes + " nodes, not " + graph.getNodes()); landmarks = landmarkWeightDA.getHeader(1 * 4); int subnetworks = landmarkWeightDA.getHeader(2 * 4); factor = landmarkWeightDA.getHeader(3 * 4) / DOUBLE_MLTPL; LM_ROW_LENGTH = landmarks * 4; long maxBytes = LM_ROW_LENGTH * nodes;
@Test public void testHeader() { DataAccess da = createDataAccess(name); da.create(300); da.setHeader(7 * 4, 123); assertEquals(123, da.getHeader(7 * 4)); da.setHeader(10 * 4, Integer.MAX_VALUE / 3); assertEquals(Integer.MAX_VALUE / 3, da.getHeader(10 * 4)); da.setHeader(11 * 4, Helper.degreeToInt(123.321)); assertEquals(123.321, Helper.intToDegree(da.getHeader(11 * 4)), 1e-4); da.flush(); da.close(); da = createDataAccess(name); assertTrue(da.loadExisting()); assertEquals(123, da.getHeader(7 * 4)); da.close(); }
int width = (int) (Math.sqrt(heights.getHeader(WIDTH_BYTE_INDEX)) + 0.5); if (width == 0) width = DEFAULT_WIDTH;
@Test public void testCopy() { DataAccess da1 = createDataAccess(name); da1.create(1001 * 4); da1.setHeader(4, 12); da1.setInt(1 * 4, 1); da1.setInt(123 * 4, 321); da1.setInt(1000 * 4, 1111); DataAccess da2 = createDataAccess(name + "2"); da2.create(10); da1.copyTo(da2); assertEquals(12, da2.getHeader(4)); assertEquals(1, da2.getInt(1 * 4)); assertEquals(321, da2.getInt(123 * 4)); assertEquals(1111, da2.getInt(1000 * 4)); da2.setInt(1 * 4, 2); assertEquals(2, da2.getInt(1 * 4)); da2.flush(); da1.flush(); // make sure they are independent! assertEquals(1, da1.getInt(1 * 4)); da1.close(); da2.close(); }