private void setupData() throws IOException {
        final ArrayList<NodeData> nodes = new ArrayList<>();
        final ArrayList<EdgeData> edges = new ArrayList<>();
        final ArrayList<Road> roads = new ArrayList<>();
        String dir = "./data/";
        KrakLoader kl = new KrakLoader() {
            @Override
            public void processNode(NodeData nd) {
                nodes.add(nd);
            }

            @Override
            public void processEdge(EdgeData ed) {
                edges.add(ed);
            }
        };
        kl.load(dir + "kdv_node_unload.txt", dir + "kdv_unload.txt");
        xmax = kl.xmax - kl.xmin;
        ymax = (-kl.ymin)+kl.ymax;
        for (NodeData n : nodes) {
            n.recalc(kl.ymax, kl.xmin);
        }
        for (EdgeData e : edges) {
            Road rd = new Road(e, nodes.get(e.FNODE - 1), nodes.get(e.TNODE - 1));
            roads.add(rd);
        }
        
        qt = new Quadtree(0, new Rectangle2D.Double(0, 0, xmax, ymax));
        int i = 0;
        for (Road r : roads) {
            qt.insert(r);
        }
    }