Personally I'd use the Python bindings for the Proj4 library - http://pypi.python.org/pypi/pyproj/1.8.6
Further details at http://pyproj.googlecode.com/svn/trunk/README.html
You can pass your projection parameters directly to the projection object as follows:
PROJ_32756 = """
+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs
"""
p1 = pyproj.Proj(PROJ_32756)
A full list of these strings can be found at http://spatialreference.org/
For zone 56 see http://spatialreference.org/ref/epsg/32756/proj4/
Many of these projections are already built into the library so you can just pass in the code. Below is an example of reprojecting some geojson from one projection to another. You should be able to adapt to your needs.
import pyproj
import simplejson
p1 = pyproj.Proj(init='epsg:3857')
p2 =pyproj.Proj(init='epsg:29902')
json='{"type":"Polygon","coordinates":[[[-972279.15280781,6907135.0149664],[-995516.00940234,6867999.2564914],[-946596.31130859,6844762.3998969],[-964941.19809375,6892459.1055383],[-972279.15280781,6907135.0149664]]]}'
pydata = simplejson.loads(json)
print str(pydata)
new_coords = []
for p in pydata['coordinates'][0]:
x2, y2 = pyproj.transform(p1,p2,p[0],p[1])
new_coords.append([x2, y2])
new_json = simplejson.dumps(dict(type="Polygon", coordinates=[new_coords], srid="29902"))
print str(new_json)
Web Mercator is rarely the right answer, unless you want pictures that line up with other stuff in Web Mercator.
An extract from the NGA's Implementation Practice Web Mercator Map Projection, which is worth a read in full:
5.2 The Web Mercator map projection has several defining mathematical formulas and parameters that make data referenced to Web Mercator
incompatible with WGS 84 ellipsoid referenced GEOINT. These
incompatibilities include:
5.2.1 Spherical equations. The use of simple spherical mathematics to convert ellipsoid based latitude and longitude data to spherical based
plane coordinates.
5.2.2 Non-conformal. The use of a point scale factor that varies as a function of the azimuth and creates angular distortions. This means
that Web Mercator is not a conformal projection and that true rhumb
lines are not straight lines on a Web Mercator projection.
5.3 The mathematical differences described in 5.2.1 and 5.2.2 can cause errors in spherical based Web Mercator plane coordinates of over
40 km compared to WGS 84 ellipsoid based Mercator plane coordinates.
5.4 Visually, Web Mercator plane coordinates appear to portray a correctly rendered ‘Mercator-style’ map, and numerous layers of Web
Mercator data will align on a map or computer screen. The shifts
become apparent only when spherical based Web Mercator plane
coordinates are compared to WGS 84 ellipsoid based Mercator plane
coordinates, e.g. control points, GPS data, and WGS 84 ellipsoid
registered maps, data, and GEOINT.
Best Answer
I worked on updating some USGS quads, back in the 90s. It seemed like most of the style guidelines were published internally, long before the Internet, and never made it online.
It's fairly common to show two sets of State Plane Coordinate System grid tics on quadrangles that are near a boundary between two zones. With UTM zones, it isn't such a big issue. The amount of scale distortion within a UTM zone was designed to be less than 1 in 1000. At the edges of the zones, it's 1 in 1000 (at the equator). The distortion increases beyond the boundaries of the zone, but you can usually go about 40 km into an adjacent UTM zone before the distortion becomes a concern. (I do have documentation on that somewhere).
I would imagine, based on the State Plane Coordinate System example, that quadrangles on a UTM zone boundary would have grid tics for both zones. I would be surprised if that continued more than 1 or 2 quadrangles east or west of the zone boundaries.
I'm not entirely sure what you mean by "start at zero in the middle of the map". Each zone would use the easting value measured from its own central meridian, which is set to 500,000 meters. At the zone boundaries, you'd have higher eastings measured from the zone to the west, and lower easting values measured from the zone to the east, but you wouldn't go far enough to get an easting of zero.