Datatypes

Metadata

Name (metadata.name)

the name of the guidebook

Examples

Valid values for a Metadata's name attribute.

"New River Gorgeous"
...

Description (metadata.description)

a sentence or two about what the guidebook covers.

Examples

Valid values for a Metadata's description attribute.

"all the crashpad-protectable boulders in Joshua Tree"
for a generic Joshua Tree Bouldering guide
"The highest quality, most accessible routes in Yosemite"
for a generic Select Yosemite Climbs book

Contributors (metadata.contributors)

people who have contributed to the catalog

Examples

Valid values for a Metadata's contributors attribute.

[
  "Jane Doe",
  "John Doe"
]
simple, married couple authors
[
  "Name "
]
if email is desirable, use RFC 5322
[
  "Bob (maintainer 2010-present)",
  "Sally (maintainer 1999-2010)",
  "Joe",
  "Glenda"
]
mention all contibutors, maintainers at the top with notes.

UUID (metadata.uuid)

A universally unique identifier. Under nearly all circumstances, this should be autogenerated and never changed.

Examples

Valid values for a Metadata's uuid attribute.

"c5ae7ddd-243d-47bf-8a6e-aa456d2f54c2"
[no description]
"4c7efeb1-aa50-4ddc-ae6d-84a908ae8a15"
[no description]

See Also

License (metadata.license)

a SPDX identifier for the license of the catalog

Examples

Valid values for a Metadata's license attribute.

"CC-BY-4.0"
Indicates the Creative Commons Attribution 4.0 International license. lets anyone share and adapt a work for any purpose, including commercially, as long as they give appropriate credit, link to the license, and indicate if changes were made.

See Also

Climb

Name (climb.name)

the name of the climb

Examples

Valid values for a Climb's name attribute.

"Mañana"
[no description]
"Biographie"
[no description]

Alternate Names (climb.alternate_names)

A list of alternate names for the climb. When there is history, confusion, or disagreement in the community, alternate names keep climbs discoverable and reinforce a common idea moving forward. This issue comes up most frequently when different guides use different names or more rarely more direct naming conflicts (e.g., , Realization vs. Biographie Rastaman SDS vs. Lucid Dreaming Veritas Right Project becoming Hypnotized Minds)

Examples

Valid values for a Climb's alternate_names attribute.

[
  "Realization"
]
a non-empty list of names for "Biographie"
[
  "S.S.S.",
  "SSS",
  "Shipley's Shivering Shimmy"
]
a non-empty list of names for Triple S" at Seneca

See Also

Project Status (climb.project_status)

This indicates whether this is a known climb awaiting an ascent. for areas where ethics support the idea of closed/reserved projects, this should include relevant info. it's a good idea to make the first word "open" or "closed". null is invalid, presence of the this attribute implies project status and that status should be clarified

Examples

Valid values for a Climb's project_status attribute.

"open"
the climb is established as a project but anyone may attempt it
"closed for equipper John Smith until 2055"
recommended pattern for closed projects gives the community context to respect the reservation. It identifies who, why, and adds a limit (however distant).
"closed"
the climb hasn't been redpointed, but attempts from the community are discouraged

Rating (climb.rating)

a concise summary of what it takes to climb a route or problem.

Examples

Valid values for a Climb's rating attribute.

{
  "difficulty": "5.14c",
  "style": "sport"
}
Just Do It in Smith Rocks, OR
{
  "difficulty": "E11"
}
Rhapsody on Dumbarton Rock in Scotland
{
  "difficulty": "5.7",
  "protection": "R",
  "style": "trad"
}
Snake Dike on Half Dome in Yosemite
{
  "style": "boulder"
}
a boulder-problem project with no established difficulty rating or relevant safety rating
{
  "difficulty": "V11",
  "protection": "X",
  "style": "boulder"
}
Ambrosia on Bishop's Grandpa Peabody boulder

Context

these are encapsulated into a single unit becausue they can't be cleanly separated. protection always depends on the style of climbing, and difficlty grading systems like the aid scales and the british adjectival grade also take protection into account Furthermore, when a certain climb is done in a different discipline, (aiding vs freeing the nose) (top roping or bouldering too big to flail) all three of these aspect tend to change together.

