2005 versie van de CD-Foongids (4)

Nog iets gevonden… 8)

Deze keer maar niet in vbscript want dan werd formatteren zo lastig:

[code]van: hoofdkantoor Telefoongids bv
naar: hoofdkantoor Gouden Gids bv

1 depart 0 0
2 S106 enterleft 49 11 Centrum
3 Cornelis Lelylaan S106 right 188 42 Centrum
4 Osdorp[S106] A10/E22 enter 357 58 Den Haag
5 De nieuwe meer A10 junction 1470 113 Utrecht
6 Amstel A2/E35 junction 7148 299 Utrecht
7 A2 A2/E35 straight 8882 356 Utrecht
8 Ouderkerk aan de Amstel[1] leave 9610 380
9 Burgemeester Stramanweg N522 left 10161 408 Amsterdam Zuidoost
10 Burgemeester Stramanweg straightimport 10544 425
11 Burgemeester Stramanweg bearright 10795 437
12 Holterbergweg S111 right 11112 453 Holendrecht
13 Holterbergweg left 11547 493
14 Hoogoorddreef uturn 12375 613
15 arrived 12467 626

1 Vertrek in noordelijke richting
2 Rijd na 50 m links de oprit van de S106 op richting Centrum
3 Ga na 140 m rechtsaf op de Cornelis Lelylaan (S106) richting Centrum
4 Rijd na 175 m de oprit van de A10 op (Osdorp[afslag S106]) richting Den Haag
5 Volg na 1.1 km op het knooppunt De nieuwe meer de A10 richting Utrecht
6 Volg na 5.7 km op het knooppunt Amstel de A2, E35 richting Utrecht
7 Ga rechtdoor de A2 (E35) op (na 1.7 km) richting Utrecht
8 Neem na 0.7 km afslag Ouderkerk aan de Amstel[afslag 1]
9 Ga na 0.6 km linksaf de Burgemeester Stramanweg (N522) op richting Amsterdam Zuidoost
10 Ga na 400 m rechtdoor de Burgemeester Stramanweg op
11 Houd na 250 m rechts aan op de Burgemeester Stramanweg
12 Ga na 300 m rechtsaf de Holterbergweg (S111) op richting Holendrecht
13 Ga na 450 m linksaf de Hoogoorddreef op
14 Keer om op de Hoogoorddreef
15 U bent gearriveerd (Hoogoorddreef amsterdam zuidoost,1102)

kilometer: 12,47
reisduur: 10:54
[/code]

[code]'referentie "TravelmanagerComponents Library " => …\system32\TravelmanagerComponents.dll

Sub Main()

With New Configuration
.DataPath = "D:\Install\program files\De Telefoongids\CD-foongids\Data\gbd"
End With

Debug.Print "van: hoofdkantoor Telefoongids bv"
Debug.Print "naar: hoofdkantoor Gouden Gids bv"
Debug.Print

'http://tools.locatienet.com
’street=delflandlaan%2015&postcode=1062EA => 5235690484077
’street=hoekenrode%201&postcode=1102BR => 5231198494943

With New Geo
s = .WGS84ToCoord(52.3569, 4.84077)
d = .WGS84ToCoord(52.31198, 4.94943)
End With

With New RoutePlanner
.StartPoint = s
.Destination = d

.PlanMode = pm_Fastest
.Plan

row = String$(2, " ")
straat = String$(28, " ")
wijk = String$(9, " ")
ga = String$(15, " ")
km = String$(7, " ")
Min = String$(5, " ")
richting = String$(21, " ")

For i = 0 To .NumRouteDescriptionLines - 1
  RSet row = i + 1
  LSet straat = .RouteDescriptionRow(i)(0)
  LSet wijk = .RouteDescriptionRow(i)(1)
  LSet ga = .RouteDescriptionRow(i)(5)
  RSet km = .RouteDescriptionRow(i)(6)
  RSet Min = .RouteDescriptionRow(i)(7)
  LSet richting = .RouteDescriptionRow(i)(8)
  Debug.Print row; "  "; straat; wijk; ga; km; Min; "  "; richting
Next

Debug.Print     'maar even zo anders gaan al die kolommen omlopen

For i = 0 To .NumRouteDescriptionLines - 1
  RSet row = i + 1
  Debug.Print row; "  "; .RouteDescriptionRow(i)(9)
Next

Debug.Print
Debug.Print "kilometer:   " & Round(.TravelDistance / 1000, 2)
Debug.Print "reisduur:  " & .TravelTime \ 60 & ":" & .TravelTime Mod 60

End With

With New MapProvider
’.GetMap hWnd 'uitzoeken
End With

End Sub[/code]

Map/Routeplanner CD-foongids 2005

Heb nu ook iets van een kaartje-tonen werkend:

      [img]http://img188.echo.cx/img188/4060/route9mf.jpg[/img]
