<p>I asked the at the minor planet center how the codes were decided, and the answer was</p>

<blockquote>
  <p>Historically, the observatory codes were assigned ascending by longitude toward east (from prime meridian): 360 degrees were divided by numbers. When three digit numerical codes were not sufficient, letters plus two numbers were used again in bands toward the east. Some bands are already full (e.g. H**). New observatory code is assigned in the available letter+number band (based on its longitude).</p>
</blockquote>

CC BY-SA 4.0
2020-05-22T15:38:21.413Z
2020-05-22T15:38:21.413Z
usernumber
<p>Answers to <a href="https://astronomy.stackexchange.com/q/35523/7982">Latitude, longitude and altitude of Ckoirama Observatory; where can things like this be looked-up?</a> point to <a href="https://www.minorplanetcenter.net/iau/lists/ObsCodesF.html" rel="nofollow noreferrer">https://www.minorplanetcenter.net/iau/lists/ObsCodesF.html</a> which currently lists 2198 observatories. </p>

<p>The first character of the three character codes has 36 possible alphanumeric values. and the second two are only digits. That allows for 36*10*10 = 3600 possible codes.</p>

<p>I plotted the ones that are currently used and the pattern is interesting. Why are some letter codes fully used (all 100 two digit suffixes are populated) whereas others are completely empty? I haven't noticed an alphabetical associations.</p>

<p>Y = 0 to 9 are the digits and 10 to 36 are A through Z: Shading means the code is used.</p>

<p><a href="https://i.sstatic.net/bgfpL.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/bgfpL.png" alt="codes"></a>  </p>

<p>For some reason I can't stop comparing the data to the famous <a href="https://en.wikipedia.org/wiki/Arecibo_message" rel="nofollow noreferrer">Arecibo message</a>, a tiny 1-bit bitmapped image beamed to space containing DNA, amino acids, our solar system and other goodies:</p>

<p><a href="https://i.sstatic.net/XG4aP.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/XG4aPm.png" alt="Arecibo Image"></a></p>

<pre><code>import numpy as np
import matplotlib.pyplot as plt
# blob is the unformatted lines from https://www.minorplanetcenter.net/iau/lists/ObsCodes.html
threes = [line[:3] for line in blob.splitlines()]
key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
a = [[x] for x in key]
for t in threes:
    a[key.find(t[0])].append(t)
b = np.zeros((36, 100))
for i, thing in enumerate(a):
    c = [int(x[1:]) for x in thing[1:]]
    for d in c:
        b[i, d] = 1
plt.imshow(-b, interpolation='nearest', cmap='gray')
plt.gca().set_aspect(2)
plt.show()
pairs = []
todegs = 180/np.pi
for line in blob.splitlines():
    try:
        cos, sin = [float(x) for x in (line[13:21], line[21:30])]
        lat = todegs * np.arctan2(sin, cos)
        lon = float(line[4:13])
        pairs.append([lon, lat])
    except:
        pass
print(len(pairs), len(blob.splitlines()), float(len(pairs))/len(blob.splitlines()) )
lon, lat = np.array(list(zip(*pairs)))
lon = np.mod(lon+180, 360) - 180
plt.figure()
plt.plot(lon, lat, 'ok', markersize=1)
plt.ylim(-90, 90)
plt.xlim(-180, 180)
plt.gca().set_aspect('equal')
plt.show()
</code></pre>

