pushbackRoute
This commit is contained in:
parent
62f24201b2
commit
4ed58fc7fa
Binary file not shown.
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 257 KiB After Width: | Height: | Size: 9.0 KiB |
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "flightgear-airports",
|
"name": "flightgear-airports",
|
||||||
"version": "0.0.1",
|
"version": "0.2.0",
|
||||||
"author": "portree_kid <keith.paterson@gmx.de>",
|
"author": "portree_kid <keith.paterson@gmx.de>",
|
||||||
"description": "An software to design Flightgear groundnets",
|
"description": "An software to design Flightgear groundnets",
|
||||||
"license": null,
|
"license": "GPL v3",
|
||||||
"main": "./dist/electron/main.js",
|
"main": "./dist/electron/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "node .electron-vue/build.js && electron-builder",
|
"build": "node .electron-vue/build.js && electron-builder",
|
||||||
|
@ -173,6 +173,36 @@
|
|||||||
console.log('Remove : ' + this.$store.state.Editable.type)
|
console.log('Remove : ' + this.$store.state.Editable.type)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
findRouteToPushback (index) {
|
||||||
|
if (this.featureLookup===undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var parking = this.featureLookup[index].filter(n => n instanceof L.ParkingSpot)
|
||||||
|
var walkedNodes = [index]
|
||||||
|
var pushBackNodes = []
|
||||||
|
this.walkPushbackRoute(index, walkedNodes, pushBackNodes)
|
||||||
|
return pushBackNodes
|
||||||
|
},
|
||||||
|
walkPushbackRoute (index, walkedNodes, pushBackNodes) {
|
||||||
|
var polyLines = this.featureLookup[index].filter(n => n instanceof L.Polyline)
|
||||||
|
var holdNodes = this.featureLookup[index].filter(n => n instanceof L.HoldNode)
|
||||||
|
holdNodes.forEach(n => {
|
||||||
|
pushBackNodes.push(Number(n.glueindex));
|
||||||
|
});
|
||||||
|
|
||||||
|
polyLines.forEach(l => {
|
||||||
|
if( l.options.attributes.isPushBackRoute === 1 ) {
|
||||||
|
if (Number(l.begin) === index && walkedNodes.indexOf(Number(l.end)) < 0) {
|
||||||
|
walkedNodes.push(Number(l.end))
|
||||||
|
pushBackNodes.concat(this.walkPushbackRoute(Number(l.end), walkedNodes, pushBackNodes))
|
||||||
|
}
|
||||||
|
if (Number(l.end) === index && walkedNodes.indexOf(Number(l.begin)) < 0 ) {
|
||||||
|
walkedNodes.push(Number(l.begin))
|
||||||
|
pushBackNodes.concat(this.walkPushbackRoute(Number(l.begin), walkedNodes, pushBackNodes))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
removeArc (arc) {
|
removeArc (arc) {
|
||||||
console.log(arc);
|
console.log(arc);
|
||||||
var arcLayer = this.groundnetLayerGroup.getLayer(this.$store.state.Editable.index);
|
var arcLayer = this.groundnetLayerGroup.getLayer(this.$store.state.Editable.index);
|
||||||
|
@ -28,10 +28,18 @@
|
|||||||
<el-tooltip content="PIPER PA-31/CESSNA 404 Titan" placement="top" effect="light">
|
<el-tooltip content="PIPER PA-31/CESSNA 404 Titan" placement="top" effect="light">
|
||||||
<el-radio :label="15">A</el-radio>
|
<el-radio :label="15">A</el-radio>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="BOMBARDIER Regional Jet CRJ-200/DE HAVILLAND CANADA DHC-6" placement="top" effect="light">
|
<el-tooltip
|
||||||
|
content="BOMBARDIER Regional Jet CRJ-200/DE HAVILLAND CANADA DHC-6"
|
||||||
|
placement="top"
|
||||||
|
effect="light"
|
||||||
|
>
|
||||||
<el-radio :label="24">B</el-radio>
|
<el-radio :label="24">B</el-radio>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="BOEING 737-700/AIRBUS A-320/EMBRAER ERJ 190-100" placement="top" effect="light">
|
<el-tooltip
|
||||||
|
content="BOEING 737-700/AIRBUS A-320/EMBRAER ERJ 190-100"
|
||||||
|
placement="top"
|
||||||
|
effect="light"
|
||||||
|
>
|
||||||
<el-radio :label="36">C</el-radio>
|
<el-radio :label="36">C</el-radio>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="B767 Series/AIRBUS A-310" placement="top" effect="light">
|
<el-tooltip content="B767 Series/AIRBUS A-310" placement="top" effect="light">
|
||||||
@ -50,9 +58,7 @@
|
|||||||
<el-col :span="7">
|
<el-col :span="7">
|
||||||
<span class="demo-input-label">Aircraft :</span>
|
<span class="demo-input-label">Aircraft :</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="15">
|
<el-col :span="15">{{type}}</el-col>
|
||||||
{{type}}
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="7">
|
<el-col :span="7">
|
||||||
@ -69,6 +75,12 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="7">
|
||||||
|
<span class="demo-input-label">Pushback Route End :</span>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="15">{{pushbackEnd}}</el-col>
|
||||||
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -98,6 +110,9 @@
|
|||||||
this.$store.commit('SET_EDIT_PARKING_RADIUS', newValue / 2)
|
this.$store.commit('SET_EDIT_PARKING_RADIUS', newValue / 2)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
pushbackEnd: function () {
|
||||||
|
return this.$parent.$parent.$parent.$refs.editLayer.findRouteToPushback(this.$store.state.Editable.index)
|
||||||
|
},
|
||||||
type: function () {
|
type: function () {
|
||||||
switch (this.$store.state.Editable.data.parking.radius * 2) {
|
switch (this.$store.state.Editable.data.parking.radius * 2) {
|
||||||
case 15:
|
case 15:
|
||||||
|
@ -15,6 +15,40 @@ const mathjs = require('mathjs');
|
|||||||
|
|
||||||
var builder = require('xmlbuilder');
|
var builder = require('xmlbuilder');
|
||||||
|
|
||||||
|
var featureLookup = [];
|
||||||
|
var parkings = [];
|
||||||
|
var pushBackNodeLookup = [];
|
||||||
|
|
||||||
|
function findRouteToPushback (index) {
|
||||||
|
if (featureLookup===undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var walkedNodes = [index]
|
||||||
|
var pushBackNodes = []
|
||||||
|
walkPushbackRoute(index, walkedNodes, pushBackNodes)
|
||||||
|
return pushBackNodes
|
||||||
|
}
|
||||||
|
|
||||||
|
function walkPushbackRoute (index, walkedNodes, pushBackNodes) {
|
||||||
|
var polyLines = featureLookup[index];
|
||||||
|
if (pushBackNodeLookup[index]!==undefined) {
|
||||||
|
pushBackNodes.push(pushBackNodeLookup[index]['@index']);
|
||||||
|
}
|
||||||
|
|
||||||
|
polyLines.forEach(l => {
|
||||||
|
if( l['@isPushBackRoute'] === '1' ) {
|
||||||
|
if (Number(l['@begin']) === index && walkedNodes.indexOf(Number(l['@end'])) < 0) {
|
||||||
|
walkedNodes.push(Number(l['@end']))
|
||||||
|
pushBackNodes.concat(walkPushbackRoute(Number(l['@end']), walkedNodes, pushBackNodes))
|
||||||
|
}
|
||||||
|
if (Number(l['@end']) === index && walkedNodes.indexOf(Number(l['@begin'])) < 0 ) {
|
||||||
|
walkedNodes.push(Number(l['@begin']))
|
||||||
|
pushBackNodes.concat(walkPushbackRoute(Number(l['@begin']), walkedNodes, pushBackNodes))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
exports.writeGroundnetXML = function (fDir, icao, featureList) {
|
exports.writeGroundnetXML = function (fDir, icao, featureList) {
|
||||||
try {
|
try {
|
||||||
@ -27,6 +61,10 @@ exports.writeGroundnetXML = function (fDir, icao, featureList) {
|
|||||||
|
|
||||||
var parkings = featureList.map(mapParkings).filter(n => n);
|
var parkings = featureList.map(mapParkings).filter(n => n);
|
||||||
var runwayNodes = featureList.map(mapRunwayNodes).filter(n => n);
|
var runwayNodes = featureList.map(mapRunwayNodes).filter(n => n);
|
||||||
|
var holdNodes = featureList.map(mapHoldPoint).filter(n => n);
|
||||||
|
holdNodes.forEach(n => {
|
||||||
|
pushBackNodeLookup[n['@index']] = n;
|
||||||
|
});
|
||||||
|
|
||||||
var nodes = [];
|
var nodes = [];
|
||||||
var arcList = [];
|
var arcList = [];
|
||||||
@ -37,7 +75,7 @@ exports.writeGroundnetXML = function (fDir, icao, featureList) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
var featureLookup = [];
|
featureLookup = [];
|
||||||
// Loaded segments
|
// Loaded segments
|
||||||
featureList.filter(o => o instanceof L.TaxiwaySegment).filter(n => n).forEach(element => {
|
featureList.filter(o => o instanceof L.TaxiwaySegment).filter(n => n).forEach(element => {
|
||||||
var begin = mapBeginNode(element);
|
var begin = mapBeginNode(element);
|
||||||
@ -88,6 +126,10 @@ exports.writeGroundnetXML = function (fDir, icao, featureList) {
|
|||||||
// delete the parkings
|
// delete the parkings
|
||||||
parkings.forEach(n => {
|
parkings.forEach(n => {
|
||||||
nodes[n['@index']] = null;
|
nodes[n['@index']] = null;
|
||||||
|
var pushBackNode = findRouteToPushback(Number(n['@index']))[0];
|
||||||
|
if (pushBackNode!==undefined) {
|
||||||
|
n['@pushBackRoute'] = pushBackNode;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
nodes = nodes.filter(n => n);
|
nodes = nodes.filter(n => n);
|
||||||
|
|
||||||
@ -133,7 +175,7 @@ var mapParkings = function (o) {
|
|||||||
var lat = convertLat(o.getLatLng());
|
var lat = convertLat(o.getLatLng());
|
||||||
var lon = convertLon(o.getLatLng());
|
var lon = convertLon(o.getLatLng());
|
||||||
// <Parking index="0" type="gate" name="GA_Parking" lat="S9 25.739923" lon="E160 2.927602" heading="67" radius="44" airlineCodes="" />
|
// <Parking index="0" type="gate" name="GA_Parking" lat="S9 25.739923" lon="E160 2.927602" heading="67" radius="44" airlineCodes="" />
|
||||||
return { '@index': String(o['id']), '@type': o.options.attributes.type, '@name': o.options.attributes.name, '@lat': lat, '@lon': lon, '@heading': Number(o.options.attributes.heading%360), '@radius': String(o.options.attributes.radius) };
|
return { '@index': String(o['id']), '@type': o.options.attributes.type, '@name': o.options.attributes.name, '@lat': lat, '@lon': lon, '@heading': Number(o.options.attributes.heading%360).toFixed(1), '@radius': String(o.options.attributes.radius) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,6 +189,12 @@ var mapRunwayNodes = function (o) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var mapHoldPoint = function (o) {
|
||||||
|
if (o instanceof L.HoldNode) {
|
||||||
|
return { '@index': String(o['glueindex']), '@holdPointType': o['holdPointType'] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var mapBeginNode = function (o) {
|
var mapBeginNode = function (o) {
|
||||||
if (o instanceof L.TaxiwaySegment) {
|
if (o instanceof L.TaxiwaySegment) {
|
||||||
console.log(o);
|
console.log(o);
|
||||||
|
Loading…
Reference in New Issue
Block a user