Gebäude mit vielen Nodes ermitteln

https://overpass-turbo.eu/s/JW6

Mich fasziniert an dieser Sprache ja immer wieder, dass Zeichenfolgen wie

(._;>;);

nicht nur kein Syntaxfehler sind, sondern sogar einen produktiven Sinn ergeben.

–ks

Yepp, schlimmer als C. :smiley:

Heeeeeee!

:wink:

Und mich fasziniert, dass man in SQL so eine Frage wirklich “menschenlesbar” formulieren kann:


select osm_id
  from planet_osm_line
 where osm_id > 0
   and tags ? 'building'
   and ST_NPoints(way) > 28
 limit 10;

  osm_id   | nodes 
-----------+-------
 474331748 |   160
 311721806 |    44
 320213337 |    32
 158060142 |    82
 446027610 |    52
  30053239 |    42
 158240906 |    51
 158240902 |    41
 318771315 |    36
 171770694 |    40
(10 Zeilen)

Gruss
walter

Naja, was soll man sonst von einem “promovierten Mathematiker” erwarten? :stuck_out_tongue: :smiley:

Irgendwie passen da SQL Statement und Ergebnis nicht zusammen.

Ok, jetzt erwarte ich aber auch eine detaillierte Analyse, Zeichen für Zeichen, wofür das gut ist.

Also die runde Klammer bildet meines Wissens schonmal ein Art “Subset”. Der nächste bitte :wink:

PS: übrigens, für die die spicken wollen, genau dieser Ausdruck ist bestens mit zwei erklärenden Sätzen dokumentiert :wink:

Jau, hatte die Abfrage noch um die Anzahl der Nodes erweitert aber im Post nicht geändert. :frowning:


select osm_id, ST_NPoints(way) Nodes
from planet_osm_line
where tags ? 'building'
  and st_NPoints(way) > 28
  and osm_id > 0
limit 10;
  osm_id   | nodes 
-----------+-------
 474331748 |   160
 311721806 |    44
 320213337 |    32
 158060142 |    82
 446027610 |    52
  30053239 |    42
 158240906 |    51
 158240902 |    41
 318771315 |    36
 171770694 |    40
(10 Zeilen)

Zeit: 138,815 ms

Gruss
walter

Danke, ihr wart mal wieder großartig!

Muss ich das jetzt eigentlich gut oder eher bedenklich finden, dass die Top 3 gar keine buildings sind und es sich hier um falsches Tagging handelt? :roll_eyes:

Und warum wir das Gebäude hier nicht gerendert? Ist die Linie offen und gar nicht geschlossen? … ach ja, wegen dem Teilstück hier :confused:

Ich sehe gerade, dass es sehr viele Falsch-Positive gibt. Auf die Winkelsumme kann man nicht zugreifen, oder?

Ich finde das auch nicht toll. Aber manchmal stolpert man gerade bei so “komischen” Abfragen auf sowas, obwohl man ganz was anderes gesucht hat.

Habe sogar vorher 3 Linestrings “enttaggt”, die mehrere hundert Nodes hatten und mit building=yes erfasst waren. Dabei waren das Randlinien einer Riverside der Wolga.

Die Reihenfolge der Teffer ist übrigens unsortiert.

Hier mal eine vollständige Liste mit #Nodes > 100:


  osm_id   | nodes |                                                                                                                    tags                                                                                                                    
-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 237192522 |   461 | "building"=>"house", "waterway"=>"river"
 223500008 |   324 | "building"=>"yes"
 672139918 |   250 | "highway"=>"track", "building"=>"yes", "tracktype"=>"grade3"
 281164831 |   239 | "name"=>"集成河", "name:en"=>"Jicheng River", "building"=>"yes", "waterway"=>"river"
 220702684 |   238 | "building"=>"yes"
 682076342 |   205 | "building"=>"industrial", "waterway"=>"stream"
 474331748 |   160 | "building"=>"dam", "waterway"=>"dam"
 540521313 |   128 | "highway"=>"tertiary", "building"=>"residential"
 617431148 |   128 | "name"=>"Estrada Parque da Cidadania", "highway"=>"service", "surface"=>"paving_stones", "building"=>"farm", "maxspeed"=>"40", "maxheight"=>"680", "embankment"=>"yes"
 684943154 |   114 | "building"=>"yes", "waterway"=>"stream"
 568611394 |   113 | "ref"=>"SH 39", "name"=>"SH 39", "note"=>"adding name for road and corrected some points--rest is still pending", "oneway"=>"no", "highway"=>"primary", "name:en"=>"Hamirpur Sujanpur Thural Maranda", "building"=>"yes", "maxspeed"=>"40"
 509747928 |   109 | "name"=>"Campel DH", "leisure"=>"track", "surface"=>"unpaved", "building"=>"cycling;Down_Hill"
 640726323 |   105 | "highway"=>"unclassified", "surface"=>"unpaved", "4wd_only"=>"yes", "building"=>"hut"
 534943223 |   104 | "highway"=>"unclassified", "building"=>"yes"
 454863256 |   103 | "layer"=>"-1", "building"=>"yes"