Nog steeds in Visual Basic maar iedereen met een 'superieure' ontwikkelomgeving weet natuurlijk heel goed hoe die dit zelf kan aanpassen:
Private Declare Sub FloodFill Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, _
ByVal Y As Long, ByVal crColor As Long)

Private Sub Form_Load()
  
  Me.ScaleMode = vbPixels
  Me.AutoRedraw = True
  
  With New Configuration
    .DataPath = "D:\Install\program files\De Telefoongids\CD-foongids\Data\gbd\"
    .CachePath = "C:\Program Files\De Telefoongids\CD-foongids\Data\gbd\Buff\"
  End With
                                                    
  With New MapProvider
    .WorldRect = Array(81328 - 250, 455114 - 250, 257809 + 250, 473594 + 250)
    .MapRect = Array(0, 0, Form1.ScaleWidth, Form1.ScaleHeight)
    .ZoomLevel = 1 't/m 5
    .ScaleMode = sm_ZoomLevel
    .KeepAspectRatio = kar_PreserveCutOut
    .GetMap Form1.hDC
  End With

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  
  With Me
    .ScaleMode = vbPixels
    .ForeColor = vbBlack
    Circle (X, Y), 5
    .FillStyle = vbFSSolid
    .FillColor = RGB(128, 0, 255)
    FloodFill .hDC, X, Y, .ForeColor
  End With
  
End Sub

