2017-10-09 7 views
0

J'essaie de tracer une carte globale des émissions de gaz. Cependant, il semble que je ne peux pas obtenir mes données (NH3idx) tracées sur l'ampli. Je ne sais pas si la traduction à partir de lat lon coordonnées pour tracer des coordonnées de projection erronées ou je ne peux pas lire les données que je veux tracer.Impossible d'obtenir mes données tracées sous forme de carte de base sur la carte de base

import numpy as np 
import pylab as plt 
import math 
from mpl_toolkits.basemap import Basemap 
import csv 


dlat = 0.1 
dlon = 0.1 
nlat = 1800 
nlon = 3600 

longrid = -180 + np.arange(nlon) * dlon 
latgrid = -90 + np.arange(nlat) * dlat 

NH3idx = np.zeros([nlon,nlat]) 

with open ('NH3_2008.txt') as csvfile: 
    plots = csv.reader(csvfile, delimiter=';') 
    for row in plots: 
     inlon = float(row[1]) 
     inlat = float(row[0]) 
     lonidx = int(abs(inlon + 180)/dlon) 
     latidx = int(abs(inlat +90)/dlat) 
     NH3idx[lonidx,latidx] = float(row[2]) 

plt.figure(figsize=(20,10)) 
m = Basemap(projection='cyl', llcrnrlat=-90,urcrnrlat=90,\ 
     llcrnrlon=-180,urcrnrlon=180,resolution='l') 

y,x = np.meshgrid(latgrid, longrid) 


m.drawcoastlines() 
m.drawmeridians(np.arange(-180.,180.,20.)) 
m.drawparallels(np.arange(-90.,90.,20.)) 
m.drawmapboundary(fill_color='white')  

plt.contourf(x,y,NH3idx) 
plt.colorbar() 

plt.show() 

et mes données ressemblent à ceci:

the columns are lat, lon, emissions

Répondre

0

Vous devez d'abord transformer vos coordonnées à basemap coordonnées

X,Y = m(x,y) 

Ensuite, vous voulez probablement utiliser la fonction Countour de basemap

m.contourf(X,Y,NH3idx)