## Urban Map Coordinates

A map intended for pedestrians in an urban area should have 2 significant digits in the coordinates, not more not less. The origin of the map should be at the most recognizable landmark. The unit of measurement should thus be roughly 1/100 the size of the map. For a 10 mile map that's about 1/10th of a mile, or about 500 feet. Ideally that unit should be also based on a landmark chosen for maximum recognizability.

To contrast this goal with the standard coordinates used by software people, decimal latitude and longitude coordinates typically have 10 significant digits or more. The first three of these essentially just tell you what city you're in, which you already know if you're using an urban map, and all the digits after you get to a few meters simply carry no information due to lack of precision in gps and practical mapping.

For Washington, DC, the obvious logical choice for a center is the location of the Washington Monument, and for a unit is the height of the same monument. According to google maps the location is (38.8894427,-77.035224). The height is 555 feet. Thus the first goal in building a better map is to build a web calculator that converts decimal degrees into local units as I've defined them. For other cities you would repeat this process. E.g. for Paris one would definitely center on the Eiffel Tower, and setting the unit to be the height gives you about twice the radius as you get for the Washington Monument. For London you might center on Big Ben, which is too short to get a good unit, but then use the Westminster Bridge as the unit, making it obvious for someone on the ground how to measure in their mind.

We start by taking a difference between the zero and arbitrary coordinates in decimal degrees.

## Decimal Degree Difference Calculator

#### Monument Coordinates(Washington Monument is Default):

Latitude: Longitude:

#### Location Coordinates(default set to Jefferson Memorial):

Latitude: Longitude:

#### Decimal Degree Differences:

Latitude Difference: Longitude Difference:

To account for how longitude changes as we move up from the equator the difference in angle in longitude must be multiplied by the cosine of the latitude to get distance units that are consistent with latitude.

Longitude Difference corrected for non-equatorial latitude:

With this correction we can convert differences to nautical miles by dividing by 60 since 1 nautical mile is 1 arc minute of latitude or 1 60th of a degree. 1 nautical mile is 1.15 statutory miles. 1 statutory mile is 5280 feet. 1 WM(Washington Monument) unit is 555 feet. So the total conversion is $$\Delta\theta[^{\circ}]\left(\frac{60 \textrm{ NM}}{1 ^{\circ}}\right)\left(\frac{1.15 \textrm{ miles}}{1 \textrm{ NM}}\right)\left(\frac{5280 \textrm{ feet}}{1 \textrm{ mile}}\right)\left(\frac{1 \textrm{ WM}}{555 \textrm{ feet}}\right)$$ from which the factor to multiply by is $$\frac{60 \times 1.15 \times 5280}{555} = 656$$ This gives the coordinates in WM from the WM as

X = Y =

## Condensed Coordinate Converter

Here we use the output of google maps coordinates in the form "38.8808165,-77.102156", i.e. with latitude first, even though we're going to have that be the "y" coordinate which is second in the WM units. In this version you must have just the two numbers separated by a comma, and remove the rest of the url including the z coordinate and the "@".

Lat/Lon Coordinates:

WM Coordinates(x,y):

Here I'm rounding to the nearest 1/10th of a Washington Monument, or about 50 feet. The default grid will be either 1 WM or 0.1 WM depending on the context, so it's good to have the option by having one number after the decimal place. Any more than one is pointless given the uncertainties of foot travel and gps, so this should be the highest precision used anywhere on this map unless it's a fractally connected map at a smaller scale, such as one for just the Mall or just DuPont circle.

Metro Center:4,6
Farragut North:-2,9
Dupont Circle:-4,13
Cleveland Park:-12,30
Van Ness-UDC:-14,36
Tenleytown-AU:-23,38
Friendship Heights:-26,47
Bethesda:-30,62
Medical Center:-32,73
Grosvenor-Strathmore:-35,92
White Flint:-40,104
Twinbrook:-44,114
Rockville:-57,128
Gallery Pl-Chinatown:7,6
Judiciary Square:9,4
Union Station:15,5
Rhode Island Ave-Brentwood:20,21
Brookland-CUA:21,29
Fort Totten:17,41
Takoma:9,57
Silver Spring:2,69
Forest Glen:-4,83
Wheaton:-8,98
Glenmont:-9,113
NoMa-Gallaudet U:16,12
Metro Center:4,6
McPherson Square:1,8
Farragut West:-2,8
Foggy Bottom-GWU:-8,7
Rosslyn:-19,5
Arlington Cemetery:-14,-3
Pentagon:-10,-13
Pentagon City:-12,-17
Crystal City:-8,-21
Ronald Reagan Washington National Airport:-4,-24
King St-Old Town:-13,-54
Eisenhower Avenue:-18,-59
Huntington:-20,-63
Federal Triangle:4,3
Smithsonian:4,-1
L'Enfant Plaza:7,-3
Federal Center SW:10,-3
Capitol South:15,-3
Eastern Market:20,-3
Potomac Ave:25,-6
Minnesota Ave:45,6
Deanwood:51,12
Cheverly:61,18
Landover:74,30
New Carrollton:83,38
Mt Vernon Sq 7th St-Convention Center:7,11
Shaw-Howard U:7,15
U Street/African-Amer Civil War Memorial/Cardozo:3,18
Columbia Heights:1,26
Georgia Ave-Petworth:5,31
Fort Totten:17,41
West Hyattsville:33,43
Prince George's Plaza:40,50
College Park-U of Md:55,58
Greenbelt:63,80
Gallery Pl-Chinatown:7,6
Archives-Navy Memorial-Penn Quarter:7,3
L'Enfant Plaza:7,-3
Waterfront:9,-9
Navy Yard-Ballpark:15,-8
Anacostia:20,-18
Congress Heights:24,-29
Southern Avenue:31,-32
Suitland:53,-30
Branch Ave:63,-41
Capitol Heights:62,0
Morgan Boulevard:85,1
Largo Town Center:97,7
Van Dorn Street:-48,-59
Franconia-Springfield:-68,-81
Court House:-25,1
Clarendon:-32,-2
Virginia Square-GMU:-35,-4
Ballston-MU:-39,-5
East Falls Church:-62,-2
West Falls Church-VT/UVA:-79,7
Dunn Loring-Merrifield:-99,-4
Vienna/Fairfax-GMU:-121,-8
McLean:-89,23
Tysons Corner:-96,20
Greensboro:-102,20
Spring Hill:-106,26
Wiehle-Reston East:-156,38