(15 Zeilen)

281164831 (Eintrag 4) habe ich gerade korrigiert.

Hat jemand eine Antwort auf meine Frage nach der Winkelsumme eines Gebäudes? Geht das mit PostGIS?

Du suchst kreisförmige Dinge, oder?
Da mir nichts mit PostGis einfällt (ausser Funktion selber schreiben), werfe ich mal in die Knobelrunde, dass bei einem Kreis das Verhältnis der Fläche der bonding box zur Fläche des Kreises PI/4 beträgt (*). Ist vielleicht schneller zu finden, mit ein bisschen Toleranz für nicht so kreisiges…

Grüße
Max

(*) Bitte nochmal selber nachrechnen…

Kreis mit Radius 1: A = pi*r² = pi
Bounding Box dazu: Quadrat mit Kantenlänge 2r = 2 ⇒ A = 4

Kommt hin.

–ks

Die ersten 3 sind auch korrigiert.

Noch ne Idee mit Postgis: Es gibt die Funktion ST_MinimumBoundingCircle

Alle Gebäude in dieser Gegend, deren Größe um maximal 5% von ihrem Umkreis abweicht:

select osm_id,name,man_made,st_area(ST_MinimumBoundingCircle(way))/st_area(way) as R from planet_osm_polygon where st_area(ST_MinimumBoundingCircle(way))/st_area(way)<1.05 and building is not null and way && (select way from planet_osm_polygon where osm_id=-2064635);

Liefert:

  osm_id   |       name       |   man_made   |        r         
-----------+------------------+--------------+------------------
 576898722 |                  | storage_tank | 1.02703226092349
 645284545 |                  | storage_tank | 1.02951535121348
 129312148 |                  |              |  1.0342622302009
 186653281 |                  |              | 1.04119216807188
 186653274 |                  |              | 1.04113203816525
 186653263 |                  |              | 1.04175503805747
 186653268 |                  |              | 1.04113800205981
 186653271 |                  |              | 1.04129134030479
 186653292 |                  |              | 1.04182245059669
 199804090 |                  |              | 1.04181849198022
 186653283 |                  |              | 1.04140326016976
 186653291 | Schieberhäuschen |              | 1.04261034024688
 186653267 |                  |              | 1.04150110450429
 186653265 |                  |              |  1.0413843434086
 186653282 |                  |              | 1.04075503313154
 186653293 |                  |              | 1.04056704094713
 186653280 |                  |              |  1.0418082905168
 186653264 |                  |              | 1.04179114871197
 186653275 |                  |              | 1.04148827142288
 186653269 |                  |              | 1.04233014508273
 186653277 |                  |              | 1.04126374699692
 186653279 |                  |              |  1.0417844381092
 186653290 |                  |              | 1.04331963465868
 186653285 |                  |              | 1.04122964026198
 149778579 | Rundturm-Bunker  |              | 1.02364548641092
 149778578 | Rundturm-Bunker  |              | 1.02728601487807
 186653261 |                  |              |  1.0436155381956
 186653276 |                  |              | 1.04104325946826
 186653284 |                  |              | 1.04145239439022
 186653286 |                  |              | 1.04128492098545
 186653273 |                  |              | 1.04177439577881
 186653272 |                  |              | 1.04085308486737
 186653289 |                  |              | 1.02894811283856
 186653288 |                  |              | 1.04222056471343
 186653278 |                  |              | 1.04288833726229
 186653262 |                  |              | 1.04164957263418
(36 rows)

Obs was bringt…? Man findet halt auch runde Pumpenhäuser und Bunker…
*
Edit: Da war noch eine Abfrage “um 5% größer als der Umkreis” drin, was natürlich Unsinn ist. Wäre die Fläche größer, wärs kein Umkreis.*

Bis auf diesen Way sind alle gefixt. Bei dem bin ich mir nicht sicher was das sein soll. Überbaute Straße in NL?

454863256 | 103 | “layer”=>“-1”, “building”=>“yes”

Gruss
walter