2017-06-20 1 views
0

J'apprends comment utiliser Python et Basemap et je voudrais créer une boucle qui produit une carte de chaque type projection. Les types de projection sont: cea, mbtfpq, aeqd, sinu, poly, etc. Donc, je veux juste une boucle qui fait Basemap(width=x, height=y, projection=[projection type], ...) mais ne peut pas comprendre comment retourner les types réels de projections possibles.Boucle à travers les valeurs possibles d'un type de classe

Jusqu'à présent, je l'ai essayé des choses comme

proj = Basemap() 
print(dir(proj)) 

et

proj = Basemap().projection 
print(dir(proj)) 

mais ni les rendements types de projections qu'il pourrait être. J'ai essayé

for value in Basemap().projection: 
    print (value) 

Mais juste retour

c 
y 
l 

et c'est tout.

le plus proche, je suis devenu est

for value in Basemap().__dict__.items(): 
    print (value) 

mais qui retourne une beaucoup d'informations, apparemment les valeurs par défaut, mais l'un d'eux est cyl, qui est la projection par défaut. Je me rapproche, mais je ne vois pas comment parcourir chaque projection.

(Ma sémantique sont incorrectes, alors s'il vous plaît me corriger si je me trompe!)

Edit: Je voudrais savoir comment faire cela sans « tricher », à savoir que je connais les types de projections possible, chargez-les dans un tableau et faites une boucle dans le tableau. J'essaie d'apprendre comment le faire si je n'a pas connaître les valeurs possibles.

Répondre

1

Il n'y a pas besoin de tricher; en regardant the source, vous avez une liste supported_projections qui contient toutes les projections prises en charge. Vous pouvez simplement l'utiliser.

+0

Oh, merci d'avoir trouvé ça! Je regardais autour pour toujours. Pour l'anecdote, tout ce que je devais faire était d'ajouter 'depuis mpl_toolkits.basemap import _projnames' alors juste faire' pour key, value dans _projnames.items(): // print (key) '. Je suis sûr qu'il y a un autre moyen, sans ajouter le redondant '... import _projnames', mais en faisant comme pour la clé dans Basemap(). Projnames.items()' était défectueux. – BruceWayne

+0

Aussi, si cela ne vous dérange pas, qu'est-ce que je cherchais? Une "clé" dans un type "classe"? Les "valeurs" d'une "clé" au sein d'une classe ... juste curieux de la sémantique pour aller de l'avant. – BruceWayne

+1

@BruceWayne Cela dépend vraiment de la façon dont il est implémenté. En général, une information comme celle-ci est un attribut de classe ou un attribut de module. (J'espère que je comprends ce que c'est exactement qui vous déroute) –