## First Map Instance: Central/lower Yellow Line

Gallery Pl-Chinatown:7,6
Archives-Navy Memorial-Penn Quarter:7,3
L'Enfant Plaza:7,-3
Pentagon:-10,-13
Pentagon City:-12,-17
Crystal City:-8,-21
Ronald Reagan Washington National Airport:-4,-24

It looks like the vertical range should be at least 30 WM's so I'll make it 40. 20 is more than enough in the x direction so I'll make it 30. So the canvas will be 30 WM's wide and 40 WM's high. If we want it to be 400 pixels high that's 10 pixels per WM unit. And the zero point should be centered on the x and closer to the top than the middle on the y, say 100 from the top. Or, in javascript/Geometron:
unit = 10;
x0 = 150;
y0 = 100;
doTheThing(0300);

With a canvas that is 300X400 in size.

## Map 2: The Core

This is a construction of a map of only stations less than 30 WM units from the WM. There are 37 of these. I also am now parsing with just a colon and no commas for simplicity in the code. They are as follows:

Metro Center:4:6
Farragut North:-2:9
Dupont Circle:-4:13
Gallery Pl-Chinatown:7:6
Judiciary Square:9:4
Union Station:15:5
Rhode Island Ave-Brentwood:20:21
NoMa-Gallaudet U:16:12
Metro Center:4:6
McPherson Square:1:8
Farragut West:-2:8
Foggy Bottom-GWU:-8:7
Rosslyn:-19:5
Arlington Cemetery:-14:-3
Pentagon:-10:-13
Pentagon City:-12:-17
Crystal City:-8:-21
Ronald Reagan Washington National Airport:-4:-24
Federal Triangle:4:3
Smithsonian:4:-1
L'Enfant Plaza:7:-3
Federal Center SW:10:-3
Capitol South:15:-3
Eastern Market:20:-3
Potomac Ave:25:-6
Mt Vernon Sq 7th St-Convention Center:7:11
Shaw-Howard U:7:15
U Street/African-Amer Civil War Memorial/Cardozo:3:18
Columbia Heights:1:26
Gallery Pl-Chinatown:7:6
Archives-Navy Memorial-Penn Quarter:7:3
L'Enfant Plaza:7:-3
Waterfront:9:-9
Navy Yard-Ballpark:15:-8
Anacostia:20:-18
Court House:-25:1
Now I want to put all the names in the word elements of the Geometron Hypercube, which are the 0600's. I could add that to the code used to generate the above list but to keep things transparent I'll build that information here in a separate script.
0230:0300,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0205
0231:0300,0332,0332,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0232:0300,0332,0332,0332,0332,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0233:0300,0332,0332,0332,0332,0332,0332,0332,0332,0332,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0234:0300,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0205
0235:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0205
0236:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0330,0205
0237:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0240:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0241:0300,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0205
0242:0300,0333,0330,0330,0330,0330,0330,0330,0330,0330,0205
0243:0300,0332,0332,0330,0330,0330,0330,0330,0330,0330,0330,0205
0244:0300,0332,0332,0332,0332,0332,0332,0332,0332,0330,0330,0330,0330,0330,0330,0330,0205
0245:0300,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0330,0330,0330,0330,0330,0205
0246:0300,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0331,0331,0331,0205
0247:0300,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0205
0250:0300,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0205
0251:0300,0332,0332,0332,0332,0332,0332,0332,0332,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0205
0252:0300,0332,0332,0332,0332,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0205
0253:0300,0333,0333,0333,0333,0330,0330,0330,0205
0254:0300,0333,0333,0333,0333,0331,0205
0255:0300,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0205
0256:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0205
0257:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0205
0260:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0205
0261:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0331,0331,0331,0205
0262:0300,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0263:0300,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0264:0300,0333,0333,0333,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0265:0300,0333,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0330,0205
0266:0300,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0330,0330,0330,0205
0267:0300,0333,0333,0333,0333,0333,0333,0333,0330,0330,0330,0205
0270:0300,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0205
0271:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0331,0331,0331,0331,0331,0331,0205
0272:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0331,0331,0331,0331,0331,0205
0273:0300,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0333,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0331,0205
0274:0300,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0332,0330,0205
That is the byte code which can be loaded manually into any Geometron instance, put in the code at the top, or put in some library. But in this case the code that generated the displayed table here also loaded the codes into the global array currentTable, so it will be available for the next set of operations.

## Locator

Locate machine using geolocation API.

Lat/Lon Coordinates:

WM Coordinates(x,y):