De coördinaten zijn deze keer van een voorbeeld
http://forums.virtualconspiracy.com/foondump/viewtopic.php?p=418#418]elders
op het Forum, met steeds 250 meter extra om ze goed in het kaartje te krijgen. Die andere routine van helemaal bovenaan komt voor deze twee postcodes op een afstand van 202 kilometer en een tijd van 120 minuten net als destijds even [u]verder[/u in dat voorbeeld.

En zo zit het waarschijnlijk ook in elkaar op de CD, de coördinaten bij de betrokken postcodes komen net als vroeger uit een andere tabel, althans ik zie niet hoe je ze direct kan invoeren. Ook het tekenen moet vanuit de applicatie zelf gedaan worden aan de hand van de lijst coördinaten voor de tussenstops die je van die TravelManager-ding terugkrijgt. Niet zo’n enorme opgave waarschijnlijk: met die tweede procedure kon ik al een stip op het kaartje plaatsen (schuin onder de Hofvijver).

Al met al: een stukje pittiger dan
http://www.comcol.nl/detail/50492.htm][u]MS MapPoint[/u
waar ook de data bijgeleverd wordt, waarin je met VBA vergelijkbare dingen kan doen en waarvan ik even niet weet wie z’n kaart nou minder lelijk is.

Map/Routeplanner CD-foongids 2005

Begrijpen doe je het niet. Ja, wel dat het werkt, er staat een licentiebestand in dat ‘data’-pad; als je die wist dan gaat het spul prompt in een “DEMO”-mode. [code]
00000000 54 50 46 30 0A 54 63 4C 69 63 65 6E 73 65 65 00 TPF0.TcLicensee.
00000010 04 4E 61 6D 65 06 07 4D 61 6E 66 72 65 64 07 43 .Name…Manfred.C
00000020 6F 6D 70 61 6E 79 06 05 41 6E 64 65 73 07 43 6F ompany…Andes.Co
00000030 6D 6D 65 6E 74 06 0C 74 65 73 74 20 6C 69 63 65 mment…test lice
00000040 6E 73 65 0C 43 72 65 61 74 69 6F 6E 44 61 74 65 nse.CreationDate
[…]

[/code]
Wie zet er nou zo’n licentiebestand open en bloot op een CD die gewoon in de winkel ligt. De bijna identieke
http://www.falk.nl/digitale%20postcodekaart/postcodekaart.html]Digitale Postcodekaart
zit wat dat betreft beter in elkaar, daar worden al die functies die nu dan toch op straat liggen door (vroegere TPG-dochter) Andes meegecompileerd in het programma zelf. Maar als je als ontwikkelaar van zo’n halffabrikaat gebruik wil maken dan kan dat, rond ‘componenten’ is in de loop van de tijd een hele [u]industrie[/u ontstaan die ook het licenseren van die producten heeft moeten oplossen.

Zou de CD-foongids 2005/2006 onder tijdsdruk tot stand gekomen zijn?
In dat eerder besproken
http://forums.virtualconspiracy.com/foondump/viewtopic.php?p=823#823][u]details.xsl[/u
staan wel wat ‘comments’ met een datum zoals deze hieronder:

  |==============|=============================================================|
  * Description:  This inserts the address and house number according to the
  *               various rules
  * Author:       FA
  * Last changed: 02-04-2003
  * updated     : 16-04-2004 PVK
  |==============|=============================================================|

Wekt toch de indruk dat ze er vroeg bij waren. Ik bedoel maar, Foondump was toen nog nietsvermoedend bij versie 4.01 of zo?

Wie voelde dat wel aan z’n water?

[quote=“zie je maar dat een graad in
http://forums.virtualconspiracy.com/foondump/viewtopic.php?p=590#590][u]Technische bedrijfskunde[/u
wel iets uitmaakt, alkema_jm”]Omdat huidige cdfoon met een tender is gebouwd ga ik er vanuit dat het over een jaar of zo mogelijk weer in andere handen zal gaan.

http://forums.virtualconspiracy.com/foondump/viewtopic.php?p=480#480][u][size=9]Foondump.nl Forum Topic d.d. 24-10-2004[/size][/u
[/quote]

Interessante stukjes. Maar is het nu ook op deze manier mogelijk om telefoonnummers etc te extracten?

Ah, jij wil bellen.
Het korte antwoord op je vraag is nee en het iets langere antwoord
http://forums.virtualconspiracy.com/foondump/viewtopic.php?p=840#840][b]misschien[/b
.
Met de kaarthulpmiddelen waar het hier over gaat zal het niet lukken.

Hoi Weerman,

Jij roept functies zoals WGS84ToCoord, RouteDescriptionRow, etc in TravelmanagerComponents.dll aan.

Weet jij ook hoe deze functie aanroepen gedefineerd zijn?

Misschien weet jij of iemand anders welke functies allemaal in TravelmanagerComponents.dll zitten.

De vriendelijke groet Jan Marco

Het is geen ‘retail’-component, dus geen vrij rondzwevende documentatie van dat ding. Met de ‘object browser’ van
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxurfobjectbrowsers.asp][u]Visual Studio[/u
of VB kom je er met wat vallen en opstaan wel achter.

De drie belangrijkste functiegroepen waren:

[code]Members of ‘Geo’

  • CoordToTuple
  • CoordToWGS84
  • DecodeWGS84LatLong
  • EncodeWGS84LatLong
  • FindChains
  • GetChainInfo
  • RectToVariant
  • TupleToCoord
  • VariantToRect
  • WGS84ToCoord
  • ZoomLevelToMPix[/code]

[code]Members of ‘MapProvider’
= DataSources
= KeepAspectRatio
= MapRect
= MaxZoomLevel
= MinZoomLevel
= ScaleMode
= WorldBoundaries
= WorldRect
= ZoomLevel

  • GetMap[/code]

[code]Members of ‘RoutePlanner’
= ChainId
= Coord
= DataSources
= Destination
= Language
= NumChainIds
= NumCoords
= NumRouteDescriptionLines
= NumTmcCodes
= PartialDistance
= PartialTime
= PlanMode
= RouteDescriptionCoord
= RouteDescriptionLine
= RouteDescriptionRow
= RouteDescriptionStyle
= StartPoint
= TmcCode
= TravelDistance
= TravelTime

  • GetNearestRoad
  • Plan[/code]
    ’=’ zijn ‘properties’, bijvoorbeeld:
    Property [b]Coord[/b](Index As Long)
      [i]read-only Member of TravelmanagerComponents.RoutePlanner Coordinates on the route.[/i]
'*' beschrijven 'methods':
    Function [b]GetNearestRoad[/b](vCoord)
      [i]Member of TravelmanagerComponents.RoutePlanner Gets the coordinate of the nearest road.[/i]

Hoi Weerman,

Het is geen ‘retail’-component, dus geen vrij rondzwevende documentatie van dat ding.

Erg bedankt voor jouw teruggekoppelde infomatie --)

In C laad je m.i. een dll in op de volgende manier:

[quote]typedef int (*tNumRouteDescriptionLines) (void );

static tNumRouteDescriptionLines pNumRouteDescriptionLines;

int InitTravelManager_DLL(void)
{
static HMODULE m_htravelmanager;

m_htravelmanager= LoadLibrary(_T(“TravelmanagerComponents.dll”));

if (!m_htravelmanager)
{
m_htravelmanager=0;

  return 0;
}

pNumRouteDescriptionLines = (tNumRouteDescriptionLines) GetProcAddress(m_htravelmanager, “NumRouteDescriptionLines”);

if (!pNumRouteDescriptionLines)
{
m_htravelmanager=0;
return 0;
}
return 1;
}[/quote]

Het is belangrijk om de variabele en aantal bytes van de variabelen van de functies te weten te komen.

Ik kan met de object browser de functies wel vinden echter de variabelen en groottes van de variabelen heb ik nog niet.

Weerman, Heb jij al meer headings van de opgesomde TravelmanagerComponents.dll procedures/functies uitgevogeld?

De vriendelijke groet Jan Marco