laneWidth = road.getLanes().getLaneSection().get(0).getLeft().getLane().get(0).getWidth().get(0).getA();
}
final RoadMapping roadMapping;
if (road.getPlanView().getGeometry().size() == 1) {
Geometry geometry = road.getPlanView().getGeometry().get(0);
if (geometry.isSetLine()) {
roadMapping = RoadMappingLine.create(roadLaneCount, geometry, laneWidth);
} else if (geometry.isSetArc()) {
roadMapping = RoadMappingArc.create(roadLaneCount, geometry, laneWidth);
} else if (geometry.isSetPoly3()) {
throw new IllegalArgumentException("POLY3 geometry not yet supported (in road: " + road + " )");
} else if (geometry.isSetSpiral()) {
throw new IllegalArgumentException("SPIRAL geometry not yet supported (in road: " + road + " )");
} else {
throw new IllegalArgumentException("Unknown geometry for road: " + road);
}
} else {
roadMapping = new RoadMappingPoly(roadLaneCount, laneWidth);
final RoadMappingPoly roadMappingPoly = (RoadMappingPoly) roadMapping;
for (Geometry geometry : road.getPlanView().getGeometry()) {
if (geometry.isSetLine()) {
roadMappingPoly.addLine(geometry);
} else if (geometry.isSetArc()) {
roadMappingPoly.addArc(geometry);
} else if (geometry.isSetPoly3()) {
throw new IllegalArgumentException("POLY3 geometry not yet supported (in road: " + road + " )");
} else if (geometry.isSetSpiral()) {
throw new IllegalArgumentException("SPIRAL geometry not yet supported (in road: " + road + " )");
} else {
throw new IllegalArgumentException("Unknown geometry for road: " + road);
}
}