Om een hoop vragen te kunnen beantwoorden; ik ga uit van een auto die vanuit Maastricht vertrekt en naar een node toe wil rijden. Dus als je niet op Schiermonnikoog kunt komen want er is geen boot verbinding die de juiste access tags heeft, dan wordt dat gebied blauw. Stel dat je op Schiermonnikoog zou beginnen, dan is weer heel Nederland blauw omdat je niet van het eiland kan afkomen. Ik heb wat magie gebruikt om tot een veel kleinere lijst met punten te komen, dan je normaal zou verwachten. En ja SanderH ik behoud alles waar geen expliciete “je mag hier niet komen” op staat. Onderstaande is mijn interpretatie van OSM tags, mocht iemand zeggen “je mist nog wat!” roep het maar 
Onderstaande bijgewerkt op basis van feedback.
if (strcmp(key, "highway") == 0) {
attributes |= 1;
if (strcmp(val, "motorway") == 0 || strcmp(val, "motorway_link") == 0) {
attributes |= 2;
maxspeed = 130;
} else if (strcmp(val, "trunk") == 0 || strcmp(val, "trunk_link") == 0) {
maxspeed = 100;
} else if (strcmp(val, "primary") == 0 || strcmp(val, "primary_link") == 0 ||
strcmp(val, "secondary") == 0 || strcmp(val, "secondary_link") == 0 ||
strcmp(val, "tertiary") == 0 || strcmp(val, "tertiary_link") == 0 ) {
maxspeed = 80;
} else if (strcmp(val, "unclassified") == 0) {
maxspeed = 60;
} else if (strcmp(val, "residential") == 0) {
maxspeed = 30;
} else if (strcmp(val, "living_street") == 0 || strcmp(val, "track") == 0 ||
strcmp(val, "service") == 0) {
maxspeed = 15;
} else if (strcmp(val, "pedestrian") == 0 || strcmp(val, "footway") == 0 ||
strcmp(val, "platform") == 0 || strcmp(val, "bus_guideway") == 0 ||
strcmp(val, "bridleway") == 0 || strcmp(val, "steps") == 0 ||
strcmp(val, "cycleway") == 0 || strcmp(val, "path") == 0) {
maxspeed = 15;
attributes |= 4;
} else if (strcmp(val, "raceway") == 0 || strcmp(val, "construction") == 0 || strcmp(val, "proposed") == 0) {
ignore = true;
}
} else
if (strcmp(key, "junction") == 0) {
attributes |= 1;
if (strcmp(val, "roundabout") == 0) {
attributes |= 2;
}
} else
if (strcmp(key, "motorroad") == 0) {
if (strcmp(val, "yes") == 0) {
attributes |= 2;
maxspeed = 100;
}
} else
if (strcmp(key, "maxspeed") == 0) {
if (val[0] == 'n') { /* none, no */
maxspeed_value = 130;
} else {
maxspeed_value = (uint8_t) atoi(val); /* TODO: protect */
}
maxspeed_tag = true;
} else
if (strcmp(key, "oneway") == 0) {
oneway_tag = true;
if (strcmp(val, "-1") == 0) {
attributes |= 4;
oneway_enabled = true;
} else if (strcmp(val, "yes") == 0) {
oneway_enabled = true;
} else if (strcmp(val, "no") == 0) {
oneway_enabled = false;
} else {
oneway_tag = false;
}
} else
/* Ferries */
if (strcmp(key, "ferry") == 0) {
attributes |= 1;
maxspeed = 20;
} else
if (strcmp(key, "route") == 0) {
if (strcmp(val, "ferry") == 0) {
attributes |= 1;
maxspeed = 20;
}
} else
/* Access restrictions, now modelled for car */
if (strcmp(key, "motor_vehicle") == 0 || strcmp(key, "motorcar") == 0) {
if (strcmp(val, "no") == 0) {
ignore = true;
} else if (strcmp(val, "yes") == 0) {
attributes |= 2;
}
} else
if (strcmp(key, "access") == 0) {
if (strcmp(val, "no") == 0 || strcmp(val, "private") == 0) {
ignore = true;
}
}