Sv:Area
Ett område (eller fylld polygon) kan definieras som ett slutet fyllt område definierat som ett sluten väg med lämpliga tillhörande taggar eller med hjälp av en multipolygon relation skapar ett område från ett eller flera sätt.
Observera att områden inte är distinkta dataprimitiver och vissa stängda vägar (till exempel landuse=*) antas vara områden, men andra, såsom highway=footway är inte, behandlas som linjära egenskaper istället, förutom när det också finns en area=yes-tagg.
Hur man kartlägger
Det finns två sätt att skapa ett område:
- För mindre områden är det ofta lämpligt att skapa en enda stängd väg (en:way) med lämplig taggar (en:tags) och i vissa sällsynta fall är det också nödvändigt att lägga till area=yes. Se area=* för mer information.
- För större områden och för sådana som sträcker sig mot andra områden eller sätt är det ofta mer lämpligt att använda en multipolygon, återigen taggad efter behov. Se Relation:multipolygon för mer information.
Även om multipolygoner tekniskt sett är relationer , är deras användning är allmänt accepterad för taggar som endast listar användning på områden (och för vilka wikin anger att dessa taggar INTE ska användas om relationer). Detta är ett undantag eftersom multipolygoner är relationer specifikt avsedda att representera områden (polygoner). Till exempel: natural=* används 2,5 miljoner gånger på relationer; landuse=* 1,8 miljoner gånger (enligt Taginfo, 2023).
Stängda vägar med vissa kombinationer av taggar kan skapa både en linjär "stängd polygon" och även ett område. Till exempel kan en rondell med en gräsyta i mitten definieras som en stängd väg märkt med highway=primary och även med landuse=grass (gräs). Detta skulle tolkas som en cirkulär väg med ett grönområde i mitten.
När man renderar vägar med taggar som endast kan användas med stängda vägar, kommer vägar som inte är stängda ofta att "stängas" genom att sammanfoga deras ändar så att området sedan kan fyllas.
Tidigare var det nödvändigt att dra gränser runt områden i en viss riktning (medurs eller moturs) för att säkerställa att informationen återgavs korrekt - det är inte längre nödvändigt.
Presentation
När de ritas ritas mindre ytor i allmänhet "ovanpå" större ytor, vilket säkerställer att en liten skog i en stor park framstår som en skog i en park.
Men i situationer där det faktiskt finns hål i den större delen, som till exempel med en gräsröjning i en skog, bör multipolygoner användas för att explicit specificera t.ex. glänta i skogen och definiera gräsytan i den gläntan separat.
Exempel
Enkelt område
I det här exemplet definieras en sjö av en stängd väg där den sista noden är lika med den första på vägen. Användningen av natural=water (naturligt|vatten) innebär {area=yes (område=ja). Observera att det inte är möjligt att beskriva sjöytor med öar eller holmar på detta sätt, eftersom slutna vägar per definition inte kan ha hål.
<way id="4876027" timestamp="2008-03-12T07:59:11Z" user="MichaelCollinson">
<nd ref="31492372"/>
<nd ref="31492338"/>
<nd ref="31492370"/>
<nd ref="31492371"/>
<nd ref="31492372"/>
<tag k="natural" v="water"/>
<tag k="name" v="Spegeldammen"/>
</way>
Multipolygonarea
Områden kan också definieras med relation:multipolygon som en uppsättning sätt som definierar en eller flera yttre gränser, och eventuellt noll eller flera inre gränser ('hål'). I exemplet nedan finns en yttre gräns definierad av ett enda sätt, och två sätt som inre:
Enbart från datafragmentet kan vi inte säga om dessa är det
- två hål (båda vägarna är stängda, övre bilden till höger) eller
- ett hål (båda inre sätten sammanlänkade bildar en stängd väg, nedre bilden till höger)
Detta löses genom att titta på data för #8125153 respektive #8125154.
<relation id="12" timestamp="2008-12-21T19:31:43Z" user="kevjs1982" uid="84075">
<member type="way" ref="2878061" role="outer"/> <!-- picture ref="1" -->
<member type="way" ref="8125153" role="inner"/> <!-- picture ref="2" -->
<member type="way" ref="8125154" role="inner"/> <!-- picture ref="3" -->
<member type="way" ref="3811966" role=""/> <!-- tom roll producerar
en varning; undvika detta; de flesta program arbetar runt det genom att beräkna
en roll, som är dyrare än att ha en uppsättning explicit;
visas inte i exempelbilderna till höger -->
<tag k="type" v="multipolygon"/>
</relation>
Taggar som antyder områdesstatus
Områden kan skapas explicit med multipolygoner eller genom att lägga till area=yes (område=ja), men flera taggar på stängt sätt antyder också att det är ett område - eller inte. Till exempel betyder {landuse=forest (landandvänding=skog) tydligt trädtäckt område, inte rad med träd. Medan natural=tree_row på ett stängt sätt tydligt betyder att det är en ring av träd.
area=no kan användas för att explicit åsidosätta standardantaganden, den är användbar i vissa sällsynta fall, t.ex. bänk mappad som en linje som bildar en stängd väg (se exempel exempel) .
Olika programvarubearbetande OSM-taggar kommer att ha sina egna listor som kan skilja sig åt subtilt, till stor del beroende på olika sätt hur dessa listor används.
- JOSM - has AreaTags function
- StreetComplete - IS_AREA_EXPR
- iD - osmlab/id-area-keys/blob/main/areaKeys.json GitHub (nycklar listar vad som anses vara ett område, listade värden är undantag från sådana regler. Så
"military": {"trench": true},")
betyder att alla taggar med military=* betraktas som områdestaggar, med undantag för military=trench). - Osmtogeojson - _isPolygonFeature function
- OSHDB - GIScience/oshdb/blob/master/oshdb-util/src/main/resources/json/polygon-features.json GitHub
- GDAL PBF driver - https://github.com/OSGeo/gdal/blob/master/data/osmconf.ini#L7
- https://github.com/osmcode/osmium-surplus/blob/master/filter-patterns/polygon-tags
- Se även: Overpass API/Areas
Observera att bearbetningen är komplicerad och sannolikt kommer att gå sönder om flera objekt med ett geometrielement representeras. Till exempel, att representera både lekplats och vägg runt en lekplats på ett element (barrier=wall (barriär|vägg) och leisure=playground (fritid|lekplats)) kommer att orsaka problem vid försök att återge vägg som ytor. Se till exempel fallet med en standardkartstil.
Se även
- Framtiden för områden
- Overpass turbo/Polygon Features - implementeringen i Overpass turbo kan vara användbar som utgångspunkt för utvecklare
- area=* - Används för att markera att en specifik funktion är ett generellt område (används endast för objekt med slutna vägar, används inte för noder, öppna vägar och relationer).
|