Skip to content

Instantly share code, notes, and snippets.

@roleohibachi
Last active November 15, 2025 04:22
Show Gist options
  • Select an option

  • Save roleohibachi/71bcc38a319db28e07c86e537461b039 to your computer and use it in GitHub Desktop.

Select an option

Save roleohibachi/71bcc38a319db28e07c86e537461b039 to your computer and use it in GitHub Desktop.
{
"id": "repeater",
"name": {
"en": "Repeaters"
},
"description": {
"en": "Repeaters"
},
"source": {
"osmTags": "communication:amateur_radio:repeater~*"
},
"minzoom": 0,
"title": {
"render": {
"en": "Repeaters"
}
},
"pointRendering": [
{
"iconSize": "40,40",
"location": [
"point"
],
"anchor": "center",
"marker": [
{
"icon": "wifi",
"color": "blue"
}
]
}
],
"lineRendering": [
{
"color": "#00f",
"width": "8"
}
],
"presets": [
{
"tags": [
"man_made=communications_tower",
"communication:amateur_radio:repeater=yes",
"communication:amateur_radio=yes",
"tower:type = communication"
],
"title": {
"en": "a repeater"
},
"description": {
"en": "An automatic transceiver that receives a signal and re-transmits it on a different frequency."
}
}
],
"tagRenderings": [
"images",
{
"question": {
"en": "What is the name of this repeater?"
},
"id": "1_nameq",
"render": {
"en": "This repeater is known as {name}"
},
"freeform": {
"key": "name"
}
},
{
"question": {
"en": "What is the amateur radio callsign of this repeater?"
},
"id": "callsign_q",
"render": {
"en": "Repeater callsign: {communication:amateur_radio:callsign}"
},
"freeform": {
"key": "communication:amateur_radio:callsign"
},
"questionHint": {
"en": "amateur radio call sign assigned to the object"
}
},
{
"question": {
"en": "Who operates this repeater?"
},
"id": "operator_q",
"render": {
"en": "Operator callsign: {operator}"
},
"freeform": {
"key": "operator"
},
"questionHint": {
"en": "Callsign of the operator that manages the repeater"
},
"multiAnswer": false
},
{
"question": {
"en": "What is the repeater's modulation type?"
},
"id": "modulation_q",
"render": {
"en": "Other. WARC 79 designation: {communication:amateur_radio:repeater:modulation}"
},
"freeform": {
"key": "communication:amateur_radio:repeater:modulation",
"type": "string"
},
"mappings": [
{
"if": "communication:amateur_radio:repeater:modulation=11K0F3E",
"then": {
"en": "11K0F3E (Narrow FM, 11 kHz BW)"
}
},
{
"if": "communication:amateur_radio:repeater:modulation=11K2F3E",
"then": {
"en": "11K2F3E (Narrow FM, 11.2 kHz BW)"
}
},
{
"if": "communication:amateur_radio:repeater:modulation=16K0F3E",
"then": {
"en": "16K0F3E (Mid-width FM. 16.0 kHz BW)"
}
},
{
"if": "communication:amateur_radio:repeater:modulation=20K0F3E",
"then": {
"en": "20K0F3E (Wideband FM, 20 kHz BW)"
}
}
],
"questionHint": {
"en": " (WARC 79 designation)"
}
},
{
"question": {
"en": "What is the repeater's output frequency (Hz)?"
},
"id": "freq_out_q",
"render": {
"en": "Output frequency: {communication:amateur_radio:repeater:frequency_out} Hz ({_frequency_out_mhz} MHz)"
},
"freeform": {
"key": "communication:amateur_radio:repeater:frequency_out",
"type": "pnat"
},
"questionHint": {
"en": "repeater's transmitting frequency (Hz)"
},
"multiAnswer": false
},
{
"question": {
"en": "What is the repeater's shift (Hz)?"
},
"id": "shift_q",
"render": {
"en": "Shift: {communication:amateur_radio:repeater:shift} Hz ({_shift_khz} KHz)"
},
"freeform": {
"key": "communication:amateur_radio:repeater:shift",
"type": "int"
},
"mappings": [
{
"if": "communication:amateur_radio:repeater:shift=-600000",
"then": {
"en": "-600000 Hz (-600KHz, -0.6MHz)"
}
},
{
"if": "communication:amateur_radio:repeater:shift=+600000",
"then": {
"en": "+600000 Hz (+600KHz, +0.6MHz)"
}
},
{
"if": "communication:amateur_radio:repeater:shift=-7600000",
"then": {
"en": "-7600000 Hz (-7.6MHz)"
}
},
{
"if": "communication:amateur_radio:repeater:shift=+5000000",
"then": {
"en": "+5000000 (+5MHz)"
}
}
]
},
{
"render": {
"en": "Input frequency: {_frequency_in} Hz ({_frequency_in_mhz} MHz) (calculated)"
},
"id": "11_gwyvza18hr53lss",
"condition": "_frequency_in~*"
},
{
"render": {
"en": "Ham band: {_band}"
},
"id": "12_yiraymkxm517t66",
"condition": "_band~*"
},
{
"question": {
"en": "What is the repeater's transmitter power (W)?"
},
"id": "power_q",
"render": {
"en": "Transmitter power: {communication:amateur_radio:repeater:power} W"
},
"freeform": {
"key": "communication:amateur_radio:repeater:power"
}
},
{
"question": {
"en": "Does this repeater require a toneburst? If so, what frequency (Hz)?"
},
"id": "toneburst_q",
"render": {
"en": "Toneburst: {communication:amateur_radio:repeater:toneburst} Hz"
},
"freeform": {
"key": "communication:amateur_radio:repeater:toneburst"
}
},
{
"question": {
"en": "What is the CTCSS tone (Hz)? (one decimal place)"
},
"id": "ctcss_q",
"render": {
"en": "CTCSS: {communication:amateur_radio:repeater:ctcss} Hz"
},
"freeform": {
"key": "communication:amateur_radio:repeater:ctcss"
}
},
{
"question": {
"en": "What is the DCS code? (three-digit octal)"
},
"id": "dcs_q",
"render": {
"en": "DCS code: {communication:amateur_radio:repeater:dcs}"
},
"freeform": {
"key": "communication:amateur_radio:repeater:dcs"
}
}
],
"calculatedTags": [
"_frequency_in = (() => { const out = Number(feat.properties['communication:amateur_radio:repeater:frequency_out']); const shift = Number(feat.properties['communication:amateur_radio:repeater:shift']); return (!isNaN(out) && !isNaN(shift)) ? out + shift : null; })()",
"_frequency_in_mhz = (() => { const out = Number(feat.properties['communication:amateur_radio:repeater:frequency_out']); const shift = Number(feat.properties['communication:amateur_radio:repeater:shift']); return (!isNaN(out) && !isNaN(shift)) ? (out + shift) / 1e6 : null; })()",
"_frequency_out_mhz = (() => { const outHz = Number(feat.properties['communication:amateur_radio:repeater:frequency_out']); return !isNaN(outHz) ? outHz / 1e6 : null; })()",
"_band = (() => { const outHz = Number(feat.properties['communication:amateur_radio:repeater:frequency_out']); if (isNaN(outHz)) return null; const mhz = outHz / 1e6; if (mhz >= 50 && mhz <= 54) return '6m'; if (mhz >= 144 && mhz <= 148) return '2m'; if (mhz >= 222 && mhz <= 225) return '1.25m'; if (mhz >= 420 && mhz <= 450) return '70cm'; if (mhz >= 902 && mhz <= 928) return '33cm'; if (mhz >= 1240 && mhz <= 1300) return '23cm'; return null; })()",
"_shift_khz = (() => { const shiftHz = Number(feat.properties['communication:amateur_radio:repeater:shift']); if (isNaN(shiftHz)) return null; const shiftKHz = shiftHz / 1e3; return (shiftKHz >= 0 ? '+' : '') + shiftKHz; })()"
],
"deletion": {
"softDeletionTags": {
"and": [
"disused:amenity:={amenity}",
"amenity="
]
},
"neededChangesets": 1
},
"allowMove": false,
"credits": "roleohibachi",
"credits:uid": 10076920
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment