forked from MapComplete/MapComplete
Fix overlapWith-behaviour wrt points
This commit is contained in:
parent
18eb696c23
commit
4dda8fdcfa
1 changed files with 26 additions and 6 deletions
|
@ -44,17 +44,16 @@ export class GeoOperations {
|
||||||
const coor = feature.geometry.coordinates;
|
const coor = feature.geometry.coordinates;
|
||||||
for (const otherFeature of otherFeatures) {
|
for (const otherFeature of otherFeatures) {
|
||||||
|
|
||||||
|
if(feature.id === otherFeature.id){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (otherFeature.geometry === undefined) {
|
if (otherFeature.geometry === undefined) {
|
||||||
console.error("No geometry for feature ", feature)
|
console.error("No geometry for feature ", feature)
|
||||||
throw "List of other features contains a feature without geometry an undefined"
|
throw "List of other features contains a feature without geometry an undefined"
|
||||||
}
|
}
|
||||||
|
|
||||||
let otherFeatureBBox = BBox.get(otherFeature);
|
if (GeoOperations.inside(coor, otherFeature)) {
|
||||||
if (!featureBBox.overlapsWith(otherFeatureBBox)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.inside(coor, otherFeature)) {
|
|
||||||
result.push({feat: otherFeature, overlap: undefined})
|
result.push({feat: otherFeature, overlap: undefined})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +63,11 @@ export class GeoOperations {
|
||||||
if (feature.geometry.type === "LineString") {
|
if (feature.geometry.type === "LineString") {
|
||||||
|
|
||||||
for (const otherFeature of otherFeatures) {
|
for (const otherFeature of otherFeatures) {
|
||||||
|
|
||||||
|
if(feature.id === otherFeature.id){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
const otherFeatureBBox = BBox.get(otherFeature);
|
const otherFeatureBBox = BBox.get(otherFeature);
|
||||||
const overlaps = featureBBox.overlapsWith(otherFeatureBBox)
|
const overlaps = featureBBox.overlapsWith(otherFeatureBBox)
|
||||||
if (!overlaps) {
|
if (!overlaps) {
|
||||||
|
@ -121,6 +125,18 @@ export class GeoOperations {
|
||||||
if (feature.geometry.type === "Polygon" || feature.geometry.type === "MultiPolygon") {
|
if (feature.geometry.type === "Polygon" || feature.geometry.type === "MultiPolygon") {
|
||||||
|
|
||||||
for (const otherFeature of otherFeatures) {
|
for (const otherFeature of otherFeatures) {
|
||||||
|
|
||||||
|
if(feature.id === otherFeature.id){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(otherFeature.geometry.type === "Point"){
|
||||||
|
if (this.inside(otherFeature, feature)) {
|
||||||
|
result.push({feat: otherFeature, overlap: undefined})
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
const otherFeatureBBox = BBox.get(otherFeature);
|
const otherFeatureBBox = BBox.get(otherFeature);
|
||||||
const overlaps = featureBBox.overlapsWith(otherFeatureBBox)
|
const overlaps = featureBBox.overlapsWith(otherFeatureBBox)
|
||||||
if (!overlaps) {
|
if (!overlaps) {
|
||||||
|
@ -155,6 +171,10 @@ export class GeoOperations {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(pointCoordinate.geometry !== undefined){
|
||||||
|
pointCoordinate = pointCoordinate.geometry.coordinates
|
||||||
|
}
|
||||||
|
|
||||||
if (feature.geometry.type === "MultiPolygon") {
|
if (feature.geometry.type === "MultiPolygon") {
|
||||||
const coordinates = feature.geometry.coordinates[0];
|
const coordinates = feature.geometry.coordinates[0];
|
||||||
const outerPolygon = coordinates[0];
|
const outerPolygon = coordinates[0];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue