Antoine De Pauw wrote:
Sir,
I'm sorry, as english is not my mothertongue and it is sometimes difficult to be understandable.
All is in the script I gave to you initially, except the point drawing code which would be useless as it is proven not to work (I dont know the method to do it).
What I have is a map, and a set of pixels I have to put on it with geographic coordinates.
I cannot find the right method to put colour pixels on the map, that's the problem.
I have that map in miller projection, and three arrays containing respectively latitude, longitude and satellite measured value.
What I need to obtain is something approximately like this: http://www.oma.be/BIRA-IASB/Molecules/SO2archive/info/background/so2sc200703_00_lr.gif but with the basemap toolkit.
So, my question is: how could I do to plot a coloured pixel at coordinates lat:lon on that map? If I have just the method to project a geographic coordinate on the map and put a coloured pixel at the right place, all is done and I just have to loop my arrays... Also, I would have to implement some antialiasing on the map.
Antoine:
Are the pixels arranged on a regular grid - or are they randomly distributed? If they are on a grid, it's easy (using pcolor or imshow).
If you could send me your data I may be able to get you started.
(I'm cc'ing the matplotlib list so others can join in the discussion).
-Jeff
···
If this is not possible to do it in a simple and explainable way, please tell me and I'll continue using matlab or searching for the bit of code which will save me
Anyway, I have to thank you for your interest to help me..
Many thanks,
Antoine De Pauw
Antoine De Pauw wrote:
Hi, and thanks for the answer
In fact, what I do is reading a binary file to obtain 3 arrays (Lat,Lon,Val) describing geographic points which are associated by index (like point 1 is Lat[0]:Lon[0] with value Val[0])
What I need to do is to plot some points on the map (miller projection for most) based on latitude and longitude, to obtain a colour map (points are unordered, it is from IASI satellite computations)
I'm able to create a map, draw simple things on it, etc but the problem I have is any method I try for plotting points is failing, either pcolor, pcolormesh, imshow, etc.
When I found your post on that mailing list, I figured out that you might have the experience and skills to easily explain to me how to manipulate these points and plot them on the map, as there's like no help on the web except standard examples...
Please tell me if this is possible for you to give me some tips, or if it takes too much of your time just advice me some lectures
Best regards,
De Pauw Antoine
Antoine: It would really help to have a script demonstrating your problem. It sounds to me like you want to plot markers representing a set of points - for that you should use the scatter method. pcolor, pcolormesh and friends are for plotting gridded data.
-Jeff
De Pauw Antoine wrote:
Dear sir,
I’m currently trying to improve our plotting tools here at the “Quantum Chemistry and Photophysics” section of the Universit� Libre de Bruxelles, and I ran, after many time passed at searching for a solution, on an explanation from you here: http://www.nabble.com/Re:-matplotlib-basemap-question-tt17759370.html
It seems that you could help me find a solution, as I cannot plot any points on maps.
Could you please tell me what I could do to plot data in a simple way, assuming I have 3 unordered arrays containing respectively latitude, longitude and values to plot?
Some tips would be very nice from you as any method I have tried so far give me some errors…
Thank you very much in advance,
Best regards,
PS: I give you the code I’m using currently, missing the plotting part
from mpl_toolkits.basemap import Basemap
from numpy import *
from scipy.io.numpyio import fread
import matplotlib.pyplot as plt
import numpy as np
import os
import sys
import array
fileName="c:/20080821.b56"
print('preparing map')
map = Basemap(projection='mill',lat_0=0,lon_0=0,resolution='i',area_thresh=30000.)
map.drawcoastlines(0.5,antialiased=1)
map.drawmapboundary()
#map.drawmeridians(np.arange(-180,180,60),linewidth=0.5, labels=np.arange(-180,180,60), labelstyle="+/-")
#map.drawparallels(np.arange(-90,90,30), linewidth=0.5, labels=np.arange(-180,180,30), labelstyle="+/-")
print('reading binary data')
nbreligne=long(os.stat(fileName)[6])/(8*int(fileName[-2:]))
Lat=zeros(nbreligne)
Lon=zeros(nbreligne)
Val=zeros(nbreligne)
rawfile=fromfile(open(fileName,'rb'),'d',-1)
Lat=rawfile[0:nbreligne]
Lon=rawfile[nbreligne:nbreligne*2]
Val=rawfile[nbreligne*21:nbreligne*22]
print('shifting latitudes and projecting to map')
i=0
while i < nbreligne:
if(Lon[i]>180):
print(Lon[i])
Lon[i]-=360
print(Lon[i])
i+=1
print('plotting data')
#plotting code comes here
Antoine: If you send me a self-contained script that produces the problem you see, I can help you debug it. As it stands now, I have very little to work with - it could be your plotting commands, or it could be your data.
-Jeff
print('saving map')
plt.savefig("testfig.png",dpi=600)
print('done')
*Antoine De Pauw*
Collaborateur de recherches, Informatique - Research collaborator, IT
Laboratoire de chimie quantique et photophysique - Quantum chemistry and photophysics laboratory
*Universit� Libre de Bruxelles - ULB <http://ww.ulb.ac.be/>\*--
Jeffrey S. Whitaker Phone : (303)497-6313
Meteorologist FAX : (303)497-6449
NOAA/OAR/PSD R/PSD1 Email : Jeffrey.S.Whitaker@...259...
325 Broadway Office : Skaggs Research Cntr 1D-113
Boulder, CO, USA 80303-3328 Web : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory--
Jeffrey S. Whitaker Phone : (303)497-6313
NOAA/OAR/CDC R/PSD1 FAX : (303)497-6449
325 Broadway Boulder, CO, USA 80305-3328
--
Jeffrey S. Whitaker Phone : (303)497-6313
NOAA/OAR/CDC R/PSD1 FAX : (303)497-6449
325 Broadway Boulder, CO, USA 80305-3328