diff --git a/src/renderer/loaders/pavement_loader.js b/src/renderer/loaders/pavement_loader.js index 43c873e..3168588 100644 --- a/src/renderer/loaders/pavement_loader.js +++ b/src/renderer/loaders/pavement_loader.js @@ -41,12 +41,12 @@ function bezier(line, icao, layerGroup, currentFeature) { var startPoint = [Number(previous[0]), Number(previous[1])]; var endPoint = [Number(line[1]), Number(line[2])]; - if(module.exports.debug) { - L.polyline([startPoint, endPoint], { color: 'fuchsia' }).addTo(layerGroup); - var marker = new L.marker(endPoint, { title: 'endpoint', color: 'fuchsia' }); - marker.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), { className: "my-label", offset: [0, 0] }); - marker.addTo(layerGroup); -} + if (module.exports.debug) { + L.polyline([startPoint, endPoint], { color: 'fuchsia' }).addTo(layerGroup); + var marker = new L.marker(endPoint, { title: 'endpoint', color: 'fuchsia' }); + marker.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), { className: "my-label", offset: [0, 0] }); + marker.addTo(layerGroup); + } var control = [Number(line[3]), Number(line[4])]; if (!isNaN(control[0]) && control[0] !== undefined && !isNaN(control[1]) && control[1] !== undefined) { @@ -71,7 +71,7 @@ function bezier(line, icao, layerGroup, currentFeature) { L.polyline([startPoint, controlReflected, endPoint], { color: 'purple' }).addTo(layerGroup); var marker = new L.marker(controlReflected, { title: 'control First' }); - marker.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), {className: "my-label", offset: [0, 0] }); + marker.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), { className: "my-label", offset: [0, 0] }); marker.addTo(layerGroup); } points = deCasteljau([ @@ -82,13 +82,13 @@ function bezier(line, icao, layerGroup, currentFeature) { if (module.exports.debug) { L.polyline([startPoint, exports.bezierPoint, controlReflected, endPoint], { color: 'purple' }).addTo(layerGroup); var marker = new L.marker(exports.bezierPoint, { title: 'exports.bezierPoint' }).addTo(layerGroup); - marker.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), {className: "my-label", offset: [0, 10] }); + marker.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), { className: "my-label", offset: [0, 10] }); marker.addTo(layerGroup); - + var marker1 = new L.marker(controlReflected, { title: 'controlReflected' }).addTo(layerGroup); - marker1.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), {className: "my-label", offset: [0, -10] }); + marker1.bindTooltip(String(currentFeature.slice(-1)[0].length + ' ' + line), { className: "my-label", offset: [0, -10] }); marker1.addTo(layerGroup); - + } points = deCasteljau([ [Number(previous[0]), Number(previous[1])], @@ -276,36 +276,47 @@ module.exports.readPavement = function (f, icao, cb) { store.default.dispatch('setPavementLoaded', false); - lineReader.createInterface({ - input: fs.createReadStream(f).pipe(zlib.createGunzip()) - }).on('line', function (line) { - try { - var fields = line.split(/[ ]+/); - // var fields = line.match('([0-9]+)'); - if (fields == null) - return; - var scanMethod = scanMethods[fields[0]]; - if (scanMethod != null) { - currentFeature = scanMethod(fields, icao, pavementLayerGroup, currentFeature); - } - else { - if (fields[0] == '99') { - lineReader.close(); + if (!fs.existsSync(f)) { + store.default.dispatch('setPavementLoaded', true); + return; + } + try { + fs.accessSync(f, fs.constants.R_OK); + lineReader.createInterface({ + input: fs.createReadStream(f).pipe(zlib.createGunzip()) + }).on('line', function (line) { + try { + var fields = line.split(/[ ]+/); + // var fields = line.match('([0-9]+)'); + if (fields == null) + return; + var scanMethod = scanMethods[fields[0]]; + if (scanMethod != null) { + currentFeature = scanMethod(fields, icao, pavementLayerGroup, currentFeature); } - // console.log('Ignored:', line); - } - } catch (error) { - console.error('Error reading : ' + line + error); - } - }).on('error', function (err) { + else { + if (fields[0] == '99') { + lineReader.close(); + } + // console.log('Ignored:', line); + } + } catch (error) { + console.error('Error reading : ' + line + error); + } + }).on('error', function (err) { + store.default.dispatch('setPavementLoaded', true); + console.error(err); + lr.close(); + }).on('close', function () { + store.default.dispatch('setPavementLoaded', true); + console.log("End"); + cb(pavementLayerGroup); + }); + } catch (err) { + console.error('no access!'); store.default.dispatch('setPavementLoaded', true); - console.error(err); - lr.close(); - }).on('close', function () { - store.default.dispatch('setPavementLoaded', true); - console.log("End"); - cb(pavementLayerGroup); - }); + return; + } } module.exports.debug = false; @@ -328,24 +339,24 @@ var scanMethods = { // APTDAT 715 Segment 10: (line, icao, layerGroup) => { if (module.exports.isScanning) { - var pointMiddle = new LatLonEllipsoidal(Number(line[1]), Number(line[2])); - var point1 = pointMiddle.destinationPoint(line[5]/6.562, line[4]); - var point2 = pointMiddle.destinationPoint(line[5]/6.562, line[4]-180); + var pointMiddle = new LatLonEllipsoidal(Number(line[1]), Number(line[2])); + var point1 = pointMiddle.destinationPoint(line[5] / 6.562, line[4]); + var point2 = pointMiddle.destinationPoint(line[5] / 6.562, line[4] - 180); - var runwayPoints = []; + var runwayPoints = []; - var bearing = point1.initialBearingTo(point2); - // Width in ft - var runwayWidth = Number(line[8])/3.281; + var bearing = point1.initialBearingTo(point2); + // Width in ft + var runwayWidth = Number(line[8]) / 3.281; - runwayPoints.push(point1.destinationPoint(runwayWidth / 2, (bearing + 90))); - runwayPoints.push(point2.destinationPoint(runwayWidth / 2, (bearing + 90))); - runwayPoints.push(point2.destinationPoint(runwayWidth / 2, (bearing - 90))); - runwayPoints.push(point1.destinationPoint(runwayWidth / 2, (bearing - 90))); + runwayPoints.push(point1.destinationPoint(runwayWidth / 2, (bearing + 90))); + runwayPoints.push(point2.destinationPoint(runwayWidth / 2, (bearing + 90))); + runwayPoints.push(point2.destinationPoint(runwayWidth / 2, (bearing - 90))); + runwayPoints.push(point1.destinationPoint(runwayWidth / 2, (bearing - 90))); - var runwayPoly = buildTaxiwayPoly(runwayPoints); - runwayPoly.addTo(layerGroup); - } + var runwayPoly = buildTaxiwayPoly(runwayPoints); + runwayPoly.addTo(layerGroup); + } }, // Runway 100: (line, icao, layerGroup) => { @@ -363,25 +374,25 @@ var scanMethods = { runwayPoints.push(point1.destinationPoint(runwayWidth / 2, (bearing + 90))); runwayPoints.push(point2.destinationPoint(runwayWidth / 2, (bearing + 90))); runwayPoints.push(point2.destinationPoint(runwayWidth / 2, (bearing - 90))); - runwayPoints.push(point1.destinationPoint(runwayWidth / 2, (bearing - 90))); + runwayPoints.push(point1.destinationPoint(runwayWidth / 2, (bearing - 90))); var runwayPoly = buildRunwayPoly(runwayPoints); runwayPoly.addTo(layerGroup); - + var displacedEnd1 = point1.destinationPoint(Number(line[20]), bearing) - var displacedEnd2 = point2.destinationPoint(Number(line[20]), bearing-180) + var displacedEnd2 = point2.destinationPoint(Number(line[20]), bearing - 180) var runwayLine = new L.Polyline([displacedEnd1, displacedEnd2]); - runwayLine.setStyle({ color: 'yellow', stroke: true, dashArray: [50,50] }); + runwayLine.setStyle({ color: 'yellow', stroke: true, dashArray: [50, 50] }); runwayLine.addTo(layerGroup); - - var t1 = new L.Polyline([displacedEnd1.destinationPoint(runwayWidth / 2, (bearing - 90)), - displacedEnd1.destinationPoint(runwayWidth / 2, (bearing + 90))]); + + var t1 = new L.Polyline([displacedEnd1.destinationPoint(runwayWidth / 2, (bearing - 90)), + displacedEnd1.destinationPoint(runwayWidth / 2, (bearing + 90))]); t1.setStyle({ color: 'yellow' }); t1.addTo(layerGroup); - var t2 = new L.Polyline([displacedEnd2.destinationPoint(runwayWidth / 2, (bearing - 90)), - displacedEnd2.destinationPoint(runwayWidth / 2, (bearing + 90))]); + var t2 = new L.Polyline([displacedEnd2.destinationPoint(runwayWidth / 2, (bearing - 90)), + displacedEnd2.destinationPoint(runwayWidth / 2, (bearing + 90))]); t2.setStyle({ color: 'yellow' }); t2.addTo(layerGroup); @@ -427,8 +438,8 @@ var scanMethods = { console.debug(line); var previous = currentFeature.slice(-1)[0].slice(-1)[0]; if (previous !== undefined && - previous !== null && - previous[0] === line[1] && + previous !== null && + previous[0] === line[1] && previous[1] === line[2]) { module.exports.bezierPoint = null; } else {