CC BY-SA 4.0
2020-03-19T16:12:34.753Z
I suspect only Gareth Williams of the MPC knows for sure, but my speculation is that recent ones are grouped by longitude. When I applied for the 3 site codes for our 1m telescopes at CTIO in Chile we got W85-W87. DECam on the same mountain got W84 later and when we applied for codes for the newer 0.4m telescopes (at different times we got W89 and W79. Similarly in Hawaii; we got T03 and T04, later codes were T05-T14
astrosnapper
CC BY-SA 4.0
2020-03-20T00:26:21.883Z
@astrosnapper thanks! I'll do a correlation analysis. While latitude isn't directly available on this list perhaps I can use the parallax coefficients. [Can I use the parallax coefficients for observatories as a proxy for latitude using arctan2(sin, cos)?](https://astronomy.stackexchange.com/q/35535/7982)
uhoh
CC BY-SA 4.0
2020-05-22T07:40:08.953Z
For some reason "If all three were letters there would be 46656 possible codes" was removed from my question, so I'll add it back here as a comment.
uhoh
<observational-astronomy><asteroids><observatory><iau>
How are the three character IAU Minor Planet Center's Observatory Codes assigned? Why are some letters so popular?
uhoh
# How are the three character IAU Minor Planet Center's Observatory Codes assigned? Why are some letters so popular?

(Asked by: username_0 on 2020-03-19)

Answers to Latitude, longitude and altitude of Ckoirama Observatory; where can things like this be looked-up? point to https://www.minorplanetcenter.net/iau/lists/ObsCodesF.html which currently lists 2198 observatories. 
The first character of the three character codes has 36 possible alphanumeric values. and the second two are only digits. That allows for 36*10*10 = 3600 possible codes.
I plotted the ones that are currently used and the pattern is interesting. Why are some letter codes fully used (all 100 two digit suffixes are populated) whereas others are completely empty? I haven't noticed an alphabetical associations.
Y = 0 to 9 are the digits and 10 to 36 are A through Z: Shading means the code is used.
 
For some reason I can't stop comparing the data to the famous Arecibo message, a tiny 1-bit bitmapped image beamed to space containing DNA, amino acids, our solar system and other goodies:

import numpy as np
import matplotlib.pyplot as plt
# blob is the unformatted lines from https://www.minorplanetcenter.net/iau/lists/ObsCodes.html
threes = [line[:3] for line in blob.splitlines()]
key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
a = [[x] for x in key]
for t in threes:
    a[key.find(t[0])].append(t)
b = np.zeros((36, 100))
for i, thing in enumerate(a):
    c = [int(x[1:]) for x in thing[1:]]
    for d in c:
        b[i, d] = 1
plt.imshow(-b, interpolation='nearest', cmap='gray')
plt.gca().set_aspect(2)
plt.show()
pairs = []
todegs = 180/np.pi
for line in blob.splitlines():
    try:
        cos, sin = [float(x) for x in (line[13:21], line[21:30])]
        lat = todegs * np.arctan2(sin, cos)
        lon = float(line[4:13])
        pairs.append([lon, lat])
    except:
        pass
print(len(pairs), len(blob.splitlines()), float(len(pairs))/len(blob.splitlines()) )
lon, lat = np.array(list(zip(*pairs)))
lon = np.mod(lon+180, 360) - 180
plt.figure()
plt.plot(lon, lat, 'ok', markersize=1)
plt.ylim(-90, 90)
plt.xlim(-180, 180)
plt.gca().set_aspect('equal')
plt.show()

**Tags:** observational-astronomy, asteroids, observatory, iau
> **Comments:**
> **username_1**: I suspect only Gareth Williams of the MPC knows for sure, but my speculation is that recent ones are grouped by longitude. When I applied for the 3 site codes for our 1m telescopes at CTIO in Chile we got W85-W87. DECam on the same mountain got W84 later and when we applied for codes for the newer 0.4m telescopes (at different times we got W89 and W79. Similarly in Hawaii; we got T03 and T04, later codes were T05-T14  
> **username_0**: @astrosnapper thanks! I'll do a correlation analysis. While latitude isn't directly available on this list perhaps I can use the parallax coefficients. [Can I use the parallax coefficients for observatories as a proxy for latitude using arctan2(sin, cos)?](https://astronomy.stackexchange.com/q/35535/7982)  
> **username_0**: For some reason "If all three were letters there would be 46656 possible codes" was removed from my question, so I'll add it back here as a comment.  

---

## 1 answers

### Answer by username_2 on 2020-05-22. Score: 2 | Accepted answer

I asked the at the minor planet center how the codes were decided, and the answer was

> Historically, the observatory codes were assigned ascending by longitude toward east (from prime meridian): 360 degrees were divided by numbers. When three digit numerical codes were not sufficient, letters plus two numbers were used again in bands toward the east. Some bands are already full (e.g. H\*\*). New observatory code is assigned in the available letter+number band (based on its longitude).


---

