@Override public void complete() { // if smart exclusions enabled and tile is not empty, send them to // writer if (!StatsHelper.isTileEmpty(stats) && XplaneOptionsHelper.getOptions().isSmartExclusions()) { String exclusions = exclusionsHelper.exportExclusions(); writer.complete(exclusions); } else { writer.complete(null); } if (!StatsHelper.isTileEmpty(stats)) { Osm2xpLogger.info( "Tile " + (int) currentTile.x + "/" + (int) currentTile.y + " stats : " + stats.getBuildingsNumber() + " buildings, " + stats.getForestsNumber() + " forests, " + stats.getStreetlightsNumber() + " street lights, " + stats.getObjectsNumber() + " objects. (generation took " + MiscUtils.getTimeDiff(startTime, new Date()) + ")"); // stats try { if (XplaneOptionsHelper.getOptions().isGenerateXmlStats() || XplaneOptionsHelper.getOptions().isGeneratePdfStats()) { StatsHelper.getStatsList().add(stats); } if (XplaneOptionsHelper.getOptions().isGenerateXmlStats()) { StatsHelper.saveStats(folderPath, currentTile, stats); } if (XplaneOptionsHelper.getOptions().isGeneratePdfStats()) { StatsHelper.generatePdfReport(folderPath, stats); } } catch (Osm2xpBusinessException e) { Osm2xpLogger.error("Error saving stats file for tile " + currentTile, e); } } else if (!GuiOptionsHelper.getOptions().isSinglePass()) { Osm2xpLogger.info( "Tile " + (int) currentTile.x + "/" + (int) currentTile.y + " is empty, no dsf generated"); } }
/** * Compute the height for this polygon and osm tags. * * @return Integer the height. */ private Integer computeBuildingHeight(OsmPolygon polygon) { Integer result = null; Integer osmHeight = polygon.getHeight(); if (osmHeight != null) { result = osmHeight; } else { if (polygon.getArea() * 10000000 < 0.2) { result = XplaneOptionsHelper.getOptions().getResidentialMin(); } else { if (polygon.getArea() * 10000000 > ASSERTION_RESIDENTIAL_MAX_AREA) result = MiscUtils.getRandomSize( XplaneOptionsHelper.getOptions().getBuildingMin(), XplaneOptionsHelper.getOptions().getBuildingMax()); else if (polygon.getArea() * 10000000 < ASSERTION_RESIDENTIAL_MAX_AREA) result = MiscUtils.getRandomSize( XplaneOptionsHelper.getOptions().getResidentialMin(), XplaneOptionsHelper.getOptions().getResidentialMax()); } } return result; }