public class GWMapMain { public static void testOSMNode() { OSMNode n1, n2; n1 = new OSMNode(12345); n2 = new OSMNode(30.5423, 78.23423, 12345); assert(n1.equals(n2)); n1 = new OSMNode(12347); assert(!n1.equals(n2)); assert(n2.getLon() == 30.5423); assert(n2.getLat() == 78.23423); assert(!n2.isSignal()); n2.setAsSignal(); assert(n2.isSignal()); } public static void testOSMRoads() { OSMRoad r1, r2, r3; OSMNode[] ns1, ns2, ns3; ns1 = new OSMNode[4]; ns1[0] = new OSMNode(1); ns1[1] = new OSMNode(2); ns1[2] = new OSMNode(3); ns1[3] = new OSMNode(4); r1 = new OSMRoad("myway", ns1); ns3 = new OSMNode[1]; ns3[0] = new OSMNode(9); r3 = new OSMRoad("or", ns3); ns2 = new OSMNode[3]; ns2[0] = new OSMNode(5); ns2[1] = new OSMNode(6); ns2[2] = new OSMNode(3); r2 = new OSMRoad("highway", ns2); assert(r1.getNumNodes() == 4 && r2.getNumNodes() == 3); assert(r1.getName().equals("myway") && r2.getName().equals("highway")); assert(r1.getNode(2).equals(new OSMNode(3))); //assert(r1.containsNode(new OSMNode(4))); //assert(!r1.containsNode(new OSMNode(6))); assert(r1.intersects(r2).equals(new OSMNode(3))); assert(r1.intersects(r3) == null); } public static void testGWMap(String filename, long[] nodeIds, boolean[] trafficLights, String[] streetNames, int[] roadNodes, long[][] intersections, double[] roadLatitudes) { GWMap m = new GWMap(filename); for (int i = 0 ; i < m.numNodes() ; i++) { assert(m.getNode(i).getId() == nodeIds[i]); } for (int i = 0 ; i < m.numNodes() ; i++) { assert(m.getNode(i).isSignal() == trafficLights[i]); } for (int i = 0 ; i < m.numRoads() ; i++) { assert(m.getRoad(i).getName().equals(streetNames[i])); } for (int i = 0 ; i < m.numRoads() ; i++) { assert(m.getRoad(i).getNumNodes() == roadNodes[i]); } for (int i = 0 ; i < m.numRoads() ; i++) { for (int j = 0 ; j < m.numRoads() ; j++) { OSMNode n = m.getRoad(i).intersects(m.getRoad(j)); if (n == null) { assert(intersections[i][j] == 0); } else { assert(n.getId() == intersections[i][j]); } } } for (int i = 0 ; i < m.getRoad(0).getNumNodes() ; i++) { assert(m.getRoad(0).getNode(i).getLat() == roadLatitudes[i]); } } public static void testSmall() { long[] nodeIds = {49762264L, 49799834L, 641127585L, 804599379L, 291675382L, 2451171135L, 49777696L, 291675370L, 1443727088L, 49824719L, 49741717L, 49741715L, 49741712L, 49741711L, 3099885755L, 49741710L, 633923936L, 1240476067L, 49741709L, 1240476062L, 49717477L, 1381210497L, 49741695L, 1381307996L, 49777749L, 291675380L, 49777690L, 2383566163L}; boolean[] trafficLights = {true, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false}; String[] streetNames = {"22nd Street Northwest", "21st Street Northwest", "H Street Northwest"}; int[] roadNodes = {10, 14, 6}; long[][] intersections = { {641127585L, 0L, 49777696L}, {0L, 49741717L, 49741695L}, {49777696L, 49741695L, 49777749L} }; double[] roadLatitudes = {38.8965641, 38.8973557, 38.8983243, 38.8989461, 38.8992236, 38.8995675, 38.8995735, 38.9002459, 38.9006931, 38.9020773}; testGWMap("OSMTest.osm", nodeIds, trafficLights, streetNames, roadNodes, intersections, roadLatitudes); } public static void testLarge() { long[] nodeIds = {49762184L, 49762225L, 49770640L, 49777712L, 49777743L, 49777749L, 49777745L, 49793670L, 49793781L, 49793773L, 262542282L, 738189343L, 291675305L, 291675307L, 291675357L, 291675365L, 291675366L, 291675367L, 291675368L, 291675369L, 291675370L, 291675380L, 291675381L, 291675304L, 291675253L, 291675387L, 358958042L, 358959659L, 358961219L, 367140999L, 367142111L, 367143243L, 367143250L, 367143251L, 367143253L, 367143273L, 367143564L, 367143578L, 367143585L, 367143587L, 367143590L, 367143591L, 367143594L, 367143599L, 367143740L, 367144224L, 367144289L, 367144232L, 367144368L, 611395777L, 611395778L, 611395779L, 611395786L, 611395787L, 804597727L, 49762331L, 291675351L, 49799834L, 49762264L, 49762286L, 49824719L, 291675356L, 49762243L, 520057219L, 520058341L, 520063486L, 520069781L, 520077194L, 520079184L, 520079866L, 520081685L, 49762238L, 49777742L, 49777744L, 49777746L, 49777748L, 49741663L, 358957105L, 577435479L, 603190945L, 358960325L, 611392433L, 611392435L, 611392436L, 611392437L, 611392438L, 611392439L, 611392441L, 611392442L, 611392443L, 611395791L, 611395790L, 611395794L, 611395797L, 611395798L, 611395799L, 611395800L, 611395809L, 611395810L, 611395811L, 611395812L, 611395813L, 611502201L, 611502202L, 611502203L, 611502204L, 611502205L, 611502206L, 611502208L, 611502209L, 49741710L, 641116196L, 641127621L, 641127622L, 641127623L, 641127585L, 641127594L, 49762251L, 49777682L, 665444792L, 665444793L, 665444794L, 665444795L, 665444796L, 665444797L, 665444798L, 665444799L, 665444800L, 665444801L, 665444802L, 665444803L, 665444804L, 665444805L, 665444806L, 665444807L, 665444809L, 665444810L, 665444812L, 665444813L, 665444814L, 665444815L, 665444816L, 665444817L, 665444818L, 665444819L, 665444820L, 665444821L, 665444822L, 665444823L, 665444824L, 804598491L, 804598496L, 611395781L, 721037852L, 730823454L, 730823599L, 734127344L, 738078993L, 738079498L, 738079850L, 738080163L, 738080274L, 738081439L, 738081869L, 738082436L, 738091231L, 738091222L, 291675358L, 291675347L, 291675348L, 291675349L, 739528076L, 739528052L, 804597011L, 804597017L, 804597018L, 804597020L, 804597025L, 804597030L, 804597031L, 804597033L, 804597044L, 804597047L, 804597049L, 804597052L, 804597056L, 804597067L, 804597070L, 804597071L, 804597075L, 804597088L, 804597090L, 804597097L, 804597099L, 804597104L, 804597119L, 804597123L, 804597128L, 804597140L, 804597141L, 804597148L, 804597151L, 804597159L, 804597164L, 804597167L, 804597171L, 804597172L, 804597173L, 804597175L, 804597179L, 804597187L, 804597206L, 804597207L, 804597212L, 804597215L, 804597216L, 804597225L, 804597233L, 804597236L, 804597239L, 804597245L, 804597249L, 804597252L, 804597255L, 804597260L, 804597267L, 804597277L, 804597280L, 804597283L, 804597285L, 804597295L, 804597298L, 804597300L, 804597306L, 804597317L, 804597320L, 804597326L, 804597327L, 804597335L, 804597270L, 804597339L, 804597340L, 804597342L, 804597346L, 804597348L, 804597362L, 804597364L, 804597365L, 804597366L, 804597368L, 804597371L, 804597374L, 804597376L, 804597378L, 804597380L, 804597389L, 804597390L, 804597391L, 804597425L, 804597396L, 804597399L, 804597410L, 804597420L, 804597422L, 804597427L, 804597431L, 804597436L, 804597437L, 804597438L, 804597449L, 804597454L, 804597460L, 804597464L, 804597414L, 804597476L, 804597485L, 804597486L, 804597496L, 804597497L, 804597498L, 804597503L, 804597513L, 804597518L, 804597522L, 804597527L, 804597531L, 804597542L, 804597544L, 804597548L, 804597549L, 804597550L, 804597552L, 804597562L, 804597566L, 804597571L, 804597574L, 804597575L, 804597579L, 804597580L, 804597585L, 804597587L, 804597588L, 804597591L, 804597594L, 804597602L, 804597608L, 804597609L, 804597615L, 804597617L, 804597618L, 804597619L, 804597625L, 804597626L, 804597628L, 804597632L, 804597634L, 804597638L, 804597639L, 804597640L, 804597645L, 804597646L, 804597647L, 804597651L, 804597659L, 804597664L, 804597667L, 804597669L, 804597672L, 804597676L, 804597678L, 804597682L, 804597683L, 804597686L, 804597689L, 804597700L, 804597701L, 804597706L, 804597711L, 804597713L, 804597714L, 804597717L, 804597721L, 804597725L, 804597728L, 804597730L, 804597733L, 804597748L, 804597750L, 804597752L, 804597753L, 804597763L, 804597764L, 804597769L, 804597770L, 804597778L, 804597781L, 804597783L, 804597785L, 804597794L, 804597799L, 804597807L, 804597812L, 804597814L, 804597820L, 804597824L, 804597834L, 804597846L, 804597847L, 804597848L, 804597852L, 804597853L, 804597854L, 804597860L, 804597862L, 804597866L, 804597870L, 804597887L, 804597894L, 804597896L, 804597897L, 804597898L, 804597906L, 804597907L, 804597909L, 804597915L, 804597922L, 804597923L, 804597929L, 804597936L, 804597937L, 804597939L, 804597940L, 804597941L, 804597943L, 804597944L, 804597945L, 804597947L, 804597950L, 804597952L, 804597955L, 804597963L, 804597968L, 804597990L, 804597992L, 804597993L, 804597995L, 804597997L, 804598000L, 804598006L, 804598011L, 804598012L, 804598016L, 804598018L, 804598019L, 804598020L, 804598022L, 804598023L, 804598024L, 804598030L, 804598032L, 804598035L, 804598036L, 804598043L, 804598048L, 804598051L, 804598052L, 804598054L, 804598056L, 804598057L, 804598064L, 804598065L, 804598068L, 804598071L, 804598073L, 804598075L, 804598085L, 804598087L, 804598093L, 804598094L, 804598096L, 804598101L, 804598102L, 804598104L, 804598116L, 804598121L, 804598126L, 804598128L, 804598132L, 804598134L, 804598140L, 804598149L, 804598152L, 804598155L, 804598157L, 804598158L, 804598160L, 804598161L, 804598162L, 804598165L, 804598170L, 804598176L, 804598183L, 804598187L, 804598189L, 804598192L, 804598196L, 804598201L, 804598206L, 804598207L, 804598213L, 804598218L, 804598222L, 804598226L, 804598227L, 804598230L, 804598237L, 804598239L, 804598244L, 804598246L, 804598247L, 804598249L, 804598250L, 804598252L, 804598254L, 804598255L, 804598256L, 804598257L, 804598259L, 804598268L, 804598270L, 804598272L, 804598275L, 804598278L, 804598283L, 804598285L, 804598290L, 804598296L, 804598300L, 804598301L, 804598302L, 804598305L, 804598306L, 804598308L, 804598309L, 804598311L, 804598313L, 804598316L, 804598317L, 804598319L, 804598324L, 804598325L, 804598326L, 804598327L, 804598329L, 804598332L, 804598333L, 804598335L, 804598336L, 804598341L, 804598344L, 804598351L, 804598356L, 804598357L, 804598359L, 804598360L, 804598362L, 804598363L, 804598365L, 804598366L, 804598369L, 804598371L, 804598382L, 804598384L, 804598385L, 804598386L, 804598391L, 804598393L, 804598395L, 804598396L, 804598403L, 804598409L, 804598415L, 804598420L, 804598425L, 804598426L, 804598431L, 804598432L, 804598435L, 804598436L, 804598438L, 804598439L, 804598443L, 804598458L, 804598460L, 804598461L, 804598462L, 804598472L, 804598473L, 804598476L, 804598479L, 804598484L, 804598490L, 804598493L, 804598497L, 804598499L, 804598500L, 804598503L, 804598504L, 804598515L, 804598516L, 804598518L, 804598521L, 804598528L, 804598531L, 804598532L, 804598533L, 804598534L, 804598535L, 804598536L, 358958475L, 49793629L, 367141002L, 291675284L, 49777690L, 291675382L, 49786718L, 367141004L, 739528200L, 804597737L, 804597182L, 804597840L, 804597512L, 804597511L, 804597800L, 804597904L, 804598105L, 804598086L, 804597953L, 804597838L, 804597772L, 804598047L, 804597275L, 804598089L, 804597833L, 804598090L, 804598197L, 804598008L, 804598029L, 804597971L, 804597492L, 804597891L, 804597214L, 804597966L, 804598234L, 804598414L, 804597417L, 804597447L, 804597782L, 804597658L, 804597932L, 804597879L, 804597976L, 804597035L, 804597835L, 804598406L, 804597797L, 804597014L, 804597076L, 804597656L, 804597529L, 804597652L, 804597996L, 804598294L, 804597235L, 804597586L, 804597059L, 804597961L, 804597113L, 804598133L, 804597446L, 520056977L, 520068377L, 520071178L, 559199279L, 49717477L, 49741703L, 49741709L, 49741711L, 49741712L, 49741715L, 633923936L, 49741673L, 49777677L, 49793777L, 49770789L, 738189342L, 49777724L, 49787740L, 49741717L, 738080006L, 738079263L, 738080910L, 738079411L, 738080848L, 738079901L, 738079264L, 738081490L, 738082188L, 738079877L, 738081470L, 738081467L, 738082131L, 738079290L, 738078982L, 738082324L, 738082461L, 738082065L, 738080629L, 738082422L, 738081295L, 738081205L, 738081784L, 738080527L, 738081602L, 738081005L, 738079616L, 738082221L, 738080879L, 738079365L, 738080646L, 738081433L, 738082415L, 738081923L, 738081895L, 738082342L, 738081803L, 738079478L, 738081518L, 738079219L, 738079202L, 738080780L, 738079419L, 738081486L, 738079030L, 738082474L, 738081896L, 738081880L, 738081309L, 738081168L, 738082275L, 738081120L, 738080266L, 738080000L, 738079308L, 738080745L, 738081412L, 738080256L, 738079314L, 738082171L, 738079843L, 738079149L, 738079069L, 738080685L, 738080675L, 738082399L, 738081337L, 738082334L, 738081252L, 738081604L, 738079453L, 738079971L, 738082206L, 738080044L, 738080019L, 738079400L, 738079408L, 738080038L, 738080858L, 738079577L, 738079749L, 738079102L, 738081463L, 738078988L, 738081367L, 738080240L, 738081560L, 738080968L, 738080081L, 738080080L, 738080580L, 738079956L, 738081499L, 738079181L, 738080731L, 738079026L, 738082367L, 738081840L, 738081225L, 738081539L, 738079351L, 738080810L, 738081457L, 738081667L, 738080463L, 738080281L, 738081627L, 738079404L, 738080897L, 738079342L, 738082199L, 738079383L, 738080001L, 738079229L, 738082517L, 738082454L, 738082272L, 738081049L, 738081013L, 738080706L, 738079710L, 738079686L, 738082087L, 738081382L, 738081712L, 738080548L, 738080172L, 738079534L, 738079786L, 738080752L, 738079727L, 738079050L, 738079042L, 738081901L, 738081834L, 738081725L, 738080559L, 738082261L, 738080195L, 738079422L, 738081512L, 738080875L, 738079329L, 738079994L, 738079302L, 738082032L, 738082406L, 738081911L, 738081179L, 738080126L, 738079481L, 738080077L, 738079309L, 738081510L, 738080833L, 738079131L, 738081443L, 738082061L, 738082036L, 738079573L, 738081967L, 738081383L, 738082360L, 738081248L, 738080468L, 738081144L, 738081066L, 738080106L, 738079531L, 738079713L, 738082440L, 738082409L, 738081378L, 738082332L, 738082312L, 738079279L, 738079948L, 738081391L, 738079673L, 738081887L, 738082372L, 738082259L, 738080100L, 738080992L, 738079456L, 738081507L, 738079857L, 738079159L, 738079737L, 738079082L, 738082444L, 738082014L, 738082402L, 738082395L, 738082302L, 738080604L, 738080550L, 738080214L, 738080095L, 738079117L, 738080806L, 738082125L, 738081174L, 738082277L, 738081151L, 738081680L, 738081658L, 738079734L, 738080673L, 738082525L, 738082524L, 738082091L, 738081362L, 738081220L, 738081202L, 738079186L, 738081591L, 738079848L, 738082121L, 738081298L, 738081816L, 738081021L, 738079552L, 738079539L, 738079894L, 738082157L, 738082146L, 738079075L, 738081929L, 738081857L, 738081321L, 738081849L, 738081305L, 738081092L, 738080130L, 738079245L, 738079178L, 738082133L, 738081148L, 738081081L, 738081051L, 738082245L, 738081587L, 738079816L, 738079656L, 738079646L, 738081831L, 738081822L, 738081018L, 738080933L, 738080831L, 738079865L, 738079221L, 738080791L, 738079123L, 738079731L, 738080773L, 738079074L, 738082035L, 738082017L, 738079620L, 738081327L, 738081795L, 738080167L, 738082023L, 738082388L, 738082103L, 738082301L, 738081100L, 738082482L, 738082056L, 738082116L, 738082067L, 738081386L, 738081860L, 738082366L, 738081344L, 738080579L, 738080518L, 738082084L, 738082467L, 738081938L, 738081861L, 738081853L, 738081663L, 738081045L, 738079610L, 738080088L, 738081228L, 738081173L, 738082109L, 738080201L, 738081584L, 738081542L, 738081649L, 738082268L, 738080222L, 738081632L, 738080187L, 738079564L, 738080585L, 738079465L, 738080951L, 738081554L, 738080119L, 738079538L, 738080160L, 738080999L, 738082225L, 738081555L, 738079439L, 738080072L, 738080912L, 738082251L, 738079444L, 738079561L, 738082236L, 738079505L, 738080064L, 49745636L, 49764296L, 49793729L, 49793759L, 804597677L, 49777696L, 738079640L, 804597209L, 804597604L, 49825588L, 49793723L, 641127587L, 49741695L, 611395793L, 611395792L, 611395815L, 611395807L, 611395760L, 611395795L, 611395753L, 611395751L, 611395750L, 1427073368L, 804598741L, 804599020L, 804599339L, 2276094835L, 2276095993L, 1240476067L, 1613861067L, 1613861068L, 1613861064L, 1613861065L, 1613861066L, 1242692486L, 1242692487L, 1242692490L, 1242692491L, 806520906L, 806520981L, 806521028L, 806520879L, 1242692833L, 806521161L, 806520867L, 806520720L, 806520856L, 1242692834L, 804598538L, 804598539L, 804598540L, 804598541L, 804598543L, 804598545L, 804598546L, 804598549L, 804598551L, 804598555L, 804598557L, 804598562L, 804598569L, 804598576L, 804598599L, 804598602L, 804598610L, 804598616L, 804598619L, 804598620L, 804598634L, 804598635L, 804598641L, 804598645L, 804598647L, 804598648L, 804598650L, 804598651L, 804598654L, 804598655L, 804598656L, 804598657L, 804598658L, 804598662L, 804598666L, 804598667L, 804598668L, 804598671L, 804598673L, 804598675L, 804598683L, 804598687L, 804598688L, 804598692L, 804598696L, 804598702L, 804598704L, 804598706L, 804598708L, 804598709L, 804598712L, 804598719L, 804598720L, 804598722L, 804598723L, 804598728L, 804598729L, 804598731L, 804598732L, 804598737L, 804598740L, 804598743L, 804598744L, 804598750L, 804598751L, 804598755L, 804598757L, 804598759L, 804598761L, 804598762L, 804598768L, 804598773L, 804598780L, 804598763L, 804598791L, 804598792L, 804598795L, 804598797L, 804598802L, 804598805L, 804598809L, 804598812L, 804598815L, 804598818L, 804598820L, 804598821L, 804598825L, 804598826L, 804598832L, 804598833L, 804598838L, 804598853L, 804598857L, 804598864L, 804598867L, 804598869L, 804598870L, 804598872L, 804598873L, 804598875L, 804598877L, 804598879L, 804598880L, 804598885L, 804598899L, 804598905L, 804598908L, 804598909L, 804598915L, 804598918L, 804598943L, 804598946L, 804598951L, 804598959L, 804598960L, 804598961L, 804598966L, 804598967L, 804598969L, 804598970L, 804598977L, 804598917L, 804598984L, 804598991L, 804598992L, 804598999L, 804599018L, 804599026L, 804599028L, 804599032L, 804599033L, 804599035L, 804599037L, 804599040L, 804599043L, 804599046L, 804599057L, 804599060L, 804599062L, 804599063L, 804599064L, 804599066L, 804599070L, 804599074L, 804599076L, 804599086L, 804599091L, 804599096L, 804599097L, 804599099L, 804599102L, 804599104L, 804599106L, 804599108L, 804599112L, 804599117L, 804599119L, 804599127L, 804599130L, 804599136L, 804599139L, 804599145L, 804599146L, 804599147L, 804599153L, 804599155L, 804599156L, 804599160L, 804599161L, 804599162L, 804599165L, 804599166L, 804599176L, 804599177L, 804599179L, 804599188L, 804599189L, 804599190L, 804599195L, 804599199L, 804599201L, 804599203L, 804599206L, 804599221L, 804599226L, 804599233L, 804599236L, 804599239L, 804599240L, 804599242L, 804599244L, 804599252L, 804599254L, 804599255L, 804599257L, 804599260L, 804599261L, 804599262L, 804599263L, 804599267L, 804599279L, 804599283L, 804599287L, 804599291L, 804599292L, 804599294L, 804599297L, 804599299L, 804599306L, 804599310L, 804599314L, 804599326L, 804599330L, 804599333L, 804599348L, 804599350L, 804599354L, 804599355L, 804599359L, 804599361L, 804599363L, 804599377L, 804599379L, 804599380L, 804599383L, 804599385L, 804599387L, 804599388L, 804599389L, 804599390L, 804599397L, 804599399L, 804599400L, 804599401L, 804599405L, 804599406L, 804599407L, 806520531L, 806520540L, 806520483L, 806520551L, 806520607L, 806520597L, 806520632L, 806520620L, 806520685L, 806520756L, 806520791L, 806520746L, 806520757L, 806520708L, 806520709L, 806520745L, 806520699L, 806520768L, 806520779L, 806520818L, 806520855L, 806520843L, 806520780L, 806520832L, 806520932L, 806520907L, 806520931L, 806520968L, 806520919L, 806520992L, 806521070L, 806520982L, 806520993L, 806521006L, 806521045L, 806521059L, 806521071L, 806521104L, 806521126L, 806521139L, 806521140L, 806521171L, 806521115L, 806521193L, 806521206L, 812571744L, 812571758L, 812571760L, 812571761L, 812571763L, 812571764L, 812571766L, 812571769L, 940949939L, 804599124L, 804598810L, 804599014L, 804599158L, 804598664L, 804598847L, 804598906L, 804598963L, 804599325L, 804599346L, 804599212L, 804598890L, 804599209L, 804598968L, 804599266L, 804599100L, 804599042L, 804599008L, 804599092L, 804598771L, 804599329L, 804598903L, 804598600L, 804598727L, 804599220L, 804598596L, 804598878L, 804598593L, 804599054L, 804599015L, 804598927L, 1443727088L, 1322713583L, 1334061683L, 1381204541L, 1381210497L, 1240476062L, 1381212154L, 1381307996L, 1381307997L, 1381307998L, 1381307999L, 1595687266L, 1663009700L, 1663009724L, 1663009682L, 1663009748L, 1663009678L, 1663009692L, 1663009697L, 1663009702L, 1663009708L, 1663009711L, 1663009714L, 1663009716L, 1663009717L, 1663009719L, 1663009723L, 1663009726L, 1663009730L, 1663009731L, 1663009739L, 1663009741L, 1663009742L, 1663009744L, 1663009745L, 1663009694L, 1663009706L, 1917842981L, 1821021483L, 1821021488L, 1821021490L, 1821021494L, 1821021496L, 1821021498L, 1821021500L, 1821021502L, 1821021503L, 1821021504L, 1821021505L, 1821021506L, 1825446966L, 1825446967L, 1825446968L, 1825446964L, 1825446965L, 1844430184L, 2128394641L, 2383528798L, 2383528799L, 2383528800L, 2383528801L, 2383528802L, 2383528797L, 2383533129L, 2383533132L, 2383533134L, 2383533135L, 812571757L, 2383556078L, 2383566162L, 2383566163L, 2390751267L, 2390751269L, 2390751270L, 2390751271L, 2390751272L, 2390751273L, 2390751274L, 804599048L, 804598742L, 804599012L, 2405210964L, 2405210968L, 2405210971L, 2405210973L, 2405210975L, 2405210977L, 2405210979L, 2405210981L, 2405210983L, 2405210985L, 2405210987L, 1663009720L, 1663009734L, 1663009728L, 1663009746L, 1663009732L, 2451171135L, 2457598514L, 2457606215L, 2457606304L, 2457606329L, 2457606330L, 2457606331L, 2462383184L, 2136087776L, 2776290923L, 1381307995L, 2778688818L, 2778688821L, 2790623915L, 2790623926L, 2790623930L, 2790623936L, 2790623945L, 2790623949L, 2791548679L, 2791548660L, 2791548669L, 2914594703L, 2914594704L, 2914594705L, 2914594706L, 2914594707L, 2914594708L, 2996927314L, 2997990198L, 2998017219L, 2998021884L, 2999882658L, 2999902821L, 3000023676L, 2999912041L, 3000171775L, 3000447759L, 3001411144L, 3001411145L, 3001411146L, 3001411147L, 3007959508L, 3008009368L, 3008009369L, 3008009372L, 3008009373L, 3008009376L, 3008009377L, 3008009378L, 3008009379L, 3008009381L, 3008009382L, 3008009385L, 3008009386L, 3008009388L, 3008009389L, 3008009390L, 3008009392L, 3008009393L, 3008009395L, 3008009396L, 3008009397L, 3008009398L, 806520672L, 3013407783L, 2457600189L, 3020568539L, 1322713594L, 3099885755L, 3108428835L}; boolean[] trafficLights = {false, false, true, true, false, false, false, true, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, false, false, false, false, false, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; String[] streetNames = {"I Street Northwest", "G Street Northwest", "I Street Northwest", "22nd Street Northwest", "I Street Northwest", "23rd Street Northwest", "21st Street Northwest", "Pennsylvania Avenue Northwest", "H Street Northwest"}; int[] roadNodes = {3, 13, 5, 10, 29, 8, 23, 10, 19}; long[][] intersections = { {49741703L, 0L, 49741703L, 0L, 0L, 0L, 49741703L, 1381307998L, 0L}, {0L, 49762225L, 0L, 49762264L, 0L, 49762286L, 1381307996L, 0L, 0L}, {49741703L, 0L, 49741703L, 1443727088L, 0L, 49793670L, 49741703L, 0L, 0L}, {0L, 49762264L, 1443727088L, 641127585L, 0L, 0L, 0L, 49824719L, 49777696L}, {0L, 0L, 0L, 0L, 49793723L, 0L, 1381210497L, 1381210497L, 0L}, {0L, 49762286L, 49793670L, 0L, 0L, 641127594L, 0L, 0L, 49777712L}, {49741703L, 1381307996L, 49741703L, 0L, 1381210497L, 0L, 49741717L, 1381210497L, 49741695L}, {1381307998L, 0L, 0L, 49824719L, 1381210497L, 0L, 1381210497L, 1381212154L, 0L}, {0L, 0L, 0L, 49777696L, 0L, 49777712L, 49741695L, 0L, 49777749L} }; double[] roadLatitudes = {38.9006944, 38.9007013, 38.9007082}; testGWMap("SEASatGWU.osm", nodeIds, trafficLights, streetNames, roadNodes, intersections, roadLatitudes); } public static void main(String[] args) { testOSMNode(); testOSMRoads(); testSmall(); testLarge(); } }