{"fi":"# Bikeparkin ja reittien lisääminen\n\nBikeparkin lisääminen Bikeparkit.fi:hin vaatii kaksi osaa:\n\n- **OpenStreetMap (OSM)** — merkitse parkki ja reitit OSM:ään, jotta\n   Bikeparkit voi käyttää niiden geometriaa.\n- **Parkin manifesti** — kirjoita YAML-tiedosto, jotta parkki näkyy kartalla\n   oikeilla tiedoilla.\n\nOSM sisältää geometrian (reitit ja hissit). Manifesti yhdistää parkin\nOSM-relaatioon ja sisältää parkista näytettävät tiedot, kuten nimen, markkerin\nja verkkosivun.\n\n## OSM-tagit\n\n### Bikeparkin relaatio\n\nLuo bikeparkille relaatio:\n\n| Tagi       | Arvo                      |\n| ---------- | ------------------------- |\n| `type`     | `site`                    |\n| `site`     | `bike_park`               |\n| `leisure`  | `bike_park` (valinnainen) |\n| `name`     | Parkin nimi               |\n| `website`  | Parkin URL                |\n| `operator` | Ylläpitäjän nimi          |\n| `seasonal` | `summer` (valinnainen)    |\n\nLisää jäseniksi kaikki reittiviivat, reittirelaatiot ja hissit.\n\n### Reittirelaatiot\n\nKäytä reittirelaatiota, kun reitti koostuu useasta viivasta:\n\n| Tagi    | Arvo                        |\n| ------- | --------------------------- |\n| `type`  | `route`                     |\n| `route` | `mtb`                       |\n| `name`  | Reitin nimi                 |\n| `ref`   | Reitin numero (valinnainen) |\n\n### Reittiviivat\n\nMerkitse jokainen reittiviiva näin:\n\n| Tagi             | Arvo / huomiot                                  |\n| ---------------- | ----------------------------------------------- |\n| `highway`        | `path`                                          |\n| `name`           | Reitin nimi                                     |\n| `mtb:scale:imba` | IMBA-vaikeustaso (suositus bikeparkeille)       |\n| `bicycle`        | `designated`, `yes` tai `customers`             |\n| `oneway`         | `yes` (jos reitti on fyysisesti yksisuuntainen) |\n| `mtb:type`       | `downhill`, `connection` jne. (valinnainen)     |\n\nKäytä bikepark-reiteillä ensisijaisesti `mtb:scale:imba`-tagiä ja\nluonnonreiteillä tarvittaessa `mtb:scale`-tagiä. Jos molemmat ovat käytössä,\nsäilytä molemmat: ne tarkoittavat eri asioita.\n\nPuuttuva tai ei-numeerinen arvo tarkoittaa **tuntematonta**.\n\n### Reittien värit\n\nBikeparkit käyttää seuraavaa muunnosta kelvollisille numeerisille arvoille.\nVärit ovat käyttöliittymän värejä, eivät OSM-tagejä:\n\n| Lähdetagit       | Näytön lähde | Näytön väri                                                                            |\n| ---------------- | ------------ | -------------------------------------------------------------------------------------- |\n| `mtb:scale:imba` | IMBA         | • `0`–`1`: 🟢 vihreä<br>• `2`: 🔵 sininen<br>• `3`: 🔴 punainen<br>• `4`: ⚫ musta         |\n| `mtb:scale`      | Yleinen MTB  | • `0`–`1`: 🟢 vihreä<br>• `2`: 🔵 sininen<br>• `3`–`4`: 🔴 punainen<br>• `5`–`6`: ⚫ musta |\n| Molemmat tagit   | IMBA         | Käytetään IMBA-listaa; arvoja ei yhdistetä tai muunneta                                |\n| Ei kumpaakaan    | Tuntematon   | ⚪ Neutraali harmaa ja katkoviiva                                                       |\n\nJos lähdearvot ovat ristiriidassa, tulos jää tuntemattomaksi tai vaatii\ntarkistuksen. `mtb:scale:uphill`, `mtb:type`, kulkuoikeus- ja suuntatagit eivät\nvaikuta alamäkireitin väriin.\n\nPidä `mtb:scale:imba` ja `mtb:scale` erillisinä. IMBA on ensisijainen\ntarkoitukseen rakennetuilla bikepark-reiteillä, kun taas `mtb:scale` kuvaa\nyleistä MTB-vaikeutta.\n\n### Hissit\n\nMerkitse hissit `aerialway`-tagilla reittiviivoina. Lisää hissille tunnettu nimi `name`-tagilla.\n\n- `aerialway`: hissin tyyppi alla olevan listan mukaan\n- `name`: hissin nimi, jos sillä on nimi\n\nBikeparkit tukee seuraavia `aerialway`-arvoja:\n\n| Arvo           | Merkitys     |\n| -------------- | ------------ |\n| `chair_lift`   | Tuolihissi   |\n| `gondola`      | Gondoli      |\n| `t-bar`        | Ankkurihissi |\n| `j-bar`        | Sompahissi   |\n| `rope_tow`     | Naruhissi    |\n| `magic_carpet` | Mattohissi   |\n\nMuu tai tyhjä `aerialway`-arvo näytetään tuntemattomana hissinä.\n\n### Vaikeusasteikot\n\n#### IMBA-asteikko (suositus bikeparkeille)\n\n| IMBA | Merkitys                     |\n| ---- | ---------------------------- |\n| 0    | Helpoin (vihreä ympyrä)      |\n| 1    | Helppo (sininen neliö)       |\n| 2    | Keskivaikea (musta timantti) |\n| 3    | Vaikea (tuplamusta timantti) |\n| 4    | Erittäin vaikea              |\n\n#### Suomalaiset värit ja IMBA\n\nSuomalaiset vihreä, sininen, punainen ja musta ovat ylläpitäjäkohtaisia\nluokituksia, eivät OSM-standardeja. Älä merkitse niitä OSM:ään. Käytä tätä\ntaulukkoa apuna, kun valitset `mtb:scale:imba`-arvon:\n\n| Suomalainen väri | IMBA | Huomiot                                                                                          |\n| ---------------- | ---- | ------------------------------------------------------------------------------------------------ |\n| Vihreä           | 0–1  | Aloittelijaystävälliset flow-reitit                                                              |\n| Sininen          | 2    | Keskivaikea, rullattavat ominaisuudet                                                            |\n| Punainen         | 2–3  | Ei tarkkaa vastinetta. Valitse reitin todellisia teknisiä ominaisuuksia parhaiten vastaava arvo. |\n| Musta            | 3–4  | Keskivaikeasta erittäin vaikeaan; jyrkkä, altis tai suuria hyppyjä                               |\n\nÄlä muunna väriä kaavamaisesti, vaan arvioi reitin todelliset tekniset\nominaisuudet.\n\n## Parkin manifesti\n\nManifesti on YAML-tiedosto, joka yhdistää parkin OSM-relaatioon ja sisältää\nkartalla näytettävät tiedot. Käytä relaation tunnistetta `1` vain, jos oikeaa\nrelaatiota ei vielä tunneta. Se näyttää parkin kartalla, mutta merkitsee sen\nkeskeneräiseksi. Luo manifesti [`bikeparkit.fi`](https://github.com/Bikeparkit/bikeparkit.fi)-repoon.\n\n### Pakolliset kentät\n\n| Kenttä          | Tyyppi   | Kuvaus                                                                   |\n| --------------- | -------- | ------------------------------------------------------------------------ |\n| `schemaVersion` | `number` | Tällä hetkellä `1`                                                       |\n| `id`            | `string` | Pienikirjaiminen, URL-turvallinen ja yksilöllinen                        |\n| `name`          | `string` | Näyttönimi                                                               |\n| `type`          | `string` | `bike_park` tai `trail_center`                                           |\n| `osmRelationId` | `number` | Parkin OSM-relaation tunniste; `1` voi käyttää völiaikaisena tuninsteena |\n| `marker`        | `object` | `{ lon, lat }` -markkerin sijainti                                       |\n\n### Valinnaiset kentät\n\n| Kenttä     | Tyyppi   | Kuvaus                                                               |\n| ---------- | -------- | -------------------------------------------------------------------- |\n| `website`  | `string` | Parkin virallinen URL                                                |\n| `status`   | `string` | Tila: `open` tai `closed`, ei tarkoita aukioloa vaan toiminnan tilaa |\n| `operator` | `string` | Ylläpitäjän nimi                                                     |\n| `zoom`     | `number` | Kartan zoomaustaso (10–18) markkeriin siirryttäessä                  |\n\n### Esimerkkimanifesti\n\n```yaml\nschemaVersion: 1\nid: levi\nname: Levi Bike Park\ntype: bike_park\nosmRelationId: 21143350\nmarker:\n  lon: 24.8494\n  lat: 67.7851\nwebsite: https://www.levi.fi/pyoraily/bike-park/\noperator: Levi Ski Resort\nzoom: 13\n```\n\n`id`-arvon on vastattava tiedostonimeä. Tallenna tämä nimellä\n`parks/levi.yaml`.\n\n## Viittaus\n\nBikeparkit käyttää OpenStreetMap-dataa [Open Data Commons Open Database\nLicense (ODbL)](https://opendatacommons.org/licenses/odbl/) -lisenssin alla.\nMuokattua dataa julkaisevan on ilmoitettava:\n\n> © OpenStreetMap contributors\n","en":"# Add a bike park and its trails\n\nA bike park contribution to Bikeparkit requires two parts:\n\n- **OpenStreetMap (OSM)** — tag the park and trails in OSM so Bikeparkit can\n  use their geometry.\n- **Park manifest** — write a YAML file so the park appears on the map with\n  the correct information.\n\nOSM contains the geometry (trails and lifts). The manifest connects the park\nto its OSM relation and contains display information such as the name, marker,\nand website.\n\n## OSM tagging\n\n### Bike park container\n\nCreate a site relation for the bike park:\n\n| Tag        | Value                  |\n| ---------- | ---------------------- |\n| `type`     | `site`                 |\n| `site`     | `bike_park`            |\n| `leisure`  | `bike_park` (optional) |\n| `name`     | Park name              |\n| `website`  | Park URL               |\n| `operator` | Operator name          |\n| `seasonal` | `summer` (optional)    |\n\nAdd all trail ways, route relations, and lifts as members.\n\n### Trail ways\n\nTag each trail way:\n\n| Tag              | Value / notes                              |\n| ---------------- | ------------------------------------------ |\n| `highway`        | `path`                                     |\n| `name`           | Trail name                                 |\n| `mtb:scale:imba` | IMBA difficulty (preferred for bike parks) |\n| `bicycle`        | `designated`, `yes`, or `customers`        |\n| `oneway`         | `yes` (when physically restricted)         |\n| `mtb:type`       | `downhill`, `connection`, etc. (optional)  |\n\nUse `mtb:scale:imba` for bike park trails and, when needed, `mtb:scale` for\nnatural trails. If both are used, preserve both: they describe different\nthings.\n\nMissing, empty, or non-numeric difficulty means **unknown**. A value from the\nother scale does not correct an invalid value.\n\n### How trail colors are displayed\n\nBikeparkit uses the following display-only mapping for valid numeric source\nvalues. The colors are UI colors, not OSM tags:\n\n| Source tags      | Display source | Display color                                                                 |\n| ---------------- | -------------- | ----------------------------------------------------------------------------- |\n| `mtb:scale:imba` | IMBA           | • `0`–`1`: 🟢 green<br>• `2`: 🔵 blue<br>• `3`: 🔴 red<br>• `4`: ⚫ black         |\n| `mtb:scale`      | General MTB    | • `0`–`1`: 🟢 green<br>• `2`: 🔵 blue<br>• `3`–`4`: 🔴 red<br>• `5`–`6`: ⚫ black |\n| Both tags        | IMBA           | Use the IMBA list above; values are not blended or converted                  |\n| Neither tag      | Unknown        | • ⚪ neutral gray<br>• Unknown/dashed treatment                                |\n\nThese colors are for the Bikeparkit interface only, not OSM tags. An empty,\nnon-numeric, or out-of-range value is invalid and results in unknown; it is not\nrescued by another scale. Conflicting source values remain unknown or require\nreview.\n`mtb:scale:uphill`, `mtb:type`, access tags, and direction tags do not select\nthe downhill display color.\n\nKeep `mtb:scale:imba` and `mtb:scale` as separate OSM source tags. IMBA is\npreferred for purpose-built bike-park trails, while `mtb:scale` describes\ngeneral MTB difficulty.\n\n### Trail route relations\n\nUse a route relation when a trail spans multiple ways:\n\n| Tag     | Value                   |\n| ------- | ----------------------- |\n| `type`  | `route`                 |\n| `route` | `mtb`                   |\n| `name`  | Trail name              |\n| `ref`   | Trail number (optional) |\n\n### Lifts\n\nMap lifts as normal `aerialway=*` features, not as trail ways. Add the lift's\nknown name with the `name` tag.\n\n| Tag         | Value / notes                 |\n| ----------- | ----------------------------- |\n| `aerialway` | Lift type from the list below |\n| `name`      | Lift name, when it has one    |\n\nBikeparkit supports these `aerialway` values:\n\n| Value          | Meaning      |\n| -------------- | ------------ |\n| `chair_lift`   | Chair lift   |\n| `gondola`      | Gondola      |\n| `t-bar`        | T-bar        |\n| `j-bar`        | J-bar        |\n| `rope_tow`     | Rope tow     |\n| `magic_carpet` | Magic carpet |\n\nAn unsupported, missing, or empty `aerialway` value is shown as an unknown\nlift.\n\n## Difficulty scales\n\n### IMBA scale (preferred for bike parks)\n\n| IMBA | Meaning                          |\n| ---- | -------------------------------- |\n| 0    | Easiest (green circle)           |\n| 1    | Easy (blue square)               |\n| 2    | Moderate (black diamond)         |\n| 3    | Difficult (double black diamond) |\n| 4    | Extremely difficult              |\n\n### Finnish colors and IMBA\n\nFinnish green, blue, red, and black are operator-specific classifications, not\nOSM standards. Do not tag them in OSM. Use this table when choosing the\n`mtb:scale:imba` value:\n\n| Finnish color | IMBA  | Notes                                                                                          |\n| ------------- | ----- | ---------------------------------------------------------------------------------------------- |\n| Green         | 0 – 1 | Beginner-friendly flow trails                                                                  |\n| Blue          | 2     | Intermediate, rollable features                                                                |\n| Red           | 2 – 3 | No exact equivalent. Choose the value that best matches the trail's actual technical features. |\n| Black         | 3 – 4 | Intermediate to extremely difficult; steep, exposed, or large jumps                            |\n\nDo not convert colors mechanically. Assess the trail's actual technical\nfeatures.\n\n## Park manifest\n\nThe manifest is a YAML file that connects the park to its OSM relation and\ncontains the information shown on the map. Use relation id `1` only when the\nreal relation is not yet known. It shows the park on the map but marks it as\nincomplete. Create the manifest in the\n[`bikeparkit.fi`](https://github.com/Bikeparkit/bikeparkit.fi) repository.\n\n### Required fields\n\n| Field           | Type     | Description                                                       |\n| --------------- | -------- | ----------------------------------------------------------------- |\n| `schemaVersion` | `number` | Currently `1`                                                     |\n| `id`            | `string` | Lowercase, URL-safe, and unique                                   |\n| `name`          | `string` | Display name                                                      |\n| `type`          | `string` | `bike_park` or `trail_center`                                     |\n| `osmRelationId` | `number` | Park's OSM relation id; use `1` only as an incomplete placeholder |\n| `marker`        | `object` | `{ lon, lat }` marker position                                    |\n\n### Optional fields\n\n| Field      | Type     | Description                                      |\n| ---------- | -------- | ------------------------------------------------ |\n| `website`  | `string` | Official URL for the park                        |\n| `status`   | `string` | Status: `open` or `closed`                       |\n| `operator` | `string` | Operator name                                    |\n| `zoom`     | `number` | Map zoom level (10–18) when moving to the marker |\n\n### Example manifest\n\n```yaml\nschemaVersion: 1\nid: levi\nname: Levi Bike Park\ntype: bike_park\nosmRelationId: 21143350\nmarker:\n  lon: 24.8494\n  lat: 67.7851\nwebsite: https://www.levi.fi/pyoraily/bike-park/\noperator: Levi Ski Resort\nzoom: 13\n```\n\nThe `id` must match the filename. Save this as `parks/levi.yaml`.\n\n## Attribution\n\nBikeparkit uses OpenStreetMap data under the [Open Data Commons Open\nDatabase License (ODbL)](https://opendatacommons.org/licenses/odbl/).\nAnyone editing or republishing derived data must include:\n\n> © OpenStreetMap contributors\n"}