My suggestions would be to utilize reverb at http://reverb.echo.nasa.gov/reverb/. First register if you have not already done so. In the search box type ASTER GDEM and Select Dataset --- note if you want a particular area this is the point where you select the box range in the map window to the left (very useful feature!).
ASTER GDEM Global Digital Elevation Model V002
Select "Search for Granules"
Now begins the tedious part where there are over 22,000 ASTER GDEM tiles that cover the globe however, the website only list 400 per page where there is an 'Add All on Page' button but no Add All option (i.e. 50 + pages to go through + load time).
Press the View Items in Cart (Shopping Cart), press the 'ALL' button that will pop up a new message 'All Items on Page Selected. Select All n Items in Cart'. Click on that link. At the bottom of the page select 'Order Selected' (no direct download is available).
Follow the appropriate steps including your order details (its free no worries) and on the following page select the 'Order Option - Not Set and Required' button to state the reason for the download (remember to use the apply to all function).
You will then receive an email entitled CM SHARED with directions for ftp pull on your selected data. From my limited experience, this usually takes approximatley one working day. Essentially the ftp and pull directory to connect will look like:
ftp://e4ftl01.cr.usgs.gov # Ftp Server
PullDir/0302595257dmDDFH # Pull Directory Example
This provides really fast download (unlike some other ftp sites Global Land Cover Facility) especially comming from Europe (5mb/s).
Sorry for the long answer to a rather simple procedure but as I write this I am actually downloading ASTER GDEMv2 data myself for the entire continous USA. Note ASTER GDEMv2 is not void filled (although improvements have been made), unlike others like SRTM V4.1 from http://srtm.csi.cgiar.org/ at 90m resolution.
The current approach for gridded/point data is Web Coverage Service or WCS. This is well supported in a range of commercial and open source servers (e.g. GeoServer), and also has pretty good support at the client level (e.g. owslib)
As you've shown in your updated question, access to WCS is a lot like WMS or other OGC services.
There probably isn't as many WCS services as there are WMS, WFS or TMS services. WCS seems to be mostly oriented to use in scientific analysis (e.g. vegetation, weather and other atmospheric phenomena, some population info), rather than direct use. I did find one elevation data provider with a nice description of how to use it at GMU's Geobrain page. That provider was called wcs4dem, and is at http://geobrain.laits.gmu.edu/wcs4dem.htm
If your future needs extend to more than a public service is reasonably capable of, you could transition to your own WCS server (after downloading DEM data from some source that meets your needs) without significant changes to your code.
Best Answer
Briefly, USGS has application services (Option #1), but for some data sets it's also possible to generate direct download URLs (Option #2) to the public location of files.
Download Option #1: USGS Application Services
There's documentation here about the web services that are available: http://nimbex.cr.usgs.gov/app_services.php
If you're interested in elevation data, be aware of this:
I believe the changes (no more seamless) to the web services over the past couple years are related to this.
This is legit way to download data programmatically. But if you only need some simple tiles...
Download Option #2: Tiles via easy to generate URLs
The National Map Viewer can be used for downloading all kinds of data, but of course that is not programmatic. But if you make an "order" from the National Map Viewer, you will notice that the download links it sends you are very simple to generate.
For example, let's look at Elevation data since it's one of the more complicated ones to figure out. The links in the email look like this:
The base URL is: http://gisdata.usgs.gov/TDDS/DownloadFile.php
Followed by the following arguements:
TYPE
FNAME
ORIG
dlpre
I'm thinking this would be the preferred way to do things, but you'll probably notice that DownloadFile.php is just generating the actual URL of the tile.....
So in reality, the location of the tiles look like this:
Which again we can easily break down into
For Landcover:
This method does not work well with higher resolution data (1/9 arc second DEM, orthoimagery) because the filenames don't follow a simple pattern.