/***************************************
- $Header: /home/amb/routino/src/RCS/visualiser.c,v 1.7 2009/07/09 18:34:38 amb Exp $
+ $Header: /home/amb/routino/src/RCS/visualiser.c,v 1.10 2010/07/26 18:17:20 amb Exp $
Extract data from Routino.
Part of the Routino routing software.
******************/ /******************
- This file Copyright 2008,2009 Andrew M. Bishop
+ This file Copyright 2008-2010 Andrew M. Bishop
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
int count=0,difference=0;
segment=FirstSegment(OSMSegments,OSMNodes,node);
- firstway=LookupWay(OSMWays,segment->way);
+ firstway=LookupWay(OSMWays,segment->way,1);
do
{
- Way *way=LookupWay(OSMWays,segment->way);
+ Way *way=LookupWay(OSMWays,segment->way,2);
if(IsNormalSegment(segment))
count++;
{
if(IsNormalSegment(segment) && count<16)
{
- ways [count]=LookupWay(OSMWays,segment->way);
+ ways [count]=LookupWay(OSMWays,segment->way,1);
segments[count]=segment;
switch(limit_type)
static void find_all_nodes(Nodes *nodes,callback_t callback)
{
- int32_t latminbin=latlong_to_bin(radians_to_latlong(LatMin))-nodes->latzero;
- int32_t latmaxbin=latlong_to_bin(radians_to_latlong(LatMax))-nodes->latzero;
- int32_t lonminbin=latlong_to_bin(radians_to_latlong(LonMin))-nodes->lonzero;
- int32_t lonmaxbin=latlong_to_bin(radians_to_latlong(LonMax))-nodes->lonzero;
+ int32_t latminbin=latlong_to_bin(radians_to_latlong(LatMin))-nodes->file.latzero;
+ int32_t latmaxbin=latlong_to_bin(radians_to_latlong(LatMax))-nodes->file.latzero;
+ int32_t lonminbin=latlong_to_bin(radians_to_latlong(LonMin))-nodes->file.lonzero;
+ int32_t lonmaxbin=latlong_to_bin(radians_to_latlong(LonMax))-nodes->file.lonzero;
int latb,lonb,llbin;
- index_t node;
+ index_t i,index1,index2;
/* Loop through all of the nodes. */
for(latb=latminbin;latb<=latmaxbin;latb++)
for(lonb=lonminbin;lonb<=lonmaxbin;lonb++)
{
- llbin=lonb*nodes->latbins+latb;
+ llbin=lonb*nodes->file.latbins+latb;
- if(llbin<0 || llbin>(nodes->latbins*nodes->lonbins))
+ if(llbin<0 || llbin>(nodes->file.latbins*nodes->file.lonbins))
continue;
- for(node=nodes->offsets[llbin];node<nodes->offsets[llbin+1];node++)
+ index1=LookupNodeOffset(nodes,llbin);
+ index2=LookupNodeOffset(nodes,llbin+1);
+
+ for(i=index1;i<index2;i++)
{
- double lat=latlong_to_radians(bin_to_latlong(nodes->latzero+latb)+off_to_latlong(nodes->nodes[node].latoffset));
- double lon=latlong_to_radians(bin_to_latlong(nodes->lonzero+lonb)+off_to_latlong(nodes->nodes[node].lonoffset));
+ Node *node=LookupNode(nodes,i,1);
+
+ double lat=latlong_to_radians(bin_to_latlong(nodes->file.latzero+latb)+off_to_latlong(node->latoffset));
+ double lon=latlong_to_radians(bin_to_latlong(nodes->file.lonzero+lonb)+off_to_latlong(node->lonoffset));
if(lat>LatMin && lat<LatMax && lon>LonMin && lon<LonMax)
- (*callback)(node,lat,lon);
+ (*callback)(i,lat,lon);
}
}
}