See Also

Location (climb.location)

The GPS location for the start of climb. In addition to the longitude and latitude (in decimal degrees), an accuracy measure (in meters) can specify an margin of error for the coordinates

Examples

Valid values for a Climb's location attribute.

{
  "latitude": 37.728367,
  "longitude": -119.637183,
  "meter_radius": 5
}
The Nose in Yosemite

See Also

Length (climb.length)

Length answers a single question about a climb: how far does a climber travel from start to finish? Length can be imagined as if a climber dragged a tape measure along the wall from start to finish. This is not the height of a climb; a 7 meter traverse that stays a few feet off the ground has a length of 7 meters.

Examples

Valid values for a Climb's length attribute.

{
  "lower_estimate": 20,
  "upper_estimate": 25,
  "unit": "meters"
}
a rough guess at a climb
{
  "lower_estimate": 30,
  "upper_estimate": 30,
  "unit": "feet"
}
an accurate of a short route

See Also

Steepness (climb.steepness)

this respresents the steepness of the wall as the climber progresses. this is a rough sketch of the climb and is treated stepwise. the "from" value can be anything from 0 to 1 and seach segment must be in order

Examples

Valid values for a Climb's steepness attribute.

[
  {
    "from": 0.0,
    "degrees_overhung": 45
  },
  {
    "from": 0.1,
    "degrees_overhung": 25
  },
  {
    "from": 0.25,
    "degrees_overhung": 10
  },
  {
    "from": 0.8,
    "degrees_overhung": -5
  }
]
starts steep, eases up to slightly overhung, and finishes as slab
[
  {
    "from": 0,
    "degrees_overhung": 0
  },
  {
    "from": 0.75,
    "degrees_overhung": 90
  },
  {
    "from": 0.8,
    "degrees_overhung": 0
  }
]
perfectly vertical to a perfect roof and back to vertical
[
  {
    "from": 0,
    "degrees_overhung": 5
  }
]
slightly overhung the whole way

Terrain (climb.terrain)

this respresents the type of rock climbing as a climber progresses the "from" value increases from 0 (the start of the climb) towards 1 (the end of the climb) and seach segment must be in order

Examples

Valid values for a Climb's terrain attribute.

[
  {
    "from": 0,
    "description": "crack :: 3inches"
  }
]
a continuous 3" crack from start to finish
[
  {
    "from": 0.0,
    "description": "pockets"
  },
  {
    "from": 0.25,
    "description": "jugs"
  },
  {
    "from": 0.75,
    "description": "crimps"
  }
]
an imaginary climb that you might find at The Red
[
  {
    "from": 0.0,
    "description": "corner :: right-facing :: 1 inch"
  },
  {
    "from": 0.5,
    "description": "crack :: 0.5 inches"
  },
  {
    "from": 0.6,
    "description": "seam"
  },
  {
    "from": 0.8,
    "description": "face"
  }
]
a disappearing corner

Tags (climb.tags)

a tag is a single word or phrase to highlight _something unique_ about the climb. that isn't covered by other features. In many bouldering areas, it might be worth having a `highball` tag. In Bishop though, it might be better to have `fluttering-heart` field. useful labels help climbers identify climbs with unique aspects.

Examples

Valid values for a Climb's tags attribute.

[
  "manufactured"
]
a climb with chipping or glued-on holds
[
  "area classic",
  "crimpy"
]
for Slash And Burn at the New River Gorge
[
  "classic",
  "exposed"
]
for Zoo View at Moore's Wall in North Carolina
[
  "top-out crux",
  "bad fall",
  "slick"
]
these imaginary tags describe an usettling problem

Notes (climb.notes)

plain text descriptions about various aspects of the climb. notes are divided into topics for easy organization and simple inclusion and exclusion in different publishing formats.

Examples

Valid values for a Climb's notes attribute.

