fix: 修正 Cesium 巡航车道中心对齐
This commit is contained in:
@@ -6,8 +6,14 @@ const fs = require("fs");
|
||||
const os = require("os");
|
||||
const path = require("path");
|
||||
const { normalizeAreaConfig } = require("./lib/area-config");
|
||||
const { stageManifestStatus } = require("./lib/area-diagnostics");
|
||||
const { digestGltf } = require("./glb-digest");
|
||||
const { evaluateGlbBudget, BUDGETS } = require("./lib/stage-manifest");
|
||||
const { evaluateGlbBudget, BUDGETS, fileRecord, writeStageManifest } = require("./lib/stage-manifest");
|
||||
|
||||
const qgisBuildSource = fs.readFileSync(path.join(__dirname, "build-osm2streets-qgis.js"), "utf8");
|
||||
assert.match(qgisBuildSource, /QgsFieldConstraints\.Constraint\.ConstraintNotNull/);
|
||||
assert.match(qgisBuildSource, /QgsFieldConstraints\.ConstraintNotNull/);
|
||||
assert.doesNotMatch(qgisBuildSource, /setFieldConstraint\(index, 1\)/);
|
||||
|
||||
const gltf = {
|
||||
nodes: [
|
||||
@@ -61,6 +67,63 @@ assert.equal(
|
||||
normalizeAreaConfig({ ...base, budget: { nodes: 1200, reason: "Dense campus vegetation" } }).budget.glbNodes,
|
||||
1200,
|
||||
);
|
||||
|
||||
const configPath = path.join(tempDir, "area.json");
|
||||
fs.writeFileSync(configPath, `${JSON.stringify(base)}\n`);
|
||||
const area = normalizeAreaConfig(base);
|
||||
fs.mkdirSync(area.outputs.geojsonDir, { recursive: true });
|
||||
for (const file of [area.outputs.glb, area.outputs.metadata, area.outputs.cesiumPreview, area.outputs.vehicleRoute, area.outputs.vehicleModel]) {
|
||||
fs.writeFileSync(file, "fixture\n");
|
||||
}
|
||||
const lanePolygons = path.join(area.outputs.geojsonDir, "lane_polygons.geojson");
|
||||
const emptyFeatureCollection = '{"type":"FeatureCollection","features":[]}\n';
|
||||
const emptyNetwork = '{"roads":[],"intersections":[],"gps_bounds":{}}\n';
|
||||
fs.writeFileSync(lanePolygons, emptyFeatureCollection);
|
||||
const network = path.join(area.outputs.geojsonDir, "network.json");
|
||||
fs.writeFileSync(network, emptyNetwork);
|
||||
const intersectionSurface = path.join(area.outputs.geojsonDir, "intersection_surface.geojson");
|
||||
fs.writeFileSync(intersectionSurface, emptyFeatureCollection);
|
||||
const previewCss = path.join(__dirname, "lib", "cesium-preview.css");
|
||||
const previewJs = path.join(__dirname, "lib", "cesium-preview.js");
|
||||
writeStageManifest(area, {
|
||||
stage: "preview",
|
||||
status: "ok",
|
||||
config: configPath,
|
||||
inputs: {
|
||||
config: fileRecord(configPath),
|
||||
osm: fileRecord(input),
|
||||
glb: fileRecord(area.outputs.glb),
|
||||
metadata: fileRecord(area.outputs.metadata),
|
||||
lanePolygons: fileRecord(lanePolygons),
|
||||
network: fileRecord(network),
|
||||
intersectionSurface: fileRecord(intersectionSurface),
|
||||
previewCss: fileRecord(previewCss),
|
||||
previewJs: fileRecord(previewJs),
|
||||
},
|
||||
outputs: {
|
||||
cesiumPreview: fileRecord(area.outputs.cesiumPreview),
|
||||
vehicleRoute: fileRecord(area.outputs.vehicleRoute),
|
||||
vehicleModel: fileRecord(area.outputs.vehicleModel),
|
||||
},
|
||||
summary: {},
|
||||
warnings: [],
|
||||
});
|
||||
let previewManifest = stageManifestStatus(area, configPath).find((manifest) => manifest.stage === "preview");
|
||||
assert.equal(previewManifest.fresh, true);
|
||||
fs.appendFileSync(lanePolygons, " \n");
|
||||
previewManifest = stageManifestStatus(area, configPath).find((manifest) => manifest.stage === "preview");
|
||||
assert.equal(previewManifest.fresh, false);
|
||||
assert.ok(previewManifest.issues.some((issue) => issue.includes("lanePolygons")));
|
||||
fs.writeFileSync(lanePolygons, emptyFeatureCollection);
|
||||
fs.appendFileSync(network, " \n");
|
||||
previewManifest = stageManifestStatus(area, configPath).find((manifest) => manifest.stage === "preview");
|
||||
assert.equal(previewManifest.fresh, false);
|
||||
assert.ok(previewManifest.issues.some((issue) => issue.includes("network")));
|
||||
fs.writeFileSync(network, emptyNetwork);
|
||||
fs.appendFileSync(intersectionSurface, " \n");
|
||||
previewManifest = stageManifestStatus(area, configPath).find((manifest) => manifest.stage === "preview");
|
||||
assert.equal(previewManifest.fresh, false);
|
||||
assert.ok(previewManifest.issues.some((issue) => issue.includes("intersectionSurface")));
|
||||
fs.rmSync(tempDir, { recursive: true, force: true });
|
||||
|
||||
console.log("Asset budget tests passed.");
|
||||
|
||||
Reference in New Issue
Block a user