/** * @param pOsmPrimitive * @return */ public static BuildingPart parseBuildingPartAttributes(OsmPrimitive pOsmPrimitive) { BuildingPart bp = new BuildingPart(); bp.setMaxHeight(BuildingAttributeParser.parseMaxHeight(pOsmPrimitive)); bp.setMinHeight(BuildingAttributeParser.parseMinHeight(pOsmPrimitive)); bp.setMaxLevel(BuildingAttributeParser.parseMaxLevel(pOsmPrimitive)); bp.setRoofLevels(BuildingAttributeParser.parseRoofLevels(pOsmPrimitive)); bp.setMinLevel(BuildingAttributeParser.parseMinLevel(pOsmPrimitive)); bp.setFacadeMaterialType(BuildingAttributeParser.parseFacadeMaterialName(pOsmPrimitive)); bp.setFacadeColor(BuildingAttributeParser.parseFacadeColor(pOsmPrimitive)); bp.setFloorMaterialType(BuildingAttributeParser.parseFloorMaterialName(pOsmPrimitive)); bp.setFloorColor(BuildingAttributeParser.parseFloorColor(pOsmPrimitive)); bp.setRoofMaterialType(BuildingAttributeParser.parseRoofMaterialName(pOsmPrimitive)); bp.setRoofColor(BuildingAttributeParser.parseRoofColor(pOsmPrimitive)); bp.setContext(pOsmPrimitive.getPrimitiveId()); return bp; }
/** * Parse maximal number of levels. * * @param osmPrimitive osm primitive * @return maximal number of levels */ public static Integer parseMaxLevel(OsmPrimitive osmPrimitive) { Integer level = roundToInteger(ModelUtil.getNumberAttribute(osmPrimitive, OsmAttributeKeys.BUILDING_MAX_LEVEL.getKey(), null)); if (level == null) { level = roundToInteger(ModelUtil.getNumberAttribute(osmPrimitive, OsmAttributeKeys.BUILDING_LEVELS.getKey(), null)); } if (level == null) { level = roundToInteger(ModelUtil.getNumberAttribute(osmPrimitive, OsmAttributeKeys.BUILDING_LEVELS_ABOVEGROUND.getKey(), null)); } if (level != null) { Integer roofLevels = BuildingAttributeParser.parseRoofLevels(osmPrimitive); if (roofLevels != null) { level += roofLevels; } } return level; }
private static WallPart parseWallPart(ReversableWay rw, Perspective pPerspective) { Way way = rw.getWay(); WallPart wp = new WallPart(); List<WallNode> wnList = new ArrayList<WallNode>(); if (!rw.isReversed()) { for (int i = 0; i < way.getNodesCount(); i++) { WallNode wn = parseWallNode(way.getNode(i), pPerspective); wnList.add(wn); } } else { for (int i = way.getNodesCount() - 1; i >= 0; i--) { WallNode wn = parseWallNode(way.getNode(i), pPerspective); wnList.add(wn); } } wp.setNodes(wnList); wp.setBuildingElements(parseBuildingAttributeWallElement(way)); // String parseFacadeName = // BuildingAttributeParser.parseFacadeMaterialName(w); // wp.setFacadeTextureData(BuildingAttributeParser.parseFacadeTexture(parseFacadeName, // this.textureLibraryService)); // wp.setColor(BuildingAttributeParser.parseFacadeColor(w)); wp.setFacadeMaterialType(BuildingAttributeParser.parseFacadeMaterialName(way)); wp.setFacadeColor(BuildingAttributeParser.parseFacadeColor(way)); wp.setRoofMaterialType(BuildingAttributeParser.parseRoofMaterialName(way)); wp.setRoofColor(BuildingAttributeParser.parseRoofColor(way)); return wp; }
private static List<NodeBuildingPart> parseBuildingPart(Node node, Perspective pPerspective) { SphereNodeBuildingPart bp = new SphereNodeBuildingPart(); bp.setPoint(pPerspective.calcPoint(node)); bp.setHeight(ModelUtil.getHeight(node, 0d)); bp.setRadius(ModelUtil.parseHeight(node.get("radius"), 1d)); bp.setFacadeMaterialType(BuildingAttributeParser.parseFacadeMaterialName(node)); bp.setFacadeColor(BuildingAttributeParser.parseFacadeColor(node)); return Arrays.asList((NodeBuildingPart) bp); }