[
  {
    "topic": "elevator pitch",
    "content": "unless you love unpleasant choss, don't climb it"
  }
]
must be a terrible climb
[
  {
    "topic": "Elevator Pitch",
    "content": "non-stop quality climbing with a stellar view and a rich history makes this one of Yosemite's greatest routes"
  },
  {
    "topic": "FFA Story",
    "content": "It was May 1975. John Bachar, John Long, and Ron Kauk were ..."
  }
]
for Astroman
[
  {
    "topic": "Elevator Pitch",
    "content": "a beautiful roof crack"
  },
  {
    "topic": "Approach",
    "content": "this boulder is hard to find and looks tiny from the front ... "
  }
]
an imaginary boulder

Fields (climb.fields)

a set of fields and their values. fields are useful to describe the climb in a slightly-standard way.

Examples

Valid values for a Climb's fields attribute.

{
  "sun": "all day",
  "rain": "ok in light rain",
  "descent": "walk off"
}
an imaginary climb

History (climb.history)

Most commonly this will be a entry with the first free ascent. Depending on the area or history, the first ascent on aid, top-rope, lead, or any other significant first could be worth mentioning. Noting "FA" or "FFA" is almost always redundant and sometimes incorrect when earilier ascents are discovered.

Examples

Valid values for a Climb's history attribute.

[
  {
    "date": "1991-09-14",
    "event": "FA",
    "party": "Wolfgang Güllich"
  }
]
Action Directe, Frankenjura
[
  {
    "date": "1989",
    "event": "Started Equipping",
    "party": "Porter Jarrard"
  },
  {
    "date": "1997",
    "event": "Lead",
    "party": "Brian McCray"
  },
  {
    "date": "2008",
    "event": "Lead, onsight",
    "party": "Chris Sharma"
  },
  {
    "date": "2010",
    "event": "Lead",
    "party": "Porter Jarrard"
  },
  {
    "date": "2010",
    "event": "Trad",
    "party": "Brent Perkins"
  }
]
Proper Soul, at the NRG. Note the community's progression on style, a visiting pro, and especially Jarrard's return 30 years after equipping to get an ascent. It builds a history more than giving credit or ownership.
[
  {
    "date": "1967",
    "event": "Aid",
    "party": "John Stannard"
  },
  {
    "date": "1970",
    "event": "Free",
    "party": "John Stannard"
  }
]
Foops, The Gunks
[
  {
    "date": "1989",
    "event": "equipped",
    "party": "Jean-Christophe Lafaille"
  },
  {
    "date": "199?",
    "event": "middle anchor added",
    "party": "Arnaud Petit"
  },
  {
    "date": "1996",
    "event": "climbed to middle anchor",
    "party": "Arnaud Petit"
  },
  {
    "date": "2001",
    "event": "FA",
    "party": "Chris Sharma"
  },
  {
    "date": "2010",
    "event": "lower boulder problem breaks"
  }
]
Biographie, Ceuse
[
  {
    "date": "1957",
    "event": "Aid, siege",
    "party": "Warren Harding, Mark Powell, Bill \"Dolt\" Feuerer"
  },
  {
    "date": "1960",
    "event": "Aid, continuous",
    "party": "Royal Robbins, Joe Fitschen, Chuck Pratt, and Tom Frost"
  },
  {
    "date": "1993",
    "event": "Free",
    "party": "Lynn Hill, Steve Sutton (belay)"
  },
  {
    "date": "2005",
    "event": "Free",
    "party": "Tommy Caldwell and Beth Rodden"
  },
  {
    "date": "2019-11",
    "event": "Free, ground up",
    "party": "Sébastien Berthe"
  }
]
The Nose, El Cap. Highlight style of ascent
[
  {
    "date": "1957",
    "event": "Aid",
    "party": "Warren Harding, Mark Powell, Bill \"Dolt\" Feuerer"
  },
  {
    "date": "1993",
    "event": "Free",
    "party": "Lynn Hill"
  }
]
The Nose, El Cap. Condensed

See Also

Resources (climb.resources)

Offers an opportunity for developers to record info about where to find further info.

Examples

Valid values for a Climb's resources attribute.

