Erst, entschuldiget ihr mir bitte, wenn solches Thema schon existiert.
Also, ich brauche, im bestimmten Gebiet Polygonen mit dem Tag place=village, in deren es jeweils weniger als 20 Häuser gibt, zu finden. Mithilfe von dem Overpass. Wie kann ich das machen?
Vielleicht gibt es jetzt keine Weise, das zu tun. Wenn ja, könnet ihr vorschlägen, wie diese Option aussiehen kann und wie man sie in Overpass implementieren kann?
Ich siehe es so:
{{geocodeArea:Thüringen}}->.a; //zum Beispiel
relation
(area.a)
[place=village]
->.b;
map_to_area -> .c;
foreach.c -> .d (
way
(area.d)
[building]
(count<20)( // if count of objects in this input set is smaller than 20, then print .d
.d out meta;
);
);
P. S. Ich suche Dörfer, wo es in OSM keine oder zu wenig Häuser gibt, um dort Häuser zu mappen.
P. P. S. Entschuldigung, wenn ich Verben mit “ihr” falsch schreibe
{{geocodeArea:Thüringen}}->.a; //zum Beispiel
relation
(area.a)
[place=village]
->.b;
map_to_area -> .c;
foreach.c -> .d (
way
(area.d)
[building]
->.e;
// Sintaxis is similar to "(user:*)" and "foreach":
// if condition in first parentheses is satisfied,
// Overpass must run code in second parentheses.
// This repeats for each object in input set.
(count_less:20).e( // if count of objects in input set ".e" is smaller than 20, then print an input set ".d"
.d out meta;
);
);
mal ganz abgesehen von der Formuliering der Abfrage im teschnischen:
Bist du dir denn bewusst, ob in deinem Testgebiet die ganzen Objecte mit place=village wirklich auch als **Relation **erfasst sind, und nicht “nur” als eine einzige geschlossene **Linie *mit z.B. landuse= oder als einzelner Node?
Und inwieweit bist du dir sicher, dass bei allen Dörfern mit place=village auch wirklich schon alle Häuser in den OSM-Daten enthalten sind? Denn was machst du mit Orten, die in der realen Welt dreißig Häuder haben, davon sind aber bisher nur 5 in OSM drin?
Alles andere funktioniert leider nicht. Eine Diskussion dazu ist am besten auf Github oder auf der Overpass Dev-List aufgehoben. Hier im Forum geht das schlicht und einfach unter.
danke, aber über “out count;” weiß ich schon. Man kann natürlich deine Abfrage nutzen und dann selbstständig die Orte, wo es wäniger als 20 Häuser gibt, aussuchen. Ich möchte diesen Prozeß ein bisschen automatisieren.
Über GitHub und Mailing-List - danke, vestanden. Werde dort schreiben.
Du könntest die Daten, die du als CSV bekommst, z.B. mit einem Python- oder AWK-Skript einlesen und nur die Orte Filtern, die weniger als 20 in der Spalte “count” stehen haben.