OK, I figured out what I was doing wrong. Quite simple really: I assumed the CITIESx020 value was the same as the "enumerated" value - which wasn't the case. Thus the wrong city name was being assigned to some correct city's location. Once I figured that out, all seems better.
One thing I DID notice though, which seems to be a bug in the rendering tool is this: When I zoom into an area using the toolbar at the bottom, the annotations appear outside the "zoomed in region", ie. the rectangular area zoomed in to. Regards, Kurt ----Original Message Follows---- From: Jeff Whitaker <[EMAIL PROTECTED]> To: KURT PETERS <[EMAIL PROTECTED]> CC: matplotlib-users@lists.sourceforge.net Subject: Re: [Matplotlib-users] Basemaps - shapefile import/display for points Date: Tue, 01 Apr 2008 15:54:48 -0600 KURT PETERS wrote: >Jeff, > Do you think it's possible the names or CITIESX020 variable are not being >brought in in the right order? > I modified my code to use scatter, and, although it looks like the dots >are in the right place, the names aren't matching? >see code: >========= >import pylab as p >import numpy >from matplotlib.toolkits.basemap import Basemap as Basemap >from matplotlib.colors import rgb2hex >from matplotlib.patches import Polygon > ># Lambert Conformal map of lower 48 states. ># create new figure >#http://nationalatlas.gov/metadata/citiesx020.faq.html >#http://nationalatlas.gov/atlasftp.html?openChapters=chpref#chpref >fig=p.figure() >m1 = Basemap(llcrnrlon=-119,llcrnrlat=22,urcrnrlon=-64,urcrnrlat=49,\ > projection='lcc',lat_1=33,lat_2=45,lon_0=-95,resolution='c') >shp_info = >m1.readshapefile(r'C:\Python25\Lib\basemap-0.9.9.1\examples\citiesx020','states',drawbounds=True) > > >ax=p.gca() > >#define SHPT_POINT 1 Points >#define SHPT_ARC 3 Arcs (Polylines, possible in parts) >#define SHPT_POLYGON 5 Polygons (possible in parts) >#define SHPT_MULTIPOINT 8 MultiPoint (related points) >print shp_info >print m1.states_info[0].keys() >seqnum={} >criteriatodisplay=[] >names={} >ii=0 >for shapedict in m1.states_info: > if int(shapedict['POP_2000'])>100000: >#'STATE_FIPS', 'NAME', 'POP_2000', 'FEATURE', 'COUNTY', 'STATE', 'FIPS', >'CITIESX020', 'FIPS55', 'DISPLAY', 'POP_RANGE'] > print 'STATE_FIPS = %s, NAME = %s, POP_2000=%s, FEATURE = %s, >COUNTY=%s, STATE=%s, FIPS=%s, CITIESX020 = %s, FIPS55=%s, DISPLAY=%s, >POP_RANGE=%s' %\ > (str(shapedict['STATE_FIPS']), str(shapedict['NAME']), >str(shapedict['POP_2000']), str(shapedict['FEATURE']), >str(shapedict['COUNTY']), str(shapedict['STATE']), str(shapedict['FIPS']), >str(shapedict['CITIESX020']), str(shapedict['FIPS55']), >str(shapedict['DISPLAY']), str(shapedict['POP_RANGE'])) > # have an index of the names > seqnum[shapedict['CITIESX020']]=shapedict['NAME'] > criteriatodisplay.append(shapedict['CITIESX020']) > > ii+=1 > >print ii >#x, y = zip(*m1.states) >#print m1.states[1] >#print x[1] >#print y[1] >#ii=0 >x=[] >y=[] >ii=0 >for nshape,seg in enumerate(m1.states): > if nshape in criteriatodisplay: > x.append(seg[0]) > y.append(seg[1]) > p.text(seg[0],seg[1],seqnum[nshape],fontsize=12) > ii+=1 > > #print 'Shape num %s, coords=%s' % (seqnum[nshape], seg) > # ax.annotate(seqnum[nshape],seg) >m1.scatter(x,y,2,'b',marker='o',faceted=False,zorder=10) > >#ax.annotate(s='s',xy=(int(x),int(y))) >#p.figtext(x,y,'o',weight='heavy', size = 16) >m1.drawcoastlines() >m1.fillcontinents() >m1.drawcountries() >m1.drawstates() >m1.drawparallels(numpy.arange(25,65,4),labels=[1,0,0,0]) >m1.drawmeridians(numpy.arange(-120,-40,4),labels=[0,0,0,1]) >p.title('Test Cities') >p.show() >======== >kurt > ><snip> > > Kurt: If I look at the least entry in m.states_info (Newport, VT), the corresponding x,y location in m.states corresponds to 44.93N, -72.21W, which looks about right to me. I guess I'm still not clear on what the issue is. Could you distill your example code down to something very simple that clearly demonstrates the problem? -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 Meteorologist FAX : (303)497-6449 NOAA/OAR/PSD R/PSD1 Email : [EMAIL PROTECTED] 325 Broadway Office : Skaggs Research Cntr 1D-124 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users