[
  {
    "title": "2012 Trip Report",
    "resource": "https://southernsierraclimber.blogspot.com/2012/12/blog-post.html",
    "description": "From Southern Sierra Climber, this offers the only well-documented ascent of this obscure route"
  }
]
Potential links for the East Face Route on Moro Rock in Sequoia National Park
[
  {
    "title": "FA Video by Ben May",
    "resource": "https://www.youtube.com/watch?v=_VtpZ9GtNP4"
  },
  {
    "title": "Third Ascent Video by Matt",
    "resource": "https://www.youtube.com/watch?v=QnYS1x9t16Y",
    "description": "shows alternative, much more dynamic, beta"
  }
]
a boulder problem in San Diego

UUID (climb.uuid)

A universally unique identifier. Under nearly all circumstances, this should be autogenerated and never changed.

Examples

Valid values for a Climb's uuid attribute.

"0cf19a54-4af9-44db-9de3-dfecb700c3ce"
[no description]
"6833840f-d801-43c6-a2d7-7da71a6ed1c8"
[no description]

See Also

Area

Name (area.name)

the primary name of the area.

Examples

Valid values for an Area's name attribute.

"Yosemite"
...
"Éléphant"
a Fontainebleau area

Alternate Names (area.alternate_names)

A list of other names that the area can go by. This can be important to reduce confusion and/or to respect historical names.

Examples

Valid values for an Area's alternate_names attribute.

[
  "Underworld Boulder"
]
for the Spragueasorus Boulder in Rumney
[
  "Manure Pile Buttress"
]
for what is now Ranger Rock in Yosemite

Location (area.location)

GPS coordinates for the boundary of the area. The first and last points of a polygon must be identical to form a ring (like GeoJSON and WKT), and the points should wind counterclockwise. These two rules are in place . The perimeter is a single ring. Unlike many geospatial polygon representations, an area doesn't contain holes and is not a multi-polygon.

Examples

Valid values for an Area's location attribute.

