Box check

This commit is contained in:
portree_kid 2020-07-04 08:24:58 +02:00
parent 6de8d22381
commit 3416333b42
5 changed files with 145 additions and 18 deletions

101
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "flightgear-airports", "name": "flightgear-airports",
"version": "0.0.12", "version": "0.0.16",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -667,6 +667,20 @@
"@turf/helpers": "^5.1.5", "@turf/helpers": "^5.1.5",
"@turf/intersect": "^5.1.5", "@turf/intersect": "^5.1.5",
"@turf/invariant": "^5.1.5" "@turf/invariant": "^5.1.5"
},
"dependencies": {
"@turf/intersect": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz",
"integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==",
"requires": {
"@turf/clean-coords": "^5.1.5",
"@turf/helpers": "^5.1.5",
"@turf/invariant": "^5.1.5",
"@turf/truncate": "^5.1.5",
"turf-jsts": "*"
}
}
} }
}, },
"@turf/interpolate": { "@turf/interpolate": {
@ -688,15 +702,28 @@
} }
}, },
"@turf/intersect": { "@turf/intersect": {
"version": "5.1.6", "version": "6.1.3",
"resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz", "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.1.3.tgz",
"integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==", "integrity": "sha512-SeAJG/zPRRTeyK2OifkPoyLq60q8tv8prpPIH3R8ZhyF4MdLOnMv5MURaQ6kQd+3UTDrL+pYm6rqbPvln1zqIw==",
"requires": { "requires": {
"@turf/clean-coords": "^5.1.5", "@turf/helpers": "6.x",
"@turf/helpers": "^5.1.5", "@turf/invariant": "6.x",
"@turf/invariant": "^5.1.5", "martinez-polygon-clipping": "^0.4.3"
"@turf/truncate": "^5.1.5", },
"turf-jsts": "*" "dependencies": {
"@turf/helpers": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz",
"integrity": "sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g=="
},
"@turf/invariant": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.1.2.tgz",
"integrity": "sha512-WU08Ph8j0J2jVGlQCKChXoCtI50BB3yEH21V++V0T4cR1T27HKCxkehV2sYMwTierfMBgjwSwDIsxnR4/2mWXg==",
"requires": {
"@turf/helpers": "6.x"
}
}
} }
}, },
"@turf/invariant": { "@turf/invariant": {
@ -1259,6 +1286,20 @@
"@turf/helpers": "^5.1.5", "@turf/helpers": "^5.1.5",
"@turf/intersect": "^5.1.5", "@turf/intersect": "^5.1.5",
"@turf/invariant": "^5.1.5" "@turf/invariant": "^5.1.5"
},
"dependencies": {
"@turf/intersect": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz",
"integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==",
"requires": {
"@turf/clean-coords": "^5.1.5",
"@turf/helpers": "^5.1.5",
"@turf/invariant": "^5.1.5",
"@turf/truncate": "^5.1.5",
"turf-jsts": "*"
}
}
} }
}, },
"@turf/standard-deviational-ellipse": { "@turf/standard-deviational-ellipse": {
@ -1355,6 +1396,20 @@
"@turf/helpers": "^5.1.5", "@turf/helpers": "^5.1.5",
"@turf/intersect": "^5.1.5", "@turf/intersect": "^5.1.5",
"@turf/invariant": "^5.1.5" "@turf/invariant": "^5.1.5"
},
"dependencies": {
"@turf/intersect": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz",
"integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==",
"requires": {
"@turf/clean-coords": "^5.1.5",
"@turf/helpers": "^5.1.5",
"@turf/invariant": "^5.1.5",
"@turf/truncate": "^5.1.5",
"turf-jsts": "*"
}
}
} }
}, },
"@turf/truncate": { "@turf/truncate": {
@ -1471,6 +1526,20 @@
"@turf/union": "5.1.x", "@turf/union": "5.1.x",
"@turf/unkink-polygon": "5.1.x", "@turf/unkink-polygon": "5.1.x",
"@turf/voronoi": "5.1.x" "@turf/voronoi": "5.1.x"
},
"dependencies": {
"@turf/intersect": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz",
"integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==",
"requires": {
"@turf/clean-coords": "^5.1.5",
"@turf/helpers": "^5.1.5",
"@turf/invariant": "^5.1.5",
"@turf/truncate": "^5.1.5",
"turf-jsts": "*"
}
}
} }
}, },
"@turf/union": { "@turf/union": {
@ -12301,6 +12370,15 @@
"object-visit": "^1.0.0" "object-visit": "^1.0.0"
} }
}, },
"martinez-polygon-clipping": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/martinez-polygon-clipping/-/martinez-polygon-clipping-0.4.3.tgz",
"integrity": "sha512-3ZNS0ksKhWTLsmCUkNf+/UimndZ5U2cVOS0I+IjiwF+M23E77TmeOZSmbRJbfCoQUog/vcQ42s3DXrhgOhgPqw==",
"requires": {
"splaytree": "^0.1.4",
"tinyqueue": "^1.2.0"
}
},
"math-expression-evaluator": { "math-expression-evaluator": {
"version": "1.2.17", "version": "1.2.17",
"resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
@ -16824,6 +16902,11 @@
"integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
"dev": true "dev": true
}, },
"splaytree": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/splaytree/-/splaytree-0.1.4.tgz",
"integrity": "sha512-D50hKrjZgBzqD3FT2Ek53f2dcDLAQT8SSGrzj3vidNH5ISRgceeGVJ2dQIthKOuayqFXfFjXheHNo4bbt9LhRQ=="
},
"split": { "split": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",

View File

@ -42,8 +42,14 @@
"filter": [ "filter": [
"**/dijkstra.js" "**/dijkstra.js"
] ]
},
{
"from": "node_modules/@turf",
"to": "workers/node_modules/@turf",
"filter": [
"**"
]
} }
], ],
"files": [ "files": [
"dist/electron/**/*" "dist/electron/**/*"
@ -79,6 +85,7 @@
} }
}, },
"dependencies": { "dependencies": {
"@turf/intersect": "^6.1.3",
"@turf/turf": "^5.1.6", "@turf/turf": "^5.1.6",
"axios": "^0.18.1", "axios": "^0.18.1",
"coordinate-parser": "^1.0.3", "coordinate-parser": "^1.0.3",

View File

@ -242,6 +242,10 @@ You should have received a copy of the GNU General Public License along with FG
}, },
featuresMapper(o) { featuresMapper(o) {
if (o instanceof L.ParkingSpot) { if (o instanceof L.ParkingSpot) {
/*
if( o.box === undefined ) {
debugger;
} */
return { 'index': Number(o['id']), return { 'index': Number(o['id']),
'_leaflet_id': o._leaflet_id, '_leaflet_id': o._leaflet_id,
'type': 'parking', 'type': 'parking',
@ -249,7 +253,9 @@ You should have received a copy of the GNU General Public License along with FG
'name': o.options.attributes.name, 'name': o.options.attributes.name,
'radius': String(o.options.attributes.radius), 'radius': String(o.options.attributes.radius),
'lat': o._latlng.lat, 'lat': o._latlng.lat,
'lng': o._latlng.lng }; 'lng': o._latlng.lng,
'box': o.box!==undefined?o.box.getLatLngs():null
};
} else if (o instanceof L.RunwayNode) { } else if (o instanceof L.RunwayNode) {
console.log(o) console.log(o)
return { 'index': Number(o['glueindex']), '_leaflet_id': o._leaflet_id, 'type': 'runway' }; return { 'index': Number(o['glueindex']), '_leaflet_id': o._leaflet_id, 'type': 'runway' };

View File

@ -41,7 +41,10 @@ L.ParkingSpot = L.Circle.extend({
this.frontWheel.addTo(this.editor.editLayer); this.frontWheel.addTo(this.editor.editLayer);
this.updateWheelPos(); this.updateWheelPos();
this.updateBox(); this.updateBox();
this.setStyle({ opacity: 0, fill: false }); const parkingSize = validRadii.indexOf(this.options.attributes.radius);
if(parkingSize>=0) {
this.setStyle({ opacity: 0, fill: false });
}
} }
}, },
updateMiddleMarker: function() { updateMiddleMarker: function() {

View File

@ -5,11 +5,15 @@ const winURL = process.env.NODE_ENV === 'development'
var path = require('path'); var path = require('path');
const fs = require('fs'); const fs = require('fs');
//debugger;
var turf;
if(process.env.NODE_ENV === 'development') { if(process.env.NODE_ENV === 'development') {
importScripts('../../../node_modules/dijkstrajs/dijkstra.js'); importScripts('../../../node_modules/dijkstrajs/dijkstra.js');
turf = require('../../../../../@turf/turf');
} else { } else {
importScripts('dijkstra.js'); importScripts('dijkstra.js');
turf = require('@turf/turf')
} }
const homedir = require('os').homedir(); const homedir = require('os').homedir();
@ -47,10 +51,19 @@ async function checkGroundnet(data) {
var runwayNodes = data.map(mapRunwayNodes).filter(n => n !== undefined); var runwayNodes = data.map(mapRunwayNodes).filter(n => n !== undefined);
var pushbackNodes = data.map(mapPushbackNodes).filter(n => n !== undefined); var pushbackNodes = data.map(mapPushbackNodes).filter(n => n !== undefined);
var edges = data.map(mapEdges).filter(n => n !== undefined); var edges = data.map(mapEdges).filter(n => n !== undefined);
this.max = 4 * parkings.length * runwayNodes.length + this.max = 4 * parkings.length * runwayNodes.length +
3 * parkings.length; 3 * parkings.length;
this.postMessage(['max', this.max]); this.postMessage(['max', this.max]);
var boxes = {};
//debugger;
data.forEach(element => {
if(element.box!==undefined && element.box!==null) {
boxes[element.index] = element.box[0].map(latlng => [latlng.lat, latlng.lng] );
boxes[element.index].push(boxes[element.index][0]);
}
});
var graph = {}; var graph = {};
parkings.forEach(element => { parkings.forEach(element => {
graph[element] = {}; graph[element] = {};
@ -87,7 +100,7 @@ async function checkGroundnet(data) {
} }
return Object.keys(graph[v]).filter( v => runwayNodes[v]).length === 0; return Object.keys(graph[v]).filter( v => runwayNodes[v]).length === 0;
} }
debugger; //debugger;
runwayNodes = runwayNodes.filter( runwayNodes = runwayNodes.filter(
(v, i) => isLegitEnd(v) (v, i) => isLegitEnd(v)
); );
@ -220,8 +233,17 @@ async function checkGroundnet(data) {
if (parkingNode.index !== parkingNode1.index) { if (parkingNode.index !== parkingNode1.index) {
var d = distance([parkingNode.lng, parkingNode.lat], var d = distance([parkingNode.lng, parkingNode.lat],
[parkingNode1.lng, parkingNode1.lat]); [parkingNode1.lng, parkingNode1.lat]);
if (d < parkingNode.radius + parkingNode1.radius) { if (d < parkingNode.radius + parkingNode1.radius + 10) {
overlappingParkings.push({ id: parkingNode.index, message: 'Overlapping parkings' }); // If bigger circles intersect we should check the boxes
//debugger;
var poly1 = turf.polygon([boxes[parkingNode.index]]);
var poly2 = turf.polygon([boxes[parkingNode1.index]]);
var intersection = turf.intersect(poly1, poly2);
if( intersection !== null ) {
overlappingParkings.push({ id: parkingNode.index, message: 'Overlapping parkings' });
}
} }
} }
this.postMessage(['progress', 1]); this.postMessage(['progress', 1]);
@ -338,13 +360,19 @@ var mapParkingNode = function (o) {
// debugger; // debugger;
if (o.type === 'parking') if (o.type === 'parking')
return { index: o.index, lat: o.lat, lng: o.lng, name: o.name, radius: Number(o.radius), type: o.type, parkingType: o.parkingType }; return { index: o.index, lat: o.lat, lng: o.lng, name: o.name, radius: Number(o.radius), type: o.type, parkingType: o.parkingType };
console.log(o); console.debug(o);
}
var mapBoxes = function (o) {
// debugger;
if (o.type === 'parking')
return { index: o.index };
} }
var mapRunwayNodes = function (o) { var mapRunwayNodes = function (o) {
if (o.type === 'runway') if (o.type === 'runway')
return o.index; return o.index;
console.log(o); console.debug(o);
} }
var mapEdges = function (o) { var mapEdges = function (o) {
@ -354,5 +382,5 @@ var mapEdges = function (o) {
start: o.start, end: o.end, isPushBackRoute: o.isPushBackRoute !== undefined && start: o.start, end: o.end, isPushBackRoute: o.isPushBackRoute !== undefined &&
o.isPushBackRoute !== 0, latLngs: o.latLngs o.isPushBackRoute !== 0, latLngs: o.latLngs
}; };
console.log(o); console.debug(o);
} }