Skip to content

Commit

Permalink
*** empty log message ***
Browse files Browse the repository at this point in the history
  • Loading branch information
drolbr committed Apr 2, 2009
1 parent 86ff47d commit 90b2070
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 16 deletions.
11 changes: 6 additions & 5 deletions file_types.h
Expand Up @@ -1479,7 +1479,7 @@ struct Indexed_Ordered_Id_To_Many_Writer : Indexed_Ordered_Id_To_Many_Base< Stor


bool to_buf(uint8* buf, const Iterator& it) bool to_buf(uint8* buf, const Iterator& it)
{ {
Storage::head_to_buf(buf, it->head); Storage::head_to_buf(&(buf[0]), it->head);
uint pos(Storage::size_of_Head() + 1); uint pos(Storage::size_of_Head() + 1);
if (remaining_size == 0) if (remaining_size == 0)
{ {
Expand All @@ -1492,7 +1492,7 @@ struct Indexed_Ordered_Id_To_Many_Writer : Indexed_Ordered_Id_To_Many_Base< Stor
uint i(0); uint i(0);
while (i < upper_limit) while (i < upper_limit)
{ {
Storage::data_to_buf(buf, *dit); Storage::data_to_buf(&(buf[pos]), *dit);
++dit; ++dit;
pos += Storage::size_of_Data(); pos += Storage::size_of_Data();
++i; ++i;
Expand All @@ -1503,6 +1503,7 @@ struct Indexed_Ordered_Id_To_Many_Writer : Indexed_Ordered_Id_To_Many_Base< Stor
return (remaining_size == 0); return (remaining_size == 0);
} }


typename Storage::Id id_of_buf(uint8* buf) const { return Storage::id_of_buf(buf); }
void index_to_buf(uint8* buf, const typename Storage::Index& i) const { Storage::index_to_buf(buf, i); } void index_to_buf(uint8* buf, const typename Storage::Index& i) const { Storage::index_to_buf(buf, i); }


private: private:
Expand Down Expand Up @@ -1627,7 +1628,7 @@ struct Indexed_Ordered_Id_To_Many_Updater : Indexed_Ordered_Id_To_Many_Base< Sto
if (it.current_it == 1) if (it.current_it == 1)
return true; return true;


Storage::head_to_buf(buf, (*it).head); Storage::head_to_buf(&(buf[0]), (*it).head);
uint pos(Storage::size_of_Head() + 1); uint pos(Storage::size_of_Head() + 1);
if (remaining_size == 0) if (remaining_size == 0)
{ {
Expand All @@ -1640,7 +1641,7 @@ struct Indexed_Ordered_Id_To_Many_Updater : Indexed_Ordered_Id_To_Many_Base< Sto
uint i(0); uint i(0);
while (i < upper_limit) while (i < upper_limit)
{ {
Storage::data_to_buf(buf, *dit); Storage::data_to_buf(&(buf[pos]), *dit);
++dit; ++dit;
pos += Storage::size_of_Data(); pos += Storage::size_of_Data();
++i; ++i;
Expand All @@ -1655,7 +1656,7 @@ struct Indexed_Ordered_Id_To_Many_Updater : Indexed_Ordered_Id_To_Many_Base< Sto
uint8 keep_this_elem(uint8* buf) uint8 keep_this_elem(uint8* buf)
{ {
typename Storage::Head h; typename Storage::Head h;
Storage::head_from_buf(buf, h); Storage::head_from_buf(&(buf[0]), h);
typename Container::const_iterator it(to_delete_.find(typename Storage::Basetype(h))); typename Container::const_iterator it(to_delete_.find(typename Storage::Basetype(h)));
if (it == to_delete_.end()) if (it == to_delete_.end())
return 1; return 1;
Expand Down
32 changes: 22 additions & 10 deletions import_osm_nw.c
Expand Up @@ -446,8 +446,11 @@ void postprocess_ways_4()
close(ways_dat_fd); close(ways_dat_fd);
} }


void localise_and_flush_ways(vector< Way_ >& ways) void localise_and_flush_ways
(vector< Way_ >& ways,
Indexed_Ordered_Id_To_Many_Writer< Way_Storage, vector< Way_ > >& writer)
{ {
//query used nodes
set< Node > used_nodes; set< Node > used_nodes;
set< int32 > used_nodes_ids; set< int32 > used_nodes_ids;
for (vector< Way_ >::const_iterator it(ways.begin()); it != ways.end(); ++it) for (vector< Way_ >::const_iterator it(ways.begin()); it != ways.end(); ++it)
Expand All @@ -460,6 +463,7 @@ void localise_and_flush_ways(vector< Way_ >& ways)
select_by_id< Node_Id_Node_By_Id_Reader >(nodes_reader); select_by_id< Node_Id_Node_By_Id_Reader >(nodes_reader);
used_nodes_ids.clear(); used_nodes_ids.clear();


//calculate for each ways its index
for (vector< Way_ >::iterator it(ways.begin()); it != ways.end(); ++it) for (vector< Way_ >::iterator it(ways.begin()); it != ways.end(); ++it)
{ {
Way_::Index bitmask(0), position(0); Way_::Index bitmask(0), position(0);
Expand All @@ -479,19 +483,17 @@ void localise_and_flush_ways(vector< Way_ >& ways)
bitmask |= (position ^ ll_idx(node_it->lat, node_it->lon)); bitmask |= (position ^ ll_idx(node_it->lat, node_it->lon));
} }


//TEMP
cout<<bitmask<<'\t'<<hex<<position<<'\n';

while (bitmask) while (bitmask)
{ {
bitmask = bitmask>>8; bitmask = bitmask>>8;
position = (position>>8) | 0xff000000; position = (position>>8) | 0xff000000;
} }
(*it).head.first = position; (*it).head.first = position;

//TEMP
cout<<dec<<(*it).head.second<<'\t'<<hex<<(*it).head.first<<'\n';
} }

//write ways to file
sort(ways.begin(), ways.end());
flush_data(writer, ways.begin(), ways.end());
} }


//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
Expand Down Expand Up @@ -522,6 +524,7 @@ uint32* block_of_id;


vector< Way_ > ways_; vector< Way_ > ways_;
Way_ current_way(0, 0); Way_ current_way(0, 0);
Indexed_Ordered_Id_To_Many_Writer< Way_Storage, vector< Way_ > > ways_writer(ways_);


void start(const char *el, const char **attr) void start(const char *el, const char **attr)
{ {
Expand Down Expand Up @@ -670,14 +673,17 @@ void end(const char *el)
} }
else if (!strcmp(el, "way")) else if (!strcmp(el, "way"))
{ {
//TEMP
cout<<current_way.data.size()<<'\t'<<current_way.head.second<<'\n';

ways_.push_back(current_way); ways_.push_back(current_way);
current_way.data.clear(); current_way.data.clear();


if (structure_count > 65536) if (structure_count > 32*1024*1024)
{ {
localise_and_flush_ways(ways_); localise_and_flush_ways(ways_, ways_writer);
ways_.clear(); ways_.clear();
exit(0); structure_count = 0;
} }


/* if (way_buf_pos < MAXWAYNODES) /* if (way_buf_pos < MAXWAYNODES)
Expand Down Expand Up @@ -742,6 +748,12 @@ int main(int argc, char *argv[])
{ {
//reading the main document //reading the main document
parse(stdin, start, end); parse(stdin, start, end);

//TEMP
localise_and_flush_ways(ways_, ways_writer);
ways_.clear();
make_block_index(ways_writer);
make_id_index(ways_writer);
} }
catch(File_Error e) catch(File_Error e)
{ {
Expand Down
2 changes: 1 addition & 1 deletion konzept_vereinfachte_db.txt
Expand Up @@ -95,4 +95,4 @@ count_with_idx
zu den Wegen: zu den Wegen:
- füge die Wege einschließlich Knoten in eine Map< Way_ > ein - füge die Wege einschließlich Knoten in eine Map< Way_ > ein
- erzeuge daraus die Node-Anfrage - erzeuge daraus die Node-Anfrage
- leite aus dem Ergebnis die richtigen Ids für die Ways ab - leite aus dem Ergebnis die richtigen Indexe für die Ways ab

0 comments on commit 90b2070

Please sign in to comment.