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.
Heeeeeee!
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?
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
PS: übrigens, für die die spicken wollen, genau dieser Ausdruck ist bestens mit zwei erklärenden Sätzen dokumentiert
Jau, hatte die Abfrage noch um die Anzahl der Nodes erweitert aber im Post nicht geändert.
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?
Und warum wir das Gebäude hier nicht gerendert? Ist die Linie offen und gar nicht geschlossen? … ach ja, wegen dem Teilstück hier
Ich sehe gerade, dass es sehr viele Falsch-Positive gibt. Auf die Winkelsumme kann man nicht zugreifen, oder?
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?
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?
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…
(*) 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