Golfer, how close of a radius do you need?  About as close as you can get without using a warrant or subpoena to the ISP is to use traceroute and look at the router names.  Most providers will include the city and state somewhere in the name of each device the packet goes through.  It can be a bit cryptic sometimes, but I have had a fairly good success rate with it, especially when whois doesn't provide enough information.
As an example, here are some hops from my PC to one of the HTC servers:
 5  tbr2-p013901.cgcil.ip.att.net (12.123.210.17)  47.759 ms  46.961 ms  48.536 ms
 6  tbr2-cl7.sl9mo.ip.att.net (12.122.10.46)  48.104 ms  53.957 ms  44.023 ms
 7  tbr1-cl24.sl9mo.ip.att.net (12.122.9.141)  63.489 ms  44.511 ms  44.473 ms
 8  tbr2-cl6.dlstx.ip.att.net (12.122.10.90)  40.362 ms  42.098 ms  39.198 ms
 9  br2-a3120s9.dlstx.ip.att.net (12.123.16.213)  40.269 ms  39.137 ms  49.582 ms
10  mdf1-gsr12-1-pos-6-0.dal1.attens.net (12.122.255.78)  39.170 ms  38.685 ms  39.775 ms
11  mdf1-bi8k-1-eth-1-4.dal1.attens.net (63.241.192.42)  44.722 ms  402.591 ms  44.485 ms
cgcil is Chicago, sl9mo is St. Loius and dlstx is Dallas.  You can usually get to the nearest large city with a traceroute.
If you're using Windows, the command is tracert. 
Oh, and if you're worried about tipping off the perp, you can just traceroute to an address in the same netblock.  He'll never get a packet.  Just make sure he doesn't have the whole netblock registered.