2017-06-06 2 views
1

J'utilise python 3.6 pour tracer un fichier de formes contenant de grands bassins versants aux États-Unis Le problème que je rencontre est que ce fichier de formes a de nombreux composants, comme un fichier .dbf, un .prj fichier ... et autres. Je ne suis pas sûr si je dois lire tous les fichiers individuellement et ensuite tracer ou s'il y a une commande qui me permettra de les lire tous à la fois et de tracer ensuite.Python Tracer un fichier de formes sur une carte de base

Voici mon code à ce jour:

from mpl_toolkits.basemap import Basemap 

import matplotlib.pyplot as plt 

mydbf =('filename.dbf') 
myprj =('filename.prj') 
myqpj =('filename.qpj') 
myshp =('filename.shp') 
myshx =('filename.shx') 


map= Basemap(projection='cyl', 
      lon_0=180, 
      lat_0=0, 
      resolution='l') 
map.drawmapboundary(fill_color='aqua') 
map.fillcontinents(color='#ddaa66',lake_color='aqua') 
map.drawcoastlines() 

map.readshapefile(mydbf,myprj,myqpj,myshp,myshx,'Watersheds') 
plt.show() 

Le message d'erreur que je reçois quand je lance ce code est: OSError: cannot locate filename.dbf.shp

Répondre

1

Dans le basemap tutorial sur readthedocs il est dit clairement sur la fonction readshapefile

Le premier nom du fichier de forme de paramètre doit être ignoré. La bibliothèque suppose que tous les SHP, les fichiers sbf et shx existeront avec ce nom donné

Votre appel devrait donc être

map.readshapefile("filename",'Watersheds') 
+0

Je comprends cela, mais qui ne fonctionne que pour un. Tous les fichiers sont nommés exactement le même, donc sans ajouter le fichier .shp ou .dbf, il ne fait que tracer un fichier. – CPG

+0

Oui, vous avez un shapefile 'filename.shp' avec ses fichiers auxiliaires' filename.sbf' et 'filename.shx'. Si vous en avez un second, ce serait 'filename2.shp' avec ses fichiers auxiliaires' filename2.sbf' et 'filename2.shx' et vous répéteriez la lecture comme' map.readshapefile ("filename2", 'Watersheds2') '. – ImportanceOfBeingErnest