Je suis actuellement en train de réécrire le module Python suivant :<\/P>
<\/P>
Je viens de réaliser qu'ArcHydro ne reconnaît pas arcpy.env.workspace ni ArcHydroTools.SetTargetLocations("HydroConfig", "Layers", "RasterWorkspace", "VectorWorkspace")<\/P>
} < /p ><pre classe = <SPAN class="string token">''' Créé le 13 mars 2017 Modèle principal ArcHydro @author: PeterW '''<\/SPAN> <SPAN class="comment token"># importer les modules système et site-packages<\/SPAN> <SPAN class="keyword token">from<\/SPAN> pathlib <SPAN class="keyword token">import<\/SPAN> Path <SPAN class="keyword token">import<\/SPAN> arcpy <SPAN class="keyword token">import<\/SPAN> ArcHydroTools <SPAN class="comment token"># définir les arguments<\/SPAN> rasters_workspace <SPAN class="operator token">=<\/SPAN> r<SPAN class="string token">"E:\Projects\2016\G113386\ArcHydro\Model01\Layers01"<\/SPAN> dem <SPAN class="operator token">=<\/SPAN> r<SPAN class="string token">"E:\Projects\2016\G113386\DEM\raw"<\/SPAN> fgdb_workspace <SPAN class="operator token">=<\/SPAN> r<SPAN class="string token">"E:\Projects\2016\G113386\ArcHydro\Model01\Model01.gdb"<\/SPAN> <SPAN class="comment token"># vérifier les extensions et définir les paramètres d'environnement<\/SPAN> arcpy<SPAN class="punctuation token">.<\/SPAN>CheckOutExtension<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"Spatial"<\/SPAN><SPAN class="punctuation token">)<\/SPAN> arcpy<SPAN class="punctuation token">.<\/SPAN>env<SPAN class="punctuation token">.<\/SPAN>overwriteOutput <SPAN class="operator token">=<\/SPAN> <SPAN class="token boolean">True<\/SPAN> <SPAN class="keyword token">def<\/SPAN> <SPAN class="token function">rasters_main<\/SPAN><SPAN class="punctuation token">(<\/SPAN>rasters_workspace<SPAN class="punctuation token">, <\/SPAN>dem<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">:<\/SPAN> <SPAN class="string token">""" Créer des rasters dans le cadre du pré-traitement ArcHydro"""<\/SPAN> <SPAN class="comment token"># définir le workspace raster<\/SPAN> arcpy<SPAN class="punctuation token">.<\/SPAN>env<SPAN class="punctuation token">.<\/SPAN>workspace <SPAN class="operator token">=<\/SPAN> rasters_workspace <SPAN class="comment token"># définir les emplacements cibles ArcHydro pour les jeux de données Raster et Vectoriel<\/SPAN> ArcHydroTools<SPAN class="punctuation token">.<\/SPAN>SetTargetLocations<SPAN class="punctuation token">(<\/Span><SPAN class="string token">"HydroConfig"<\/Span>, <Span class="string token">"Layers"</Span>, rasters_workspace, fgdb_workspace)<Span></Span> <Span class="comment token"># créer le raster Fill Sinks</Span> arcpy.AddMessage("Traitement de Fill Sinks") ArcHydroTools.FillSinks(dem, "fil") <Span class="comment token"># créer le raster Flow Direction</Span> rasters_main(rasters_workspace, dem)<Span class="line-numbers-rows"><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span><Span></Span}><span<<emojI34>> </span<<emojI35>> </span<<emojI36>> </span>}
I don't know if this will fix your problem, but I was having a similar issue (except with vector location instead of raster location) with ThinCrossSection tool even though I set the arcpy enviroment and ArcHydro's target locations.
The issue seems to be that you need a full path to a feature instead of just the name:
<SPAN class="comment token"># This did not work for me</SPAN> ArcHydroTools<SPAN class="punctuation token">.</SPAN>ThinCrossSection<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"TEMP"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MaxNumberOfVertices"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">500</SPAN><SPAN class="punctuation token">,</SPAN> output<SPAN class="punctuation token">,</SPAN> report<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># This did</SPAN> output <SPAN class="operator token">=</SPAN> gdb_path <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\'</SPAN> <SPAN class="operator token">+</SPAN> output report <SPAN class="operator token">=</SPAN> gdb_path <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\'</SPAN> <SPAN class="operator token">+</SPAN> report ArcHydroTools<SPAN class="punctuation token">.</SPAN>ThinCrossSection<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"TEMP"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MaxNumberOfVertices"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">500</SPAN><SPAN class="punctuation token">,</SPAN> output<SPAN class="punctuation token">,</SPAN> report<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
And with this, I just had to set the arcpy workspace - I don't need to call SetTargetLocations from ArcHydro.
So specifically for yours, replacing 'fil' in the FillSinks call with the full path to 'fil' might work
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.