I think that Hartebeesthoek94 / Lo21 EPSG:2049 fits best. I added the constant 3700000 to the X values as mentioned in the header, and imported the coordinates as delimited text into QGIS. This is what I get:
The coordinates are west of 21°E and south of the equator. Exporting the coordinates as WGS84 results in:
"0","20.0777332087","-33.9376197503","A","85267.05","3757125.26"
"1","20.0780827565","-33.937511304","B","85234.84","3757112.94"
"2","20.0784080105","-33.9373687785","C","85204.91","3757096.86"
"3","20.0788528052","-33.9371936109","D","85163.96","3757077.06"
"4","20.0793019671","-33.9369340943","E","85122.69","3757047.9"
"5","20.0793436801","-33.9369675812","F","85118.8","3757051.58"
"6","20.0982437624","-33.937447055","801","83370.88","3757089.25"
"7","20.0956436897","-33.9410931123","8P1","83607.71","3757495.81"
Columns 2 and 3 should give you the East and North coordinates that Google can understand.
The data goes from 20 to 420, which is including some areas more than once because the metadata says:
NC_GLOBAL#NOTE2=Longitude extends from 20 E to 420 E to avoid a break in major ocean basins. Data repeats in overlap region.
So we need to split the data into the 20 to 360 section and the 360 to 380 section and put that 360 to 380 section on the left of the 20 to 360 section. We don't need 380 to 420 because that's overlap.
So...
library(raster)
define two extents to cut the raster with. The "Y" extent just has to be bigger than the raster so I go up to 90:
e1 = extent(c(xmin=20,xmax=360,ymin=-90,ymax=90))
e2 = extent(c(xmin=360, xmax=360+20, ymin=-90, ymax=90))
Load the raster - I'm loading just the "vm" layer, you'll have to repeat over the others:
d = raster("./oscar_vel7001.nc",varname="vm")
Now split the bits that we want using the extents:
d1 = crop(d,e1)
d2 = crop(d,e2)
Next shift the bit on the right to fill the space from 0 to 20:
xmin(d2)=xmin(d2)-360
xmax(d2)=xmax(d2)-360
merge
will paste the two parts together, giving us a raster from 0 to 360, and rotate
will shift it to be -180 to 180:
dm = rotate(merge(d1,d2))
plot(d)
plot(dm)
shows the original shifted overlapping map and the corrected -180 to +180 map:
Best Answer
Seems to be http://en.wikipedia.org/wiki/UN/LOCODE
Coordinate syntax explained in http://www.unece.org/fileadmin/DAM/cefact/locode/Service/LocodeColumn.htm#Coordinates