{
  "type": "approximation",
  "circle": {
    "longitude": -79.81768,
    "latitude": 39.63972,
    "meter_radius": 50
  }
}
The Mushroom boulder (Cooper's Rock) is a good candidate for approximation because the dense tree cover makes it hard to draw an exact perimeter
{
  "type": "perimeter",
  "polygon": [
    {
      "longitude": -105.37592,
      "latitude": 41.15422
    },
    {
      "longitude": -105.37543,
      "latitude": 41.15382
    },
    {
      "longitude": -105.37363,
      "latitude": 41.15396
    },
    {
      "longitude": -105.37249,
      "latitude": 41.15498
    },
    {
      "longitude": -105.3706,
      "latitude": 41.15579
    },
    {
      "longitude": -105.36977,
      "latitude": 41.15683
    },
    {
      "longitude": -105.37095,
      "latitude": 41.15749
    },
    {
      "longitude": -105.37333,
      "latitude": 41.15657
    },
    {
      "longitude": -105.37507,
      "latitude": 41.15552
    },
    {
      "longitude": -105.37592,
      "latitude": 41.15422
    }
  ]
}
The Nautilus is a perfect use-case for a perimeter. it's oblong and easy to outline with satellite imagery

Tags (area.tags)

a tag is a single word or phrase to highlight _something unique_ about the area. that isn't covered by other features. useful labels help climbers identify areas with unique aspects.

Examples

Valid values for an Area's tags attribute.

[
  "beginner friendly",
  "simple approach"
]
for Sandstonia at the New River Gorge
[
  "moderate approach",
  "good for groups"
]
this imaginary distant is less frequently traveled and has many routes close to one another
[
  "frequently crowded",
  "beginner friendly"
]
for The Black Corridor at Second Pullout in Red Rock

Notes (area.notes)

plain text descriptions about various aspects of the area. notes are divided into topics for easy organization and simple inclusion and exclusion in different publishing formats.

Examples

Valid values for an Area's notes attribute.

[
  {
    "topic": "elevator pitch",
    "content": "unless you love choss and poison ivy and getting lost don't bother hiking out"
  }
]
must be a terrible area
[
  {
    "topic": "Elevator Pitch",
    "content": "an excellent winter climbing destination in North Carolina. The granite/gneiss here provides any style of climbing you could ask for"
  },
  {
    "topic": "History",
    "content": "The first routes were established in the early 1970s ..."
  }
]
for Rumbling Bald in North Carolina
[
  {
    "topic": "Elevator Pitch",
    "content": "Solid, sticky rock with all clibing over 8,000'"
  },
  {
    "topic": "History",
    "content": "Developed almost entirely by Mike and Tommy Caldwell [...]"
  },
  {
    "topic": "Approach",
    "content": "expect many turns: from the town of Drake, [...]"
  }
]
The Monastery in Colorado

Fields (area.fields)

a set of fields and their values. these names describe the area.

Examples

Valid values for an Area's fields attribute.

{
  "orientation": "north east"
}
TODO: explain this
{
  "sun": "all day"
}
TODO: explain this

UUID (area.uuid)

A universally unique identifier. Under nearly all circumstances, this should be autogenerated and never changed.

Examples

Valid values for an Area's uuid attribute.

"93ef6423-2bf4-4b5b-929c-91f89e03d943"
[no description]
"580f443e-9593-4dd0-8bad-857eec248978"
[no description]

See Also

Photo

Tags (photo.tags)

a tag is a single word or phrase to highlight _something unique_ about the photo that isn't covered by other attributes. tags are well-suited to a photo's purpose, condition, or capture context. for properties that apply to most photos in a catalog and/or take a range of values, prefer `fields`. useful labels help authors and consumers find photos to fit a specific need.

Examples

Valid values for a Photo's tags attribute.

[
  "overview",
  "drone"
]
a wide shot of an area, captured from the air (important because it's a view a climber can never see)
[
  "historical"
]
a photo kept for record rather than current reference, e.g., a wall before a rockfall
[
  "needs-reshoot",
  "low-quality"
]
a placeholder photo flagged for replacement
[
  "topo"
]
this probably _shouldn't_ be used because in most catalogs, because it's the default assumption for stele1 photos

Fields (photo.fields)

a set of fields and their values. fields are useful to describe the climb in a slightly-standard way.

Examples

Valid values for a Photo's fields attribute.

{
  "captured from": "air (via drone)",
  "credit": "Jane Doe"
}
credit to the photographer and info about where the photo was taken from

Climb Layers (photo.climb_layers)

a collection of lines it's suggested that the first point be the start of the climb

Examples

Valid values for a Photo's climb_layers attribute.

[
  {
    "climb_uuid": "0d3fdc6b-a4c3-4036-afe6-ed524a1b44f7",
    "path": [
      {
        "top_offset": 0.9,
        "left_offset": 0.1
      },
      {
        "top_offset": 0.3,
        "left_offset": 0.1
      }
    ]
  },
  {
    "climb_uuid": "b3422197-b4c4-4b07-bcdd-74a77d787941",
    "path": [
      {
        "top_offset": 0.9,
        "left_offset": 0.4
      },
      {
        "top_offset": 0.2,
        "left_offset": 0.4
      }
    ]
  },
  {
    "climb_uuid": "a4f519cb-4aeb-4814-aa52-4cdcc292402e",
    "path": [
      {
        "top_offset": 0.9,
        "left_offset": 0.7
      },
      {
        "top_offset": 0.1,
        "left_offset": 0.7
      }
    ]
  }
]
[no description]
[
  {
    "climb_uuid": "080c90a0-adbb-4a42-9bed-3008166530f9",
    "path": [
      {
        "top_offset": 0.1,
        "left_offset": 0.05
      },
      {
        "top_offset": 0.9,
        "left_offset": 0.05
      },
      {
        "top_offset": 0.9,
        "left_offset": 0.5
      }
    ]
  },
  {
    "climb_uuid": "8aa562cc-85c4-4f3d-a585-a7e31b546323",
    "path": [
      {
        "top_offset": 0.05,
        "left_offset": 0.75
      },
      {
        "top_offset": 0.8,
        "left_offset": 0.75
      }
    ]
  }
]
[no description]

Area Layers (photo.area_layers)

a collection of polygons that identify areas on a photo It's suggested that the first point be on or near the approach trail, and that the points wind counterclockwise. first and last points are be identical, enforcing a ring

Examples

Valid values for a Photo's area_layers attribute.

[
  {
    "area_uuid": "c3056703-ee36-4312-8913-4ce8b444476f",
    "polygon": [
      {
        "top_offset": 0.9,
        "left_offset": 0.1
      },
      {
        "top_offset": 0.3,
        "left_offset": 0.5
      },
      {
        "top_offset": 0.9,
        "left_offset": 0.9
      },
      {
        "top_offset": 0.9,
        "left_offset": 0.1
      }
    ]
  }
]
[no description]

Capture Location (photo.capture_location)

The GPS coordinates for where the photo was taken from. It's useful to initialize this with an coordinates from an images EXIF data when available

Examples

Valid values for a Photo's capture_location attribute.

{
  "longitude": -121.142848,
  "latitude": 44.365012,
  "meter_radius": 1
}
A photo showing much of smith rocks, would be taken from across the river

See Also

Capture Time (photo.capture_time)

date, time or both

Examples

Valid values for a Photo's capture_time attribute.

"2000-02-01"
a photo taken on the first day of February 2000

Context

This can be useful for in giving a hint about shade and vegitation at certain times of the day or year.

See Also

UUID (photo.uuid)

A universally unique identifier. Under nearly all circumstances, this should be autogenerated and never changed.

Examples

Valid values for a Photo's uuid attribute.

"b644e46c-e690-4af0-ae25-80230ea23de1"
[no description]
"66a0bb80-1364-478c-8800-487d6d2efb86"
[no description]

See Also

parking

Name (parking.name)

is there an official name for this parking area? if not then a concise, descriptive name works fine.

Examples

Valid values for a parking's name attribute.

"Camp 4 Day Use Parking"
a section of the Camp 4 lot that doesn't allow overnight parking

See Also

Location (parking.location)

a point for the entrance to the parking area.

Examples

Valid values for a parking's location attribute.

{
  "longitude": -74.200394,
  "latitude": 41.735855
}
the main parking area for the most popular climbing at The Gunks

Description (parking.description)

info about the parking area: - does it close at dusk? - are break-ins a concern? - do you need to pay? - is it hard to find? - is there a towing policy?

Examples

Valid values for a parking's description attribute.

"this is a school bus turnaround; do not use on the weekdays"
"a gravel strip on the side of the road. rarely maintained, frequently covered in trash"

Capacity (parking.capacity)

the number of cars that the parking can hold.

Examples

Valid values for a parking's capacity attribute.

200
a large parking area, like what you'd get for some of the bouldering areas in RMNP
5
a modest parking area
1
space to fit a single car, perhaps a small pullout at a local crag.

UUID (parking.uuid)

A universally unique identifier. Under nearly all circumstances, this should be autogenerated and never changed.

Examples

Valid values for a parking's uuid attribute.

"23ff1c9b-43a0-41ce-88f3-385d8736b176"
[no description]
"24a899f8-a1e1-4d6f-a066-c1a3424eb13b"
[no description]

See Also

approach

Name (approach.name)

is there an official name for this trail? if not then a concise, descriptive placeholder works fine.

Examples

Valid values for an approach's name attribute.

"Billy Goat Trail"
for the rocks around Great Falls (near Washington D.C.)

Description (approach.description)

The description should provide a concise overview that whould be relevant to someone using the approach: - is it a trail, access road, paved street, or something else? - what quality is the trail in? - it the approach quality unpredictable, e.g., does it wash out in heavy rain? does it get overgrown in the summer? - other noteworthy features...

Examples

Valid values for an approach's description attribute.

"don't even bother from May through August, the \"trail\" is just thick jungle"
[no description]

Path (approach.path)

A GPS path for the approach. This is a list of points

Examples

Valid values for an approach's path attribute.

[
  {
    "latitude": 44.3668,
    "longitude": -121.13623
  },
  {
    "latitude": 44.3672,
    "longitude": -121.13688
  },
  {
    "latitude": 44.36717,
    "longitude": -121.13726
  },
  {
    "latitude": 44.36697,
    "longitude": -121.13783
  },
  {
    "latitude": 44.3664,
    "longitude": -121.13804
  },
  {
    "latitude": 44.3664,
    "longitude": -121.13825
  },
  {
    "latitude": 44.36651,
    "longitude": -121.13823
  },
  {
    "latitude": 44.36642,
    "longitude": -121.13855
  },
  {
    "latitude": 44.3666,
    "longitude": -121.13849
  },
  {
    "latitude": 44.36742,
    "longitude": -121.13888
  },
  {
    "latitude": 44.36809,
    "longitude": -121.13928
  }
]
an approach trail at smith rocks

See Also

UUID (approach.uuid)

A universally unique identifier. Under nearly all circumstances, this should be autogenerated and never changed.

Examples

Valid values for an approach's uuid attribute.

"90c0ab19-b6ff-4645-b00c-0364042d77fe"
[no description]
"0393e141-7a63-44b2-95dc-4c5aa2410d93"
[no description]

See Also

On the Filesystem

stele1.json

machine-readable metadata for the specific stele1 catalog. Structured data describing the catalog as a whole. (follows the Metadata format)

stele1.txt

a human-oriented introduction to stele1 for someone who comes across the catalog without context. your tools should populate this with a file automatically. Add a README next to this file if you want a human-friendly intro tho the specific stele1 catalog.

climbs

contains a file for each climb

climbs/{climb.uuid}.json

a spec-conforming json object for a climb

areas

contains a file for each area

areas/{area.uuid}.json

a spec-conforming json object for an area

approaches

contains a file for each approach

approaches/{approach.uuid}.json

a spec-conforming json object for an approach

parkings

contains a file for each parking

parkings/{parking.uuid}.json

a spec-conforming json object for a parking

photos

contains a file for each photo

photos/{photo.uuid}.json

a spec-conforming json object for a photo

photos/{photo.uuid}_image.{extension}

the raw photo data. filetype (e.g., JPEG, HEIF, PNG, GIF) and extension (e.g. .JPG, .jpg, .JPEG) support are left to the implementation

extensions

contains a directory for each extension used in the catalog

extensions/{extension.name}

A self-contained directory for everything related to an extension. Its contents are at the discretion of the extension.

Notes on Open Text

Attributes like tags, fields, note.topic, and rating.difficulty, do not follow a specified taxonomy. Use terms that work well for your project and use the taxonomy tools in the editor to easily stay consistent.

Modeling Geometry

Modeling geometry is not consistent, but designed with intent. Areas might not be possible to draw on a map cleanly, so two representations apply. Climb location has a meter radius because it's not possible to always get perfect gps coordinates and the climber should to know how close the gap between a specific point and what and author intended. Parking is a specific point (no meterRadius) because it mark the last useful point for vehicle nav software. even 10m or 100m accuracy would be fine in most cases you're setting your nav software to route to the nearest point.. Approach path does what it needs to, point a to b.

This diverges from other standards because these are significantly better-fit for the climbing community.

Area-Climb Relationships

You'll see that there is no explicit area-climb relationship. stele1's editor has fast search and a good map, for a developer, both of these are better than navigating an area hierarchy. On top of that, stele1's GPS support means that most areas can derive area membership with geometry. For the areas that don't lend themselves to GPS organization, there is a classic-area-organization extension for building these relationships manually.

User-Defined Terms

Tags, Fields, Note topics, and Rating fields don't have a pre-defined set of values. These fields are intentionally open. Different areas have different needs and local authors can make better judgement calls than this spec could.

The editor's consistent-words extension helps you stay consistent. You can review the most (and least!) used terms that appear in a catalog.

Coordinates

All coordinates are WGS 84 (EPSG:4326), expressed as decimal degrees. This is the de facto standard for consumer mapping. Tools like GPS receivers, phones, CalTopo, and OpenStreetMap all produce compatible data without conversion.

Coordinates in stele1 use the verbose {latitude, longitude} form rather than an ordered pair. Pair order is a widespread point of confusion, so stele1 goes with the unconfusable solution.