NetorGenerator *lass
$ac/age$ac/age gia.neo!C.tests)ite.server@ gia.neo!C.tests)ite.server@ i$ort
i$ort ... $),ic
$),ic c,assc,ass NetworkGeneratorNetworkGenerator Q Q $rivate
$rivate dita,ea2er dita,ea2er $ointsa2er$ointsa2er@@ $rivate$rivate dita,ea2er dita,ea2er edgesa2eredgesa2er@@ $rivate
$rivate 5o),e 5o),e );;er);;er@@ $rivate$rivate intint edge3ointNo)nteredge3ointNo)nter@@ $),ic
$),ic NetworkGeneratorNetworkGeneratordita,ea2er $ointsa2er7 dita,ea2er edgesa2er Qdita,ea2er $ointsa2er7 dita,ea2er edgesa2er Q tis
tis$ointsa2er7 edgesa2er7$ointsa2er7 edgesa2er7 n),,n),,@@
$),ic
$),ic NetworkGeneratorNetworkGeneratordita,ea2er $ointsa2er7 dita,ea2er edgesa2er7 5o),e );;er Qdita,ea2er $ointsa2er7 dita,ea2er edgesa2er7 5o),e );;er Q tis
tis..$ointsa2er$ointsa2er = $ointsa2er@ = $ointsa2er@ tis
tis..edgesa2eredgesa2er = edgesa2er@ = edgesa2er@ tis
tis..);;er);;er = );;er@ = );;er@
$),ic
$),ic intint edge%ointCo&nteredge%ointCo&nter Q Q ret)rn
ret)rn edge3ointNo)nteredge3ointNo)nter@@
$),ic
$),ic voidvoid addaddS$atia,5ataaseAecord record QS$atia,5ataaseAecord record Q eoetr2
eoetr2 geoetr2 geoetr2 = = record.geteoetr2@record.geteoetr2@ i;
i; geoetr2 geoetr2 instanceo;instanceo; M),tiineString Q M),tiineString Q addM),tiineString
addM),tiineString geoetr27geoetr27 n),,n),,@@
e,see,se i;i; geoetr2 geoetr2 instanceo;instanceo; ineString Q ineString Q addineString
addineString geoetr27geoetr27 n),,n),,@@
e,see,se Q Q tro:
tro: ne:ne: D,,ega,Irg)entce$tion@ D,,ega,Irg)entce$tion@
$rotected
$rotected voidvoid addaddM),tiineString ,ine7 S$atia,5ataaseAecord record QM),tiineString ,ine7 S$atia,5ataaseAecord record Q ;or
;or intint i = 0@ i < ,ine.get)eoetries@ i Q i = 0@ i < ,ine.get)eoetries@ i Q addineString
addineString ,ine.geteoetr2i7 ,ine.geteoetr2i7 record@record@
$rotected
$rotected voidvoid addaddineString ,ine7 S$atia,5ataaseAecord edge QineString ,ine7 S$atia,5ataaseAecord edge Q i;
i; edge == edge == n),,n),, Q Q edge
edge == edgesa2eredgesa2er.add,ine@.add,ine@
edge.set3ro$ert2
edge.set3ro$ert2"distance""distance"7 distance,ine@7 distance,ine@ adddge3ointedge.geteoode7
adddge3ointedge.geteoode7 ,ine.getStart3oint@,ine.getStart3oint@ adddge3ointedge.geteoode7
adddge3ointedge.geteoode7 ,ine.getnd3oint@,ine.getnd3oint@
$rotected
$rotected voidvoid add'dge%ointadd'dge%ointode node7 eoetr2 edge3oint Qode node7 eoetr2 edge3oint Q Dterator<S$atia,5ataaseAecord>
Dterator<S$atia,5ataaseAecord> res),ts res),ts = = eo3i$e,ineeo3i$e,ine .startearesteigoratonSearc
.startearesteigoratonSearc$ointsa2er$ointsa2er7 edge3oint.getNoordinate77 edge3oint.getNoordinate7 );;er);;er.do),eKa,)e.do),eKa,)e .toS$atia,5ataaseAecordist.iterator@
.toS$atia,5ataaseAecordist.iterator@ i;
i; Hres),ts.aset Q Hres),ts.aset Q S$atia,5ataaseAecord
S$atia,5ataaseAecord $oint $oint == $ointsa2er$ointsa2er.addedge3oint@.addedge3oint@ node.createAe,ationsi$To$oint.ge
node.createAe,ationsi$To$oint.geteoode7 teoode7 S$atia,Ae,ationsi$T2$es.S$atia,Ae,ationsi$T2$es. TBOA+TBOA+@@ edge3ointNo)nter
edge3ointNo)nter@@
e,see,se Q Q :i,e
:i,e res),ts.aset Q res),ts.aset Q
node.createAe,ationsi$Tores),ts.ne
node.createAe,ationsi$Tores),ts.net.geteoode7 t.geteoode7 Ae,ationsi$T2$es.Ae,ationsi$T2$es. TBOA+TBOA+@@ $rivate
$rivate do),edo),e distancedistanceineString ,ine QineString ,ine Q do),e
do),e ,engt = 0.0@ ,engt = 0.0@ ;or
;or intint i = 0@ i < ,ine.get)3oints - 1@ i Q i = 0@ i < ,ine.get)3oints - 1@ i Q ,engt
,engt = = ,engt ,engt distance,ine.get3ointi7 distance,ine.get3ointi7 ,ine.get3ointi ,ine.get3ointi 1@1@
ret)rn
ret)rn ,engt@ ,engt@
$rivate
$rivate do),edo),e distancedistance;ina,;ina, 3oint $oint17 3oint $oint17 ;ina,;ina, 3oint $oint# Q 3oint $oint# Q 5e;a),t,,i$soid
5e;a),t,,i$soid BS8! BS8! = = 5e;a),t,,i$soid.5e;a),t,,i$soid. BS8!BS8!@@ ret)rn
ret)rn BS8!.ortodroic5istance BS8!.ortodroic5istance
$oint1.getNoordinate.
$oint1.getNoordinate. 7 $oint1.getNoordinate.7 $oint1.getNoordinate.2277 44,onI7 ,atI44,onI7 ,atI
$oint#.getNoordinate.
$oint#.getNoordinate. 7 $oint#.getNoordinate.7 $oint#.getNoordinate.22@@ 44,onE7 ,atE44,onE7 ,atE
-- create net:or/ to$o,og2 ;ro OSM data -- create net:or/ to$o,og2 ;ro OSM data -- c,ean )$ eisting ta,es
-- c,ean )$ eisting ta,es 5AO3
5AO3 TIETIE DFDF ZDSTSZDSTS net:or/net:or/ NISNI5NISNI5@@ 5AO3
5AO3 TIETIE DFDF ZDSTSZDSTS verticest$verticest$ NISNI5NISNI5@@ NAIT
NAIT TIETIE net:or/net:or/gidgid seria,seria,77 OSMidOSMid DTADTA77 naenae KIAN9IAKIAN9IA77 tegeotegeo OMTAROMTAR77 so)rceso)rce DTADTA77 targettarget DTADTA77 ,engt
,engt FOITFOIT@@ NAIT
NAIT OAOA A3INA3IN FUNTDOFUNTDO createnet:or/createnet:or/ ATUASATUAS tettet ISIS JJJJ
5NIA
5NIA
streetAecord
streetAecord recordrecord@@ :a2Aecord
:a2Aecord recordrecord@@ $ointNo)nt
$ointNo)nt integerinteger@@ $ointDnde
$ointDnde integerinteger@@ geoFragent
geoFragent recordrecord@@ ED
ED -- start te transaction-- start te transaction FOA
FOA streetAecordstreetAecord DD SNTSNT :a2:a277 OSMidOSMid77 naenae FAOMFAOM $,anetos,ine$,anetos,ine
B9A
B9A ig:a2ig:a2 DSDS OTOT UU I5I5 ig:a2ig:a2 OTOT DD 'c2c,e:a2''c2c,e:a2'77';oot:a2'';oot:a2'77'$edestrain''$edestrain'77'service''service' OO3OO3
SNT
SNT FAOMFAOM $,anetos:a2s$,anetos:a2s
B9A
B9A idid = = streetAecordstreetAecord.os.osidid DTODTO :a2Aecord:a2Aecord@@ FOA
FOA $ointDnde$ointDnde DD arra2,o:erarra2,o:er:a2Aecord:a2Aecord..nodesnodes7 1..7 1..arra2)$$erarra2)$$er:a2Aecord:a2Aecord..nodesnodes71-171-1 OO3OO3
SNT
SNT sta/e,inesta/e,inest$ointnst$ointnstreetAecordstreetAecord..:a2:a277 $ointDnde$ointDnde7 st$ointn7 st$ointnstreetAecordstreetAecord..:a2:a277 $ointDnde$ointDnde11 ISIS :a2:a2
DTO
DTO geoFragentgeoFragent@@ DSAT
DSAT DTODTO net:or/net:or/OSMidOSMid77 naenae7 tegeo7 tegeo77 so)rceso)rce77 targettarget77 ,engt,engt KIUS
KIUSstreetAecordstreetAecord.os.osidid77 streetAecord
streetAecord..naenae77 geoFragent
geoFragent..:a2:a277 :a2Aecord
:a2Aecord..nodesV$ointDndeWnodesV$ointDndeW77 :a2Aecord
:a2Aecord..nodesV$ointDnde1WnodesV$ointDnde1W77 st,engt
st,engtSTeogFroB+ESTeogFroB+EgeoFragentgeoFragent..:a2:a277 ;a,se ;a,se@@ 5 5 OO3OO3@@ 5 5 OO3OO3@@ ret)rn
ret)rn '5one''5one'@@ 5
5@@ JJ
JJ IUIIUI '$,$gsL,''$,$gsL,'@@ SNT
SNT FAOMFAOM createnet:or/createnet:or/@@ -- c,ean )$ n),, va,)es
-- c,ean )$ n),, va,)es 5T
5T FAOMFAOM net:or/net:or/ B9AB9A T9T9 DSDS UU@@ -- ;i,, in to$o,og2 ta,e's geoetr2 -- ;i,, in to$o,og2 ta,e's geoetr2 co,)nco,)n DSAT
DSAT DTODTO geoetr2co,)nsgeoetr2co,)ns;ta,ecata,og;ta,ecata,og77 ;ta,escea;ta,escea77 ;ta,enae;ta,enae77 ;geoetr2co,)n;geoetr2co,)n77 coorddiensioncoorddiension77 srid
srid77 "t2$e""t2$e" SNT
SNT ''''77 '$),ic''$),ic'77 'net:or/''net:or/'77 'tegeo''tegeo'77 STNoord5iSTNoord5itegeotegeo77 STSAD5STSAD5tegeotegeo77 eoetr2T2$eeoetr2T2$etegeotegeo FAOM
FAOM net:or/net:or/ DMDTDMDT 1@ 1@ SNT
Appendi/ ?
Appendi/ ?
NetworksNetworks
Medembli
Medembli
Amsterdam
Amsterdam
Appendi/ ?
Appendi/ ?
Source code- .9=s paSource code- .9=s part rt
The co!plee so'rce co"e oThe co!plee so'rce co"e o he assess!en syse!s is aaila5le onlinehe assess!en syse!s is aaila5le online Neo;
Neo; h:p>>gih'5.co!>5ar5aas>gi!a6neo;essh:p>>gih'5.co!>5ar5aas>gi!a6neo;ess +osGIS
+osGIS h:p>>gih'5.co!>5ar5aas>gi!a6posgisessh:p>>gih'5.co!>5ar5aas>gi!a6posgisess