ich denke, es eine Menge auf die Perspektive und Anwendungsfall abhängig zu sagen, wenn Merkmale gleich sind, weshalb es für den Benutzer Gleichheit definieren gelassen wird. Einige mögen sagen, dass die Merkmale gleich sind, wenn sie die (exakte) gleiche Geometrie teilen (1). Andere könnten sagen, dass Merkmale die gleichen Eigenschaften haben müssen (2) oder sogar beide (3).
Um Eigenschaften Gleichheit zu überprüfen Ich würde empfehlen, die Attribute zu definieren, die für Ihre Definition der Gleichheit wichtig sind. Dann können Sie Code ähnlich wie diese verwenden, um zu überprüfen, ob 2 ol.Feature
Objekte gleich sind:
// Define your important properties
var mySelectedProperties = ["importantProperty", "anotherImportantProperty", "propertyX"];
// Check for property equality between two ol.Feature objects
function areEqual(featureA, featureB){
var equal = true;
for(let property of mySelectedProperties){
if(featureA.get(property) != featureB.get(property)){
equal = false;
return equal ;
}
}
return equal;
}
Für Geometrie Gleichheit Sie vielleicht zu prüfen, ob die (x & y) Koordinaten gleich sind. Hier einige weitere Überlegungen:
- 2 Geometrien können gleich aussehen, aber die Koordinaten sind nicht in der gleichen Reihenfolge:
Z.B.: linea: pointA-pointB und lineB: pointB-pointA
oder sogar dies: Polygona: pointA-pointB-pointC-pointA und polygonB: pointB-pointC-pointA-pointB
- Für einige Merkmale könnte es sinnvoll sein zu sagen, dass die Geometrie so nahe bei einer anderen liegt, dass sie wahrscheinlich das gleiche Merkmal darstellt ... (zB (kleine) Messfehler oder Gleitkomma-Ungenauigkeiten).
Schöne Gedanken. Die Geometrieüberlegungen haben mir bei den LineString-Funktionen sehr geholfen! – Bel