SAC hut metadata update process
SAC hut metadata synchronization
This page documents the process used to synchronize metadata of Swiss Alpine Club (SAC) huts with existing OpenStreetMap objects.
The workflow retrieves authoritative hut information from the Swiss Alpine Club (SAC), matches it with the corresponding OpenStreetMap objects, and updates selected metadata. No new OSM objects are created.
Background
The Swiss Alpine Club (SAC) maintains an authoritative database of Swiss alpine huts, including contact information, operator details, accessibility information and other visitor-related metadata.
Many of these attributes are also maintained in OpenStreetMap but may become outdated over time. This project synchronizes selected metadata from the official SAC database with the corresponding OpenStreetMap objects.
The project does ‘’‘not’’’ create new huts. It only updates metadata on existing OSM objects after a matching process.
Goals
- Improve completeness of SAC hut metadata.
- Synchronize authoritative information from SAC.
- Reduce manual maintenance.
- Preserve existing geometry and mapping decisions.
Data sources
| Source | Purpose | Access | Notes |
|---|---|---|---|
| geo.admin.ch / geocat.ch | Hut identities | Public download | Used to obtain the list of SAC huts. |
| Swiss Alpine Club (SAC) API | Hut metadata | https://ws.sac-app.ch/v2/tour/hut/<hut_id> | Used with permission from the SAC. Only moderate API usage is permitted. |
| Wikidata | Matching SAC huts to OSM objects | https://query.wikidata.org/ | Used where Wikidata identifiers are available. |
| Overpass API | Matching OSM objects by location | https://overpass-api.de/ | Used to identify nearby OSM nodes, ways and relations within a 20 m radius. |
Licence
The metadata used in this synchronization is obtained from the Swiss Alpine Club (SAC) API.
The SAC permits the use of the data provided through this API for updating OpenStreetMap. This permission applies for as long as the API remains available and does not constitute a guarantee of permanent access or availability of the service.
The SAC API is intended for reasonable use. Heavy or excessive automated requests are not permitted. The synchronization process therefore minimizes the number of API requests and is designed to operate within these usage expectations.
If the API is discontinued or the usage conditions change, the synchronization process will be reviewed.
Objects affected
Only existing OpenStreetMap objects representing SAC huts are modified.
These may be represented as:
- Nodes
- Ways
- Relations
No new objects are created.
Matching methodology
The synchronization consists of two phases:
Collect and match SAC huts with OpenStreetMap objects.
Update selected OSM tags.
Data collection
The import performs the following steps:
Download approximately 520 hut identities from geo.admin.ch.
Download detailed metadata for approximately 429 huts with valid SAC identifiers from:
Matching using Wikidata
Where available, Wikidata identifiers provide a high-confidence mapping.
The workflow:
Query Wikidata for Swiss alpine huts.
Match Wikidata entries with SAC identifiers.
Remove entries without corresponding SAC metadata.
Matching using coordinates
For huts that cannot be matched through Wikidata, coordinate-based matching is performed.
The workflow:
Convert Swiss coordinates to WGS84 latitude/longitude.
Query Overpass for nodes, ways and relations within a 20 m radius.
Match the returned OpenStreetMap object with the SAC hut.
Merge mappings
The mappings obtained from Wikidata and coordinate matching are merged into a single lookup table.
Remaining Wikidata identifiers are resolved using an additional Overpass query.
This process currently produces approximately ‘’‘507 verified SAC ↔ OSM mappings’’’.
Updated tags
The following tags are synchronized from the SAC API.
| SAC field / service | OpenStreetMap tag | Value |
|---|---|---|
| altitude | ele | Altitude (m) |
| phone | phone | Phone number |
| Email address | ||
| url | website | Website URL |
| hrsLink | reservation:website | Reservation website |
| owner | owner | Owner |
| hutGuardian | contact:person | Hut guardian |
| hutSleeps | capacity | Number of beds |
| shelterSleeps | capacity:winter_room | Number of winter room beds |
| COOKING_NON_CATERED | kitchen | yes |
| COOKING_CATERED | kitchen | no |
| HALF_BOARD | breakfast | yes |
| HALF_BOARD | dinner | yes |
| INTERNET | internet_access | yes |
| PLAIN_MEALS | food | yes |
| DRINKS | drinking_water | yes |
| PAYMENT_CREDITCARD | payment:credit_cards | yes |
| PAYMENT_REKA | payment:reka | yes |
| SEPARABLE_GROUP_ROOMS | rooms | separable_group |
| FAMILY_ROOMS | rooms:family | yes |
| DOGS_ON_REQUEST | dog | on_request |
The tagging discussion can be found here:
https://www.openstreetmap.org/changeset/159912547
Only selected metadata fields are synchronized.
Quality assurance
Several validation steps are performed before updating OpenStreetMap:
- Matching via Wikidata is preferred whenever available.
- Coordinate-based matching uses a maximum search radius of 20 metres.
- Ambiguous or unmatched objects are excluded.
- The generated mappings are manually reviewed before upload.
- Updates are tested before being applied to OpenStreetMap.
Upload procedure
The process performs the updates using the verified SAC ↔ OSM mapping.
Only selected metadata fields are modified. Existing geometry and manually mapped features are left unchanged.
Uploads are performed in manageable changesets with descriptive comments to simplify review and potential reverts.
Reverting
Since updates are uploaded in individual changesets, they can be reverted using standard OpenStreetMap revert tools if any issues are identified.
Statistics
| Stage | Count |
|---|---|
| Huts downloaded from geo.admin.ch | ~520 |
| Huts with valid SAC metadata | ~429 |
| Final SAC ↔ OSM mappings | ~507 |
Import account
The metadata synchronization was performed using the OpenStreetMap account:
The synchronization was carried out as a one-time update and no recurring automated updates are currently planned.