pnode05:/data/www_hirise/gmaps-bkup.uahirise.org/mars/ctxglobal/smaller> gdal_translate mercNE_smaller.vrt -of JPEG -co "QUALITY=100" -r bilinear -outsize 256 256 ../../ctx/1/1/1.jpg Input file size is 266720, 266720 0...10...20...30...40...50...60...70...80...90...100 - done. pnode05:/data/www_hirise/gmaps-bkup.uahirise.org/mars/ctxglobal/smaller> gdal_translate mercNE_smaller.vrt -of JPEG -co "QUALITY=100" -r bilinear -outsize 256 256 ../../ctx/1/1/1.jpg512 512 mercNE_z2.jpg[1@4[1@0[1@9[1@6 [1@ [1@4[1@0[1@9[1@6 mercNE_z2[1@5exit " ls -1 *.tif | wc -l 1024 pnode05:/data/www_hirise/gmaps-bkup.uahirise.org/mars/ctxglobal/smaller> bc -l bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 256*16 4096 quit pnode05:/data/www_hirise/gmaps-bkup.uahirise.org/mars/ctxglobal/smaller> bc -l[14@ls -1 *.tif | wc -lgdal_translate mercNE_smaller.vrt -of JPEG -co "QUALITY=100" -r bilinear -outsize 256 256 ../../ctx/1/1/1.jpg[1@4[1@0[1@9[1@6 [1@ [1@4[1@0[1@9[1@6 ../../ctx/1/1/1.jpgze5_NE.jpg Input file size is 266720, 266720 0...10...20...30...40...50...60...70...80...90...100 - done. pnode05:/data/www_hirise/gmaps-bkup.uahirise.org/mars/ctxglobal/smaller> cd ~/gridxl/ pnode05:~/gridxl> vi src/mjain/java/ Coordinate.java ctx/ guymac/ pnode05:~/gridxl> vi src/main/java/ctx/ CTX.java ctxmiss.java ctxquad.java ctxurls.java pnode05:~/gridxl> vi src/main/java/ctx/ctxquad.java [?1049h[?1h=â–½ [?12;25h[?12l[?25h[?25l"src/main/java/ctx/ctxquad.java" 55L, 1182Cpackage ctx; import java.nio.file.*; import java.io.*; public class ctxquad { public static void main(String[] args) {if (args.length < 1) { System.out.println("Usage: ctxquad ne|nw|se|sw"); return; }int minLat, maxLat, minLon, maxLon;if ("ne".equalsIgnoreCase(args[0])){minLat = 0;maxLat = 84;minLon = 0;maxLon = 176;}else if ("nw".equalsIgnoreCase(args[0])){minLat = 0;maxLat = 84;minLon = -180;maxLon = -4;}else if ("se".equalsIgnoreCase(args[0])){1,1Top[?12l[?25h[?25l::[?12l[?25hq[?25l[?12l[?25h [?25l[?1l>[?12l[?25h[?1049lpnode05:~/gridxl> vi src/main/java/ctx/ctxquad.javacd ~/gridxl/gdal_translate mercNE_smaller.vrt -of JPEG -co "QUALITY=100" -r bilinear -outsize 4096 4096 z5_NE.jpgcd ~/gridxl/vi src/main/java/ctx/ctxquad.javavi src/main/java/ctx/ctxquad.javacd ~/gridxl/ls src/main/java/ctx/ CTX.java ctxmiss.java ctxquad.java ctxurls.java pnode05:~/gridxl> ls src/main/java/ctx/guymac/ Test.java TilePyramid.java TileTest.java pnode05:~/gridxl> ls src/main/java/guymac/Test.java [1@v[1@i [?1049h[?1h=â–½ [?12;25h[?12l[?25h[?25l"src/main/java/guymac/Test.java" 175L, 5570Cpackage guymac; import java.awt.*; import java.awt.image.*; import java.io.*; import loci.formats.*; import loci.formats.gui.*; import javax.imageio.*; import javax.imageio.stream.*; import java.util.concurrent.*; import picocli.CommandLine; import picocli.CommandLine.Option; /** * Test loading  *  */ public class Test { static final int TILE_SIZE = 256;//static ExecutorService threadSvc = Executors.newSingleThreadExecutor();static javax.imageio.ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();@Option(names = { "-n", "--dry-run" }, paramLabel = "NO OUTPUT", description = "do not create output") private boolean noOutput;@Option(names = { "-i", "--image" }, required = true, paramLabel = "INPUT", description = "the input image file")1,1Top[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,1 [?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 10,1[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3,0-1[?12l[?25h[?25l~@k 4,1 [?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 20[?12l[?25h[?25l~@k 1,0-1[?12l[?25h[?25l~@k 2,1 [?12l[?25h[?25l~@k 3,0-1[?12l[?25h[?25l~@k 4,1-3[?12l[?25h[?25l~@k 5,0-1[?12l[?25h[?25l~@k 6,1 [?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8,0-1[?12l[?25h[?25l~@k 9,1 [?12l[?25h[?25l~@k  private String image;30,10%[?12l[?25h[?25l~@k  31,0-11%[?12l[?25h[?25l~@k  @Option(names = { "-d", "--dir" }, required = true, paramLabel = "DIRECTORY", description = "the output directory")32,12%[?12l[?25h[?25l~@k  private String dir;33,12%[?12l[?25h[?25l~@k  34,0-13%[?12l[?25h[?25l~@k  @Option(names = { "-z", "--zoom" }, paramLabel = "Z-INDEX", description = "the zoom levels to create")35,14%[?12l[?25h[?25l~@k  private int z = -1;36,14%[?12l[?25h[?25l~@k  37,0-15%[?12l[?25h[?25l~@k  @Option(names = { "-v", "--verbose" }, paramLabel = "VERBOSE", description = "increase logging output")38,16%[?12l[?25h[?25l~@k  private boolean verbose;39,16%[?12l[?25h[?25l~@k  40,0-17%[?12l[?25h[?25l~@k  public static void main(final String[] args) throws Exception41,18%[?12l[?25h[?25l~@k  {42,18%[?12l[?25h[?25l~@k  Test test = new Test();43,19%[?12l[?25h[?25l~@k  new CommandLine(test).parseArgs(args);44,110%[?12l[?25h[?25l~@k  loci.formats.ImageReader imr = new loci.formats.ImageReader();45,110%[?12l[?25h[?25l~@k  imr.setId(test.image);46,111%[?12l[?25h[?25l~@k  47,0-112%[?12l[?25h[?25l~@k  BufferedImageReader reader = BufferedImageReader.makeBufferedImageReader(imr);48,113%[?12l[?25h[?25l~@k  49,0-113%[?12l[?25h[?25l~@k  int width = reader.getSizeX();50,114%[?12l[?25h[?25l~@k  int height = reader.getSizeY();51,115%[?12l[?25h[?25l~@k  System.out.format("Image: %d x %d%n", width, height);52,115%[?12l[?25h[?25l~@k  53,0-116%[?12l[?25h[?25l~@k  TilePyramid pyramid = new TilePyramid(width, height);54,117%[?12l[?25h[?25l~@k  TilePyramid.TileLevel[] levels = pyramid.getTileLevels();55,117%[?12l[?25h[?25l~@k  56,0-118%[?12l[?25h[?25l~@k  if (test.z == -1)57,119%[?12l[?25h[?25l~@k  {58,119%[?12l[?25h[?25l~@k  test.z = levels.length - 1;59,120%[?12l[?25h[?25l~@k  }60,121%[?12l[?25h[?25l~@k  else if (test.z < 0 || test.z >= levels.length)61,121%[?12l[?25h[?25l~@k  {62,122%[?12l[?25h[?25l~@k  System.err.format("z is not in range %d-%d%n", 0, levels.length-1);63,123%[?12l[?25h[?25l~@k  System.exit(1);64,123%[?12l[?25h[?25l~@k  }65,124%[?12l[?25h[?25l~@k  66,0-125%[?12l[?25h[?25l~@k  int size = levels[test.z].getSize();67,126%[?12l[?25h[?25l~@k  68,126%[?12l[?25h[?25l~@k  int n = size, tiles = 0;69,1-327%[?12l[?25h[?25l~@k  70,0-128%[?12l[?25h[?25l~@k  int pw = width / size, ph = height / size;71,128%[?12l[?25h[?25l~@k  72,0-129%[?12l[?25h[?25l~@k  float progress = 0f, pct = 10f;73,130%[?12l[?25h[?25l~@k  74,0-130%[?12l[?25h[?25l~@k  System.out.format("Generating level %d (%d x %d, %d px x %d px)%n0%%.. ", test.z, n, n, pw, ph);75,131%[?12l[?25h[?25l~@k  76,0-132%[?12l[?25h[?25l~@k  for (int py, y = 0 ; y < n ; y++)77,132%[?12l[?25h[?25l~@k  {78,133%[?12l[?25h[?25l~@k  py = height - ph * y; // gfx bottom79,134%[?12l[?25h[?25l~@k  80,0-134%[?12l[?25h[?25l~@k  assert py <= height : String.format("Invalid Y offset %d at y = %d", py, y);81,135%[?12l[?25h[?25l~@k  82,0-136%[?12l[?25h[?25l~@k  for (int px, x = 0 ; x < n ; x++)83,136%[?12l[?25h[?25l~@k  {84,137%[?12l[?25h[?25l~@k  85,0-138%[?12l[?25h[?25l~@k  px = x * pw;86,139%[?12l[?25h[?25l~@k  87,0-139%[?12l[?25h[?25l~@k  assert px + pw <= width : String.format("Invalid X offset %d at x = %d", px, x);88,140%[?12l[?25h[?25l~@k  89,0-141%[?12l[?25h[?25l~@k  try90,141%[?12l[?25h[?25l~@k  {91,142%[?12l[?25h[?25l~@k  BufferedImage img = reader.openImage(0, px, py - ph, pw, ph);92,143%[?12l[?25h[?25l~@k  //final int tx = x, ty = y, tz = test.z[0];93,143%[?12l[?25h[?25l~@k  //threadSvc.submit(() -> 94,144%[?12l[?25h[?25l~@k  saveTile(test.dir, !test.noOutput, test.z, x, y, img); //);95,145%[?12l[?25h[?25l~@k  }96,145%[?12l[?25h[?25l~@k  catch (FormatException ex)97,146%[?12l[?25h[?25l~@k  {98,147%[?12l[?25h[?25l~@k  System.err.format("Skipping %d, %d due to '%s'%n", x, y, ex.getMessage());99,147%[?12l[?25h[?25l~@k  //ex.printStackTrace(System.err);100,148%[?12l[?25h[?25l~@k  continue;101,149%[?12l[?25h[?25l~@k  }102,150%[?12l[?25h[?25l~@k  103,0-150%[?12l[?25h[?25l~@k  progress = 100f * (++tiles / (float)(n * n));104,151%[?12l[?25h[?25l~@k  105,0-152%[?12l[?25h[?25l~@k  if (progress - 1 > pct || progress >= pct)106,152%[?12l[?25h[?25l~@k  {107,153%[?12l[?25h[?25l~@k  System.out.format("%.0f%%..", progress);108,154%[?12l[?25h[?25l~@k  pct += 10f;109,154%[?12l[?25h[?25l~@k  }110,155%[?12l[?25h[?25l~@k  }111,156%[?12l[?25h[?25l~@k  }112,156%[?12l[?25h[?25l~@k  113,0-157%[?12l[?25h[?25l~@k  System.out.println("100%");114,158%[?12l[?25h[?25l~@k  115,0-158%[?12l[?25h[?25l~@k  jpgWriter.dispose();116,1-359%[?12l[?25h[?25l~@k  reader.close();117,1-360%[?12l[?25h[?25l~@k  118,0-160%[?12l[?25h[?25l~@k  //threadSvc.shutdown();119,161%[?12l[?25h[?25l~@k  }120,162%[?12l[?25h[?25l~@k  121,0-163%[?12l[?25h[?25l static void saveTile(String outdir, boolean output, int z, int x, int y, BufferedImage image)122,1-363%[?12l[?25h[?25l~@k  {123,164%[?12l[?25h[?25l~@k  //Graphics2D g2d = (Graphics2D) image.getGraphics();124,165%[?12l[?25h[?25l~@k  BufferedImage temp = new BufferedImage(256, 256, image.getType());125,165%[?12l[?25h[?25l~@k  Graphics2D g2d = temp.createGraphics();126,166%[?12l[?25h[?25l~@k  127,0-167%[?12l[?25h[?25l~@k  g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);128,167%[?12l[?25h[?25l~@k  g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);129,1-368%[?12l[?25h[?25l~@k  130,0-169%[?12l[?25h[?25l~@k  //g2d.scale(256d/360d, 256d/180d);131,1-369%[?12l[?25h[?25l~@k  132,0-170%[?12l[?25h[?25l~@k  g2d.drawImage(image, 0, 0, 256, 256, null);133,171%[?12l[?25h[?25l~@k  //g2d.dispose();134,171%[?12l[?25h[?25l~@k  135,0-172%[?12l[?25h[?25l~@k  String path = String.format("%s/%d/%d/%d.jpg", outdir, z, x, y);136,173%[?12l[?25h[?25l~@k  137,0-173%[?12l[?25h[?25l~@k  //System.out.println(path);138,174%[?12l[?25h[?25l~@k  139,0-175%[?12l[?25h[?25l if (!output) return;140,176%[?12l[?25h[?25l~@k  141,0-176%[?12l[?25h[?25l~@k  ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam();142,177%[?12l[?25h[?25l~@k  jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);143,178%[?12l[?25h[?25l~@k  jpgWriteParam.setCompressionQuality(1f);144,178%[?12l[?25h[?25l~@k  145,0-179%[?12l[?25h[?25l~@k  File file = null;146,180%[?12l[?25h[?25l~@k  147,0-180%[?12l[?25h[?25l~@k  try148,181%[?12l[?25h[?25l~@k  {149,182%[?12l[?25h[?25l~@k  file = new File(path);150,182%[?12l[?25h[?25l~@k  file.getParentFile().mkdirs();151,183%[?12l[?25h[?25l~@k  }152,184%[?12l[?25h[?25l~@k  catch (Exception ex)153,184%[?12l[?25h[?25l~@k  {154,185%[?12l[?25h[?25l~@k  System.err.format("Could not create %s%n", file);155,186%[?12l[?25h[?25l~@k  ex.printStackTrace(System.err);156,186%[?12l[?25h[?25l~@k  //threadSvc.shutdownNow();157,187%[?12l[?25h[?25l~@k  System.exit(1);158,188%[?12l[?25h[?25l~@k  }159,189%[?12l[?25h[?25l~@k  160,0-189%[?12l[?25h[?25l~@k  try (ImageOutputStream outputStream = new FileImageOutputStream(file))161,190%[?12l[?25h[?25l~@k  {162,191%[?12l[?25h[?25l~@k  jpgWriter.setOutput(outputStream);163,191%[?12l[?25h[?25l~@k  IIOImage outputImage = new IIOImage(temp, null, null);164,192%[?12l[?25h[?25l~@k  jpgWriter.write(null, outputImage, jpgWriteParam);165,193%[?12l[?25h[?25l~@k  }166,193%[?12l[?25h[?25l~@k  catch (Exception ex)167,194%[?12l[?25h[?25l~@k  {168,195%[?12l[?25h[?25l~@k  System.err.format("Error writing to %s%n", path);169,195%[?12l[?25h[?25l~@k  ex.printStackTrace(System.err);170,196%[?12l[?25h[?25l~@k  //threadSvc.shutdownNow();171,197%[?12l[?25h[?25l~@k  System.exit(1);172,197%[?12l[?25h[?25l~@k  }173,198%[?12l[?25h[?25l~@k  }174,199%[?12l[?25h[?25l~@k  }175,1Bot[?12l[?25h[?25l~@k[?5h[?5l [?12l[?25h[?5h[?5l[?5h[?5l[?5h[?5l[?5h[?5l[?5h[?5l[?5h[?5l[?5h[?5l[?5h[?5l[?5h[?5l[?25l~@k[?5h[?5l [?12l[?25h[?25l::[?12l[?25hx[?25l[?12l[?25h [?25l[?1l>[?12l[?25h[?1049lpnode05:~/gridxl> vi src/main/java/guymac/Test.javals src/main/java/guymac/ctx/vi src/main/java/ctx/ctxquad.javals src/main/java/ctx/guymac/vi src/main/java/guymac/Test.javacd src/main/java/guymac/ pnode05:~/gridxl/src/main/java/guymac> ls Test.java TilePyramid.java TileTest.java pnode05:~/gridxl/src/main/java/guymac> cp less ../ctx/ct ctxmiss.java ctxquad.java ctxurls.java pnode05:~/gridxl/src/main/java/guymac> less ../ctx/ctxquad.java [?1049h[?1h= package ctx; import java.nio.file.*; import java.io.*; public class ctxquad { public static void main(String[] args) { if (args.length < 1) { System.out.println("Usage: ctxquad ne|nw|se|sw"); return; } int minLat, maxLat, minLon, maxLon; if ("ne".equalsIgnoreCase(args[0])) { minLat = 0; maxLat = 84; minLon = 0; maxLon = 176; } else if ("nw".equalsIgnoreCase(args[0])) { minLat = 0; maxLat = 84; minLon = -180; maxLon = -4; } else if ("se".equalsIgnoreCase(args[0])) { ../ctx/ctxquad.java  minLat = -88; maxLat = -4; minLon = 0; maxLon = 176; } else if ("sw".equalsIgnoreCase(args[0])) { minLat = -88; maxLat = -4; minLon = -180; maxLon = -4; } else return; for (int lat = minLat ; lat <= maxLat ; lat += 4) { for (int lon = minLon ; lon <= maxLon ; lon += 4) { System.out.println(CTX.getTifPath(lon, lat).toString()); //if (! p.toFile().exists()) { System.out.format("Missing %s%n", p); return; } } } } } (END) [?1l>[?1049lpnode05:~/gridxl/src/main/java/guymac> cd ../ctx/ pnode05:~/gridxl/src/main/java/ctx> cp ctxquad.java quadlist.java pnode05:~/gridxl/src/main/java/ctx> vi !$ vi quadlist.java [?1049h[?1h=â–½ [?12;25h[?12l[?25h[?25l"quadlist.java" 55L, 1182Cpackage ctx; import java.nio.file.*; import java.io.*; public class ctxquad { public static void main(String[] args) {if (args.length < 1) { System.out.println("Usage: ctxquad ne|nw|se|sw"); return; }int minLat, maxLat, minLon, maxLon;if ("ne".equalsIgnoreCase(args[0])){minLat = 0;maxLat = 84;minLon = 0;maxLon = 176;}else if ("nw".equalsIgnoreCase(args[0])){minLat = 0;maxLat = 84;minLon = -180;maxLon = -4;}else if ("se".equalsIgnoreCase(args[0])){1,1Top[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,1 [?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5,0-1[?12l[?25h[?25l~@k 4,1 [?12l[?25h[?25l~@k 3[?12l[?25h[?25ld[?12l[?25h[?25ld  minLat = -88;3,1Top[?12l[?25h[?25ld[?12l[?25h[?25ld  maxLat = -4;3,0-1Top[?12l[?25h[?25ld[?12l[?25h[?25ld  minLon = 0;3,1Top[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 10[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 4[?12l[?25h[?25lx dl txquad[?12l[?25h[?25lx dl xquad[?12l[?25h[?25lx dl quad[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25la -- INSERT --3,18Top[?12l[?25h[?25ll9[?12l[?25h[?25li20[?12l[?25h[?25ls1[?12l[?25h[?25lt2[?12l[?25h[?25l^[[?12l[?25h[?25l 3,21Top[?12l[?25h[?25l~@k 4,1 [?12l[?25h[?25l~@k 5,21[?12l[?25h[?25l~@k 6,4 [?12l[?25h[?25l~@k 7,21[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k ()6[?12l[?25h[?25l~@k ()7[?12l[?25h[?25l~@k {}8[?12l[?25h[?25l~@k {}9[?12l[?25h[?25l~@k 30[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 29[?12l[?25h[?25l~@k {}8[?12l[?25h[?25l~@k  {}7[?12l[?25h[?25l~@k ()6[?12l[?25h[?25l~@k ()5[?12l[?25h[?25lx dl () { System.out.println("Usage: ctxquad ne|nw|se|sw"); return; }[?12l[?25h[?25li -- INSERT --7,25Top[?12l[?25h[?25l2) { System.out.println("Usage: ctxquad ne|nw|se|sw"); return; }2)6[?12l[?25h[?25l^[[?12l[?25h[?25l ()7,25Top[?12l[?25h[?25l~@k ()6[?12l[?25h[?25l()7[?12l[?25h[?25l~@k {}8[?12l[?25h[?25l~@k {}9[?12l[?25h[?25l~@k 30[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 40[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k ()8[?12l[?25h[?25l~@k ()9[?12l[?25h[?25l~@k 50[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25lx dl txquad ne|nw|se|sw"); return; }[?12l[?25h[?25lx dl xquad ne|nw|se|sw"); return; }[?12l[?25h[?25lx dl quad ne|nw|se|sw"); return; }[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 60[?12l[?25h[?25la -- INSERT --7,61Top[?12l[?25h[?25ll ne|nw|se|sw"); return; }2[?12l[?25h[?25li ne|nw|se|sw"); return; }3[?12l[?25h[?25ls ne|nw|se|sw"); return; }4[?12l[?25h[?25lt ne|nw|se|sw"); return; }5[?12l[?25h[?25l ne|nw|se|sw"); return; }6[?12l[?25h[?25lz ne|nw|se|sw"); return; }7[?12l[?25h[?25l^[[?12l[?25h[?25l 7,66Top[?12l[?25h[?25l~@k 8,0-1[?12l[?25h[?25l~@k 9,41 [?12l[?25h[?25l~@k 10,0-1[?12l[?25h[?25lo -- INSERT --11,7Top11,7Top[?12l[?25h[?25lS8[?12l[?25h[?25lt9[?12l[?25h[?25lr10[?12l[?25h[?25li1[?12l[?25h[?25ln2[?12l[?25h[?25lg3[?12l[?25h[?25l4[?12l[?25h[?25lq5[?12l[?25h[?25lu6[?12l[?25h[?25la7[?12l[?25h[?25ld8[?12l[?25h[?25l9[?12l[?25h[?25l=20[?12l[?25h[?25l1[?12l[?25h[?25la2[?12l[?25h[?25lr3[?12l[?25h[?25lg4[?12l[?25h[?25ls5[?12l[?25h[?25l[6[?12l[?25h[?25l07[?12l[?25h[?25l][]8[?12l[?25h[?25l;[]9[?12l[?25h[?25l12,7Top[?12l[?25h[?25l^[[?12l[?25h[?25l 12,0-1Top[?12l[?25h[?25l~@k 3,7 [?12l[?25h[?25l~@k {}4[?12l[?25h[?25l~@k {}3[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k ()10[?12l[?25h[?25l~@k ()1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 20[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 30[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k ()2[?12l[?25h[?25l~@k ()3[?12l[?25h[?25lx dl rgs[0])[?12l[?25h[?25lx dl gs[0])[?12l[?25h[?25lx dl s[0])[?12l[?25h[?25lx dl [0])[?12l[?25h[?25lx dl 0])[?12l[?25h[?25lx dl ])[?12l[?25h[?25lx dl ()[?12l[?25h[?25li -- INSERT --13,33Top[?12l[?25h[?25lq))q)4[?12l[?25h[?25lu))u)5[?12l[?25h[?25la))a)6[?12l[?25h[?25ld))d)7[?12l[?25h[?25l^[[?12l[?25h[?25l (quad)13,36Top[?12l[?25h[?25l~@k {}4,7 [?12l[?25h[?25l~@k {}5,20[?12l[?25h[?25l~@k 6,21[?12l[?25h[?25l~@k 7,20[?12l[?25h[?25l~@k 8,22[?12l[?25h[?25l~@k {}9,7 [?12l[?25h[?25l~@k {}20,36[?12l[?25h[?25l~@k ()7[?12l[?25h[?25l~@k ()8[?12l[?25h[?25lx dl rgs[0])[?12l[?25h[?25lx dl gs[0])[?12l[?25h[?25lx dl s[0])[?12l[?25h[?25lx dl [0])[?12l[?25h[?25lx dl 0])[?12l[?25h[?25lx dl ])[?12l[?25h[?25lx dl ()[?12l[?25h[?25li -- INSERT --20,38Top[?12l[?25h[?25lq))q)9[?12l[?25h[?25lu))u)40[?12l[?25h[?25la))a)1[?12l[?25h[?25ld))d)2[?12l[?25h[?25l^[[?12l[?25h[?25l (quad)20,41Top[?12l[?25h[?25l~@k {}1,7 [?12l[?25h[?25l~@k {}2,20[?12l[?25h[?25l~@k 3,21[?12l[?25h[?25l~@k 4,23[?12l[?25h[?25l~@k 5,21[?12l[?25h[?25l~@k {}6,7 [?12l[?25h[?25l~@k {}7,41[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 39[?12l[?25h[?25l~@k 8[?12l[?25h[?25lx dl rgs[0])[?12l[?25h[?25lx dl gs[0])[?12l[?25h[?25lx dl s[0])[?12l[?25h[?25lx dl [0])[?12l[?25h[?25lx dl 0])[?12l[?25h[?25lx dl ])[?12l[?25h[?25lx dl ()[?12l[?25h[?25li  -- INSERT --27,38Top[?12l[?25h[?25lq))q)9[?12l[?25h[?25lu))u)40[?12l[?25h[?25la))a)1[?12l[?25h[?25ld))d)2[?12l[?25h[?25l^[[?12l[?25h[?25l (quad)27,41Top[?12l[?25h[?25l~@k 8,7 [?12l[?25h[?25l~@k 9,22[?12l[?25h[?25l~@k  maxLat = -4;30,214%[?12l[?25h[?25l~@k  minLon = 0;31,208%[?12l[?25h[?25l~@k  maxLon = 176;32,2212%[?12l[?25h[?25l~@k  {}33,716%[?12l[?25h[?25l~@k  {}else if ("sw".equalsIgnoreCase(args[0]))34,4120%[?12l[?25h[?25l~@k  {35,724%[?12l[?25h[?25l~@k  minLat = -88;36,2228%[?12l[?25h[?25l~@k  maxLat = -4;37,2132%[?12l[?25h[?25l~@k  minLon = -180;38,2336%[?12l[?25h[?25l~@k  maxLon = -4;39,2140%[?12l[?25h[?25l~@k  {}40,744%[?12l[?25h[?25l~@k  {}else return;41,1848%[?12l[?25h[?25l~@k {}0,7 [?12l[?25h[?25l~@k {}39,21[?12l[?25h[?25l~@k 8,23[?12l[?25h[?25l~@k 7,21[?12l[?25h[?25l~@k 6,22[?12l[?25h[?25l~@k {}5,7 [?12l[?25h[?25l~@k {}4,41[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 39[?12l[?25h[?25l~@k 8[?12l[?25h[?25lx dl rgs[0])[?12l[?25h[?25lx dl gs[0])[?12l[?25h[?25lx dl s[0])[?12l[?25h[?25lx dl [0])[?12l[?25h[?25lx dl 0])[?12l[?25h[?25lx dl ])[?12l[?25h[?25lx dl ()[?12l[?25h[?25li -- INSERT --34,3848%[?12l[?25h[?25lq))q)9[?12l[?25h[?25lu))u)40[?12l[?25h[?25la))a)1[?12l[?25h[?25ld))d)2[?12l[?25h[?25l^[[?12l[?25h[?25l (quad)34,4148%[?12l[?25h[?25l~@k {}5,7 [?12l[?25h[?25l~@k {}6,22[?12l[?25h[?25l~@k 7,21[?12l[?25h[?25l~@k 8,23[?12l[?25h[?25l~@k 9,21[?12l[?25h[?25l~@k {}40,7 [?12l[?25h[?25l~@k {}1,18[?12l[?25h[?25l~@k  42,0-152%[?12l[?25h[?25l~@k  for (int lat = minLat ; lat <= maxLat ; lat += 4)43,4156%[?12l[?25h[?25l~@k  {44,760%[?12l[?25h[?25l~@k  45,0-164%[?12l[?25h[?25l~@k  for (int lon = minLon ; lon <= maxLon ; lon += 4)46,4168%[?12l[?25h[?25l~@k  {47,772%[?12l[?25h[?25l~@k  System.out.println(CTX.getTifPath(lon, lat).toString());48,4176%[?12l[?25h[?25l~@k  //if (! p.toFile().exists()) { System.out.format("Missing %s%n", p); return; }49,4180%[?12l[?25h[?25l~@k  {}50,784%[?12l[?25h[?25l~@k  {}51,0-188%[?12l[?25h[?25l~@k  {}52,792%[?12l[?25h[?25l~@k  {} }53,496%[?12l[?25h[?25l~@k  }54,1Bot[?12l[?25h[?25l~@k 3,4[?12l[?25h[?25l~@k {}2,7[?12l[?25h[?25l~@k {}1,0-1[?12l[?25h[?25l~@k {}0,7 [?12l[?25h[?25l~@k {}49,41[?12l[?25h[?25ld[?12l[?25h[?25ld  { System.out.println(CTX.getTifPath(lon, lat).toString());}~ 49,7Bot[?12l[?25h[?25l~@k {}8[?12l[?25h[?25ld[?12l[?25h[?25ld  {}~ 48,7Bot[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k {}6[?12l[?25h[?25l~@k 5,0-1[?12l[?25h[?25l~@k {}4,7 [?12l[?25h[?25l~@k {}3[?12l[?25h[?25ld[?12l[?25h[?25ld  {}~ 43,7Bot[?12l[?25h[?25ld[?12l[?25h[?25ld  }~ 43,0-1Bot[?12l[?25h[?25ld[?12l[?25h[?25ld  ~ 43,7Bot[?12l[?25h[?25ld[?12l[?25h[?25ld  {}~ 43,7Bot[?12l[?25h[?25ld[?12l[?25h[?25ld  }~ 43,7Bot[?12l[?25h[?25ld[?12l[?25h[?25ld  ~ 43,0-1Bot[?12l[?25h[?25ld[?12l[?25h[?25ld  ~ 43,7Bot[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 1,7 [?12l[?25h[?25l~@k {}0[?12l[?25h[?25l~@k {}39[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k {}5[?12l[?25h[?25l~@k {}4[?12l[?25h[?25l~@k {}3[?12l[?25h[?25l~@k {}2[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 29[?12l[?25h[?25l~@k 30[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k {}3[?12l[?25h[?25l~@k {}4[?12l[?25h[?25l~@k {}5[?12l[?25h[?25l~@k {}6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k {}40[?12l[?25h[?25l~@k {}1[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,7 [?12l[?25h[?25ld[?12l[?25h[?25ld  ~ 43,4Bot[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 1,4 [?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 39[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 29[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k maxLon = -4;25,4Bot[?12l[?25h[?25l~@k minLon = -180;24,4Bot[?12l[?25h[?25l~@k maxLat = 84;23,4Bot[?12l[?25h[?25l~@k minLat = 0;22,4Bot[?12l[?25h[?25l~@k {21,4Bot[?12l[?25h[?25l~@k else if ("nw".equalsIgnoreCase(quad))20,4Bot[?12l[?25h[?25l~@k }19,4Bot[?12l[?25h[?25l~@k maxLon = 176;18,4Bot[?12l[?25h[?25l~@k minLon = 0;17,4Bot[?12l[?25h[?25l~@k maxLat = 84;16,4Bot[?12l[?25h[?25l~@k minLat = 0;15,493%[?12l[?25h[?25l~@k {14,486%[?12l[?25h[?25l~@k if ("ne".equalsIgnoreCase(quad))13,480%[?12l[?25h[?25l~@k 12,0-173%[?12l[?25h[?25l~@k String quad = args[0];11,466%[?12l[?25h[?25l~@k 10,0-160%[?12l[?25h[?25l~@k int minLat, maxLat, minLon, maxLon;9,453%[?12l[?25h[?25l~@k 8,0-146%[?12l[?25h[?25l~@k if (args.length < 2) { System.out.println("Usage: quadlist z ne|nw|se|sw"); return; }7,440%[?12l[?25h[?25l~@k {6,433%[?12l[?25h[?25l~@k public static void main(String[] args)5,426%[?12l[?25h[?25l~@k {4,120%[?12l[?25h[?25l~@k 5,4[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8,0-1[?12l[?25h[?25l~@k 9,4 [?12l[?25h[?25l~@k 10,0-1[?12l[?25h[?25l~@k 1,4 [?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,4 [?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 20[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 30[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k  }33,426%[?12l[?25h[?25l~@k  else if ("sw".equalsIgnoreCase(quad))34,433%[?12l[?25h[?25l~@k  {35,440%[?12l[?25h[?25l~@k  minLat = -88;36,446%[?12l[?25h[?25l~@k  maxLat = -4;37,453%[?12l[?25h[?25l~@k  minLon = -180;38,460%[?12l[?25h[?25l~@k  maxLon = -4;39,466%[?12l[?25h[?25l~@k  }40,473%[?12l[?25h[?25l~@k  else return;41,480%[?12l[?25h[?25l~@k  42,0-186%[?12l[?25h[?25l~@k  }43,493%[?12l[?25h[?25l~@k  }44,1Bot[?12l[?25h[?25l~@k 3,4[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 1,4 [?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 39[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 29[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k 19[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k minLat = 0;15,493%[?12l[?25h[?25l~@k {14,486%[?12l[?25h[?25l~@k if ("ne".equalsIgnoreCase(quad))13,480%[?12l[?25h[?25l~@k 12,0-173%[?12l[?25h[?25l~@k String quad = args[0];11,466%[?12l[?25h[?25l~@k 10,0-160%[?12l[?25h[?25l~@k int minLat, maxLat, minLon, maxLon;9,453%[?12l[?25h[?25l~@k 8,0-146%[?12l[?25h[?25l~@k if (args.length < 2) { System.out.println("Usage: quadlist z ne|nw|se|sw"); return; }7,440%[?12l[?25h[?25l~@k {6,433%[?12l[?25h[?25l~@k public static void main(String[] args)5,426%[?12l[?25h[?25l~@k {4,120%[?12l[?25h[?25l~@k public class quadlist3,413%[?12l[?25h[?25l~@k 2,0-16%[?12l[?25h[?25l~@k package ctx;1,4Top[?12l[?25h[?25l~@k[?5h[?5l [?12l[?25h[?25l~@k[?5h[?5l [?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,4 [?12l[?25h[?25l~@k 4,1[?12l[?25h[?25l~@k 5,4[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8,0-1[?12l[?25h[?25l~@k 9,4 [?12l[?25h[?25l~@k 10,0-1[?12l[?25h[?25l1,4 [?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,4 [?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 20[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k  maxLat = -4;30,46%[?12l[?25h[?25l~@k  minLon = 0;31,413%[?12l[?25h[?25l~@k  maxLon = 176;32,420%[?12l[?25h[?25l~@k  }33,426%[?12l[?25h[?25l~@k  else if ("sw".equalsIgnoreCase(quad))34,433%[?12l[?25h[?25l~@k  {35,440%[?12l[?25h[?25l~@k  minLat = -88;36,446%[?12l[?25h[?25l~@k  maxLat = -4;37,453%[?12l[?25h[?25l~@k  minLon = -180;38,460%[?12l[?25h[?25l~@k  maxLon = -4;39,466%[?12l[?25h[?25l~@k  }40,473%[?12l[?25h[?25l~@k  else return;41,480%[?12l[?25h[?25l~@k  42,0-186%[?12l[?25h[?25l~@k  }43,493%[?12l[?25h[?25l~@k  }44,1Bot[?12l[?25h[?25l~@k[?5h[?5l [?12l[?25h[?5h[?5l[?5h[?5l[?5h[?5l[?5h[?5l[?25l~@k[?5h[?5l [?12l[?25h[?25l::[?12l[?25hx[?25l[?12l[?25h [?25l"quadlist.java" 44L, 869C written [?1l>[?12l[?25h[?1049lpnode05:~/gridxl/src/main/java/ctx> vi quadlist.java [?1049h[?1h=â–½ [?12;25h[?12l[?25h[?25l"quadlist.java" 44L, 869Cpackage ctx; public class quadlist { public static void main(String[] args) {if (args.length < 2) { System.out.println("Usage: quadlist z ne|nw|se|sw"); return; }int minLat, maxLat, minLon, maxLon;String quad = args[0];if ("ne".equalsIgnoreCase(quad)){minLat = 0;maxLat = 84;minLon = 0;maxLon = 176;}else if ("nw".equalsIgnoreCase(quad)){minLat = 0;maxLat = 84;minLon = -180;maxLon = -4;}else if ("se".equalsIgnoreCase(quad)){minLat = -88;1,1Top[?12l[?25h[?25l::[?12l[?25hx[?25l[?12l[?25h [?25l[?1l>[?12l[?25h[?1049lpnode05:~/gridxl/src/main/java/ctx> less Ti../guymac/Til TilePyramid.java TileTest.java pnode05:~/gridxl/src/main/java/ctx> less ../guymac/TilePyramid.java [?1049h[?1h= package guymac; import java.awt.Dimension; import loci.formats.*; public class TilePyramid { final int TILE_SIZE_PX = 256; final int RADIUS_M = 3396190; //6378137; private TileLevel[] levels; public class TileLevel { private int z; public TileLevel(int z) { this.z = z; } public int getZoom() { return z; } public int getSize() { return 1 << z; ../guymac/TilePyramid.java  } public double getScale() { return 2 * Math.PI * RADIUS_M / getSize(); } @Override public String toString() { return String.format("%d [%d x %d @ %.2f mpx]", z , getSize(), getSize(), getScale()/TILE_SIZE_PX); } } public TilePyramid(int width, int height) { this(new Dimension(width, height)); } public TilePyramid(Dimension dim) { // meters per pixel double res = 2 * Math.PI * RADIUS_M / TILE_SIZE_PX; double maxRes = 2 * Math.PI * RADIUS_M / dim.width; int maxZ = 0; do : M return 1 << z; M { M public int getSize() M M } M return z; M { M public int getZoom() M M } M this.z = z; M { M public TileLevel(int z) M M private int z; M { M public class TileLevel M M private TileLevel[] levels; M M final int RADIUS_M = 3396190; //6378137; M final int TILE_SIZE_PX = 256; M{ Mpublic class TilePyramid M Mimport loci.formats.*; Mimport java.awt.Dimension; M Mpackage guymac;  :  } public double getScale() { return 2 * Math.PI * RADIUS_M / getSize(); } @Override public String toString() { return String.format("%d [%d x %d @ %.2f mpx]", z , getSize(), getSize(), getScale()/TILE_SIZE_PX); } } public TilePyramid(int width, int height) { this(new Dimension(width, height)); } public TilePyramid(Dimension dim) { // meters per pixel double res = 2 * Math.PI * RADIUS_M / TILE_SIZE_PX; double maxRes = 2 * Math.PI * RADIUS_M / dim.width; int maxZ = 0; do : [?1l>[?1049lpnode05:~/gridxl/src/main/java/ctx> less ../guymac/TilePyramid.javavi quadlist [?1049h[?1h=â–½ [?12;25h[?12l[?25h[?25l"quadlist.java" 44L, 869Cpackage ctx; public class quadlist { public static void main(String[] args) {if (args.length < 2) { System.out.println("Usage: quadlist z ne|nw|se|sw"); return; }int minLat, maxLat, minLon, maxLon;String quad = args[0];if ("ne".equalsIgnoreCase(quad)){minLat = 0;maxLat = 84;minLon = 0;maxLon = 176;}else if ("nw".equalsIgnoreCase(quad)){minLat = 0;maxLat = 84;minLon = -180;maxLon = -4;}else if ("se".equalsIgnoreCase(quad)){minLat = -88;1,1Top[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,1 [?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25lo -- INSERT --3,1Top3,1Top[?12l[?25h[?25li2[?12l[?25h[?25lm3[?12l[?25h[?25lp4[?12l[?25h[?25lo5[?12l[?25h[?25lr6[?12l[?25h[?25l import7[?12l[?25h[?25l8[?12l[?25h[?25lg9[?12l[?25h[?25lu10[?12l[?25h[?25ly1[?12l[?25h[?25lm2[?12l[?25h[?25la3[?12l[?25h[?25lc4[?12l[?25h[?25l.5[?12l[?25h[?25lT6[?12l[?25h[?25li7[?12l[?25h[?25ll8[?12l[?25h[?25le9[?12l[?25h[?25lP20[?12l[?25h[?25ly1[?12l[?25h[?25lr2[?12l[?25h[?25la3[?12l[?25h[?25lm4[?12l[?25h[?25li5[?12l[?25h[?25ld6[?12l[?25h[?25l;7[?12l[?25h[?25l4,1Top[?12l[?25h[?25l^[[?12l[?25h[?25l 4,0-1Top[?12l[?25h[?25l~@k 5,1 [?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 10,0-1[?12l[?25h[?25l~@k 1,1 [?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,1 [?12l[?25h[?25ld[?12l[?25h[?25ld  {13,0-1Top[?12l[?25h[?25l~@k 2[?12l[?25h[?25lo -- INSERT --13,7Top13,7Top[?12l[?25h[?25li8[?12l[?25h[?25ln9[?12l[?25h[?25lint10[?12l[?25h[?25l1[?12l[?25h[?25lz2[?12l[?25h[?25l3[?12l[?25h[?25l=4[?12l[?25h[?25l5[?12l[?25h[?25lI6[?12l[?25h[?25ln7[?12l[?25h[?25lt8[?12l[?25h[?25le9[?12l[?25h[?25lg20[?12l[?25h[?25le1[?12l[?25h[?25lr2[?12l[?25h[?25l.3[?12l[?25h[?25lp4[?12l[?25h[?25la5[?12l[?25h[?25lr6[?12l[?25h[?25ls7[?12l[?25h[?25le8[?12l[?25h[?25lI9[?12l[?25h[?25ln30[?12l[?25h[?25lt1[?12l[?25h[?25l(2[?12l[?25h[?25la3[?12l[?25h[?25lr4[?12l[?25h[?25lg5[?12l[?25h[?25ls6[?12l[?25h[?25l[7[?12l[?25h[?25l08[?12l[?25h[?25l][]9[?12l[?25h[?25l)(args[])40[?12l[?25h[?25l;()1[?12l[?25h[?25l14,7Top[?12l[?25h[?25l15,7Top[?12l[?25h[?25lT8[?12l[?25h[?25li9[?12l[?25h[?25ll10[?12l[?25h[?25le1[?12l[?25h[?25lP2[?12l[?25h[?25ly3[?12l[?25h[?25lr4[?12l[?25h[?25la5[?12l[?25h[?25lm6[?12l[?25h[?25li7[?12l[?25h[?25ld8[?12l[?25h[?25l.9[?12l[?25h[?25lT20[?12l[?25h[?25li1[?12l[?25h[?25ll2[?12l[?25h[?25le3[?12l[?25h[?25lL4[?12l[?25h[?25le5[?12l[?25h[?25lv6[?12l[?25h[?25le7[?12l[?25h[?25ll8[?12l[?25h[?25l9[?12l[?25h[?25ll30[?12l[?25h[?25lv1[?12l[?25h[?25ll2[?12l[?25h[?25l3[?12l[?25h[?25l=4[?12l[?25h[?25l5[?12l[?25h[?25ln6[?12l[?25h[?25le7[?12l[?25h[?25lnew8[?12l[?25h[?25l9[?12l[?25h[?25lT40[?12l[?25h[?25li1[?12l[?25h[?25ll2[?12l[?25h[?25le3[?12l[?25h[?25lP4[?12l[?25h[?25ly5[?12l[?25h[?25lr6[?12l[?25h[?25la7[?12l[?25h[?25lm8[?12l[?25h[?25li9[?12l[?25h[?25ld50[?12l[?25h[?25l.1[?12l[?25h[?25lT2[?12l[?25h[?25li3[?12l[?25h[?25ll4[?12l[?25h[?25le5[?12l[?25h[?25lL6[?12l[?25h[?25le7[?12l[?25h[?25lv8[?12l[?25h[?25le9[?12l[?25h[?25ll60[?12l[?25h[?25l(1[?12l[?25h[?25lz2[?12l[?25h[?25l)(z)3[?12l[?25h[?25l;(z)4[?12l[?25h[?25l^[[?12l[?25h[?25l 15,63Top[?12l[?25h[?25l~@k 6,0-1[?12l[?25h[?25lo -- INSERT --17,7Top17,7Top[?12l[?25h[?25li8[?12l[?25h[?25ln9[?12l[?25h[?25lint10[?12l[?25h[?25l1[?12l[?25h[?25ln2[?12l[?25h[?25l3[?12l[?25h[?25l=4[?12l[?25h[?25l5[?12l[?25h[?25ll6[?12l[?25h[?25lv7[?12l[?25h[?25ll8[?12l[?25h[?25l.9[?12l[?25h[?25lg20[?12l[?25h[?25le1[?12l[?25h[?25lt2[?12l[?25h[?25lS3[?12l[?25h[?25li4[?12l[?25h[?25lz5[?12l[?25h[?25le6[?12l[?25h[?25l(7[?12l[?25h[?25l)()8[?12l[?25h[?25l;()9[?12l[?25h[?25l18,7Top[?12l[?25h[?25l^[[?12l[?25h[?25l 18,0-1Top[?12l[?25h[?25l~@k 7,7 [?12l[?25h[?25l~@k 6,0-1[?12l[?25h[?25l~@k 5,7 [?12l[?25h[?25l~@k 4,0-1[?12l[?25h[?25l~@k 3,7 [?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 1,7 [?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 10[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25lx dl at, maxLat, minLon, maxLon;[?12l[?25h[?25lx dl t, maxLat, minLon, maxLon;[?12l[?25h[?25lx dl , maxLat, minLon, maxLon;[?12l[?25h[?25li -- INSERT --11,14Top[?12l[?25h[?25lX, maxLat, minLon, maxLon;5[?12l[?25h[?25l^[^[[?12l[?25h[?25l 11,14Top[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 20[?12l[?25h[?25lx dl at, minLon, maxLon;[?12l[?25h[?25lx dl t, minLon, maxLon;[?12l[?25h[?25lx dl , minLon, maxLon;[?12l[?25h[?25li -- INSERT --11,20Top[?12l[?25h[?25lX, minLon, maxLon;1[?12l[?25h[?25l^[[?12l[?25h[?25l 11,20Top[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k 4[?12l[?25h[?25l~@k 5[?12l[?25h[?25l~@k 6[?12l[?25h[?25lx dl on, maxLon;[?12l[?25h[?25lx dl n, maxLon;[?12l[?25h[?25lx dl , maxLon;[?12l[?25h[?25li -- INSERT --11,26Top[?12l[?25h[?25lY, maxLon;7[?12l[?25h[?25l^[[?12l[?25h[?25l 11,26Top[?12l[?25h[?25l~@k 7[?12l[?25h[?25l~@k 8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k 30[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 2[?12l[?25h[?25lx dl on;[?12l[?25h[?25lx dl n;[?12l[?25h[?25lx dl ;[?12l[?25h[?25li -- INSERT --11,32Top[?12l[?25h[?25lY;3[?12l[?25h[?25l^[[?12l[?25h[?25l 11,32Top[?12l[?25h[?25l~@k 2,0-1[?12l[?25h[?25l~@k 3,32 [?12l[?25h[?25l~@k 4,0-1[?12l[?25h[?25l~@k 5,32 [?12l[?25h[?25l~@k 6,0-1[?12l[?25h[?25l7,28 [?12l[?25h[?25l~@k 8,0-1[?12l[?25h[?25l~@k (quad)9,32 [?12l[?25h[?25l~@k (quad){}20,7 [?12l[?25h[?25l~@k {}1,20[?12l[?25h[?25l~@k 2,21[?12l[?25h[?25l~@k 3,20[?12l[?25h[?25l~@k 4,22[?12l[?25h[?25l~@k 3,20[?12l[?25h[?25l~@k 2,21[?12l[?25h[?25l~@k 1,20[?12l[?25h[?25ld[?12l[?25h[?25ld  minLon = -180;21,10Top[?12l[?25h[?25ld[?12l[?25h[?25ld  maxLon = -4;21,10Top[?12l[?25h[?25ld[?12l[?25h[?25ld  }21,10Top[?12l[?25h[?25ld[?12l[?25h[?25ld  {}else if ("se".equalsIgnoreCase(quad))21,7Top[?12l[?25h[?25l~@k {}2[?12l[?25h[?25l~@k {}3[?12l[?25h[?25l~@k {}4[?12l[?25h[?25ld[?12l[?25h[?25ld  {24,10Top[?12l[?25h[?25ld[?12l[?25h[?25ld  minLat = -88;24,10Top[?12l[?25h[?25ld[?12l[?25h[?25ld  maxLat = -4;24,10Top[?12l[?25h[?25ld[?12l[?25h[?25ld  {}minLon = 0;24,7Top[?12l[?25h[?25l~@k {}5[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k 7[?12l[?25h[?25ld[?12l[?25h[?25ld max4;inLon = 0;axLon = 176;10[?12l[?25h[?25ld[?12l[?25h[?25ld minLon = 0;axLon = 176;}[?12l[?25h[?25ld[?12l[?25h[?25ld maxLon = 176;}else if ("sw".equalsIgnoreCase(quad))[?12l[?25h[?25ld[?12l[?25h[?25ld  {}{27,7Top[?12l[?25h[?25l~@k {}8[?12l[?25h[?25l~@k 9[?12l[?25h[?25l~@k  minLat = -88;30,711%[?12l[?25h[?25l~@k  maxLat = -4;31,722%[?12l[?25h[?25l~@k  minLon = -180;32,733%[?12l[?25h[?25l~@k  maxLon = -4;33,744%[?12l[?25h[?25l~@k  {}34,755%[?12l[?25h[?25l~@k {}3[?12l[?25h[?25l~@k 2[?12l[?25h[?25l~@k 1[?12l[?25h[?25l~@k 0[?12l[?25h[?25ld[?12l[?25h[?25ld  else return;30,1062%[?12l[?25h[?25ld[?12l[?25h[?25ld  30,1071%[?12l[?25h[?25ld[?12l[?25h[?25ld  }30,1083%[?12l[?25h[?25ld[?12l[?25h[?25ld  {}}30,7Bot[?12l[?25h[?25l~@k 29[?12l[?25h[?25l~@k {}8[?12l[?25h[?25l{}7[?12l[?25h[?25l~@k 6[?12l[?25h[?25l~@k {}5[?12l[?25h[?25l~@k {}4[?12l[?25h[?25l~@k 3[?12l[?25h[?25l~@k {}2[?12l[?25h[?25l~@k {}1[?12l[?25h[?25l~@k 0[?12l[?25h[?25l~@k {}19[?12l[?25h[?25l~@k 8,0-1[?12l[?25h[?25l::[?12l[?25hw[?25l[?12l[?25h [?25l"quadlist.java" 34L, 640C written18,0-1Bot18,0-1Bot[?12l[?25h[?25l::[?12l[?25hx[?25l[?12l[?25h [?25l[?1l>[?12l[?25h[?1049lpnode05:~/gridxl/src/main/java/ctx> cd ~/rgridxl/ pnode05:~/gridxl> ls pom.xml src target pnode05:~/gridxl> less pom.xml [?1049h[?1h= 4.0.0 guymac gridxl 1.0 gridxl UTF-8 1.8 1.8 info.picocli picocli 4.7.6