public static void main(String[] args) { if ((args.length < 1) || (((args.length - 1) % 2) != 0)) { usage(); ShapeFileIndexer idx = new ShapeFileIndexer(); idx.setIdxType(args[++i]); } else if (args[i].equals("-M")) { idx.setMax(Integer.parseInt(args[++i])); } else if (args[i].equals("-m")) { idx.setMin(Integer.parseInt(args[++i])); } else if (args[i].equals("-s")) { idx.setSplit(Short.parseShort(args[++i])); } else if (args[i].equals("-b")) { idx.setByteOrder(args[++i]); } else { if (!args[i].toLowerCase().endsWith(".shp")) { idx.setShapeFileName(args[i]); int cnt = idx.index(true, new Lock()); System.out.println(); System.out.print(cnt + " features indexed "); } catch (Exception e) { e.printStackTrace(); usage(); System.exit(1);
private void printStats(QuadTree tree) throws StoreException { Map<Integer, Integer> stats = new HashMap<Integer, Integer>(); gatherStats(tree.getRoot(), stats); List<Integer> nums = new ArrayList<Integer>(stats.keySet()); Collections.sort(nums); LOGGER.log(Level.FINE, "Index statistics"); for (Integer num : nums) { LOGGER.log(Level.FINE, num + " -> " + stats.get(num)); } }
public static void main(String[] args) throws IOException { if ((args.length < 1) || (((args.length - 1) % 2) != 0)) { usage(); ShapeFileIndexer idx = new ShapeFileIndexer(); idx.interactive = true; idx.setMax(Integer.parseInt(args[++i])); } else if (args[i].equals("-s")) { idx.setLeafSize(Integer.parseInt(args[++i])); } else if (args[i].equals("-b")) { idx.setByteOrder(args[++i]); } else { if (!args[i].toLowerCase().endsWith(".shp")) { idx.setShapeFileName(new ShpFiles(args[i])); System.out.print("Indexing "); int cnt = idx.index(true, new NullProgressListener()); System.out.println(); System.out.print(cnt + " features indexed "); } catch (Exception e) { e.printStackTrace(); usage(); System.exit(1);
LOGGER.fine("Creating spatial index for " + shpURL.getPath()); ShapeFileIndexer indexer = new ShapeFileIndexer(); indexer.setIdxType(ShapeFileIndexer.QUADTREE); indexer.setShapeFileName(shpURL.getPath()); indexer.setMax(maxDepth); indexer.index(false, readWriteLock); } catch (MalformedURLException e) { throw new TreeException(e);
/** * Builds the QuadTree index. Usually not necessary since reading features * will index when required * @throws TreeException */ public void buildQuadTree() throws TreeException { if (isLocal()) { LOGGER.fine("Creating spatial index for " + shpFiles.get(SHP)); ShapeFileIndexer indexer = new ShapeFileIndexer(); indexer.setShapeFileName(shpFiles); try { indexer.index(false, new NullProgressListener()); } catch (MalformedURLException e) { throw new TreeException(e); } catch (LockTimeoutException e) { throw new TreeException(e); } catch (Exception e) { if (e instanceof TreeException) { throw (TreeException) e; } else { throw new TreeException(e); } } } }
cnt = this.buildRTree(reader, treeFile, verbose); } else if (this.idxType.equals(QUADTREE)) { cnt = this.buildQuadTree(reader, treeFile, verbose); if (!finalFile.delete()) { try{ copyFile(treeFile, finalFile); copied=true; }catch (IOException ie){
LOGGER.fine("Optimizing the tree (this might take some time)"); optimizeTree(tree, tree.getRoot(), 0, reader, shpIndex); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("Tree optimized"); printStats(tree);
cnt = this.buildQuadTree(reader, treeFile, verbose); } finally { if (reader != null)
optimizeTree(tree, node.getSubNode(i), level + 1, reader, index);
public static void main(String[] args) throws IOException { if ((args.length < 1) || (((args.length - 1) % 2) != 0)) { usage(); ShapeFileIndexer idx = new ShapeFileIndexer(); idx.interactive = true; idx.setMax(Integer.parseInt(args[++i])); } else if (args[i].equals("-s")) { idx.setLeafSize(Integer.parseInt(args[++i])); } else if (args[i].equals("-b")) { idx.setByteOrder(args[++i]); } else { if (!args[i].toLowerCase().endsWith(".shp")) { idx.setShapeFileName(new ShpFiles(args[i])); System.out.print("Indexing "); int cnt = idx.index(true, new NullProgressListener()); System.out.println(); System.out.print(cnt + " features indexed "); } catch (Exception e) { e.printStackTrace(); usage(); System.exit(1);
ShapeFileIndexer indexer = new ShapeFileIndexer(); indexer.setIdxType(ShapeFileIndexer.RTREE); indexer.setShapeFileName(shpURL.getPath()); indexer.index(false, readWriteLock); } catch (MalformedURLException e) { throw new TreeException(e);
/** * Builds the QuadTree index. Usually not necessary since reading features * will index when required * @throws TreeException */ public void buildQuadTree() throws TreeException { if (isLocal()) { LOGGER.fine("Creating spatial index for " + shpFiles.get(SHP)); ShapeFileIndexer indexer = new ShapeFileIndexer(); indexer.setShapeFileName(shpFiles); try { indexer.index(false, new NullProgressListener()); } catch (MalformedURLException e) { throw new TreeException(e); } catch (LockTimeoutException e) { throw new TreeException(e); } catch (Exception e) { if (e instanceof TreeException) { throw (TreeException) e; } else { throw new TreeException(e); } } } }
LOGGER.fine("Optimizing the tree (this might take some time)"); optimizeTree(tree, tree.getRoot(), 0, reader, shpIndex); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("Tree optimized"); printStats(tree);
cnt = this.buildQuadTree(reader, treeFile, verbose); } finally { if (reader != null)
optimizeTree(tree, node.getSubNode(i), level + 1, reader, index);
private void printStats(QuadTree tree) throws StoreException { Map<Integer, Integer> stats = new HashMap<Integer, Integer>(); gatherStats(tree.getRoot(), stats); List<Integer> nums = new ArrayList<Integer>(stats.keySet()); Collections.sort(nums); LOGGER.log(Level.FINE, "Index statistics"); for (Integer num : nums) { LOGGER.log(Level.FINE, num + " -> " + stats.get(num)); } }
void gatherStats(Node node, Map<Integer, Integer> stats) throws StoreException { int num = node.getNumShapeIds(); Integer count = stats.get(num); if(count == null) { stats.put(num, 1); } else { stats.put(num, count + 1); } for (int i = 0; i < node.getNumSubNodes(); i++) { gatherStats(node.getSubNode(i), stats); } }
void gatherStats(Node node, Map<Integer, Integer> stats) throws StoreException { int num = node.getNumShapeIds(); Integer count = stats.get(num); if(count == null) { stats.put(num, 1); } else { stats.put(num, count + 1); } for (int i = 0; i < node.getNumSubNodes(); i++) { gatherStats(node.getSubNode(i), stats); } }