public HeightTile setSeaLevel(boolean b) { heights.setHeader(0, b ? 1 : 0); return this; }
protected void copyHeader(DataAccess da) { for (int h = 0; h < header.length * 4; h += 4) { da.setHeader(h, getHeader(h)); } }
protected int setNodesHeader() { nodes.setHeader(1 * 4, nodeEntryBytes); nodes.setHeader(2 * 4, nodeCount); nodes.setHeader(3 * 4, Helper.degreeToInt(bounds.minLon)); nodes.setHeader(4 * 4, Helper.degreeToInt(bounds.maxLon)); nodes.setHeader(5 * 4, Helper.degreeToInt(bounds.minLat)); nodes.setHeader(6 * 4, Helper.degreeToInt(bounds.maxLat)); if (bounds.hasElevation()) { nodes.setHeader(7 * 4, Helper.eleToInt(bounds.minEle)); nodes.setHeader(8 * 4, Helper.eleToInt(bounds.maxEle)); } nodes.setHeader(9 * 4, isFrozen() ? 1 : 0); return 10; }
private void updateHeightsFromFile(double lat, double lon, DataAccess heights) throws FileNotFoundException { try { byte[] bytes = getByteArrayFromFile(lat, lon); heights.create(bytes.length); for (int bytePos = 0; bytePos < bytes.length; bytePos += 2) { short val = BIT_UTIL.toShort(bytes, bytePos); if (val < -1000 || val > 12000) val = Short.MIN_VALUE; heights.setShort(bytePos, val); } heights.setHeader(WIDTH_BYTE_INDEX, bytes.length / 2); heights.flush(); } catch (FileNotFoundException ex) { logger.warn("File not found for the coordinates for " + lat + "," + lon); throw ex; } catch (Exception ex) { throw new RuntimeException("There was an issue looking up the coordinates for " + lat + "," + lon, ex); } }
@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(); }
@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(); }
@Override public synchronized void setHeader( int bytePos, int value ) { inner.setHeader(bytePos, value); }
protected void copyHeader( DataAccess da ) { for (int h = 0; h < header.length * 4; h += 4) { da.setHeader(h, getHeader(h)); } }