Ich bin derzeit damit beschäftigt, das folgende Python-Modul neu zu schreiben:<\/P>
<\/P>
Mir ist gerade aufgefallen, dass ArcHydro weder arcpy.env.workspace noch ArcHydroTools.SetTargetLocations("HydroConfig", "Layers", "RasterWorkspace", "VectorWorkspace") erkennt.<\/P>
'''Erstellt am 13. März 2017ArcHydro Hauptmodell@author: PeterW'''<\/SPAN># importiere Systemmodule und site-packages<\/SPAN>from<\/SPAN> pathlib import<\/SPAN> Pathimport<\/SPAN> arcpyimport<\/SPAN> ArcHydroTools# Argumente setzen<\/SPAN>rasters_workspace =<\/SPAN> r"E:\\Projects\\2016\\G113386\\ArcHydro\\Model01\\Layers01"<\/SPAN>dem =<\/SPAN> r"E:\\Projects\\2016\\G113386\\DEM\\raw"<\/SPAN>fgdb_workspace =<\/SPAN> r"E:\\Projects\\2016\\G113386\\ArcHydro\\Model01\\Model01.gdb"<\/SPAN># Extensions auschecken und Umgebungsvariablen setzen<\/SPAN>arcpy.<\/SPAN>CheckOutExtension(<\/SPAN>"Spatial"<\/SPAN>)<\/SPAN>arcpy.<\/SPAN>env.<\/SPAN>overwriteOutput =<\/SPAN> True<\/SPAN>def<\/SPAN> rasters_main<\/SPAN>(<\/SPAN>rasters_workspace, <\/SPAN>dem)<\/SPAN>:<\/SPAN> """ Erstelle Raster als Teil der ArcHydro Vorverarbeitung"""<\/SPAN> # Raster-Arbeitsbereich setzen<\/SPAN> arcpy.<\/SPAN>env.<\/SPAN>workspace =<\/SPAN> rasters_workspace # ArcHydro Zielorte für Raster- und Vektor-Datensätze setzen<\/SPAN> ArcHydroTools.<\/SPAN>SetTargetLocations(<\/Span>"HydroConfig", "Layers", rasters_workspace, fgdb_workspace) # Fill Sinks Raster erstellen arcpy.AddMessage("Verarbeite Fill Sinks") ArcHydroTools.FillSinks(dem, "fil") # Flow Direction Raster erstellenrasters_main(rasters_workspace, dem)< span >< < EM OJ I _35 > > </ span >< span >< < EM OJ I _36 > > </ span ></ span ></ CODE ></ PRE >< P > Python-Modul: arcpy.env.workspace und ArcHydroTools.SetTargetLocations werden von ArcHydro ignoriert < / P >< P >< / P >< PRE class = "lia-code-sample line-numbers language-none" >< CODE > Verarbeitung Fill Sinks Traceback (letzter Aufruf zuletzt): Datei "E:\Python\Eclipse\2015\arcpy64bit\src\archydro\archydro_main_test.py", Zeile 34, in rasters_main(rasters_workspace, dem) Datei "E:\Python\Eclipse\2015\arcpy64bit\src\archydro\archydro_main_test.py", Zeile 31, in rasters_main ArcHydroTools.FillSinks(dem, "fil") Datei "C:\Program Files\ESRI\WaterUtils\ArcHydro\bin\ArcHydroTools.py", Zeile 6805, in FillSinks raise earcgisscripting.ExecuteError: Sie müssen entweder den Geoverarbeitungs-Arbeitsbereich oder den Arc Hydro Raster-Speicherort festlegen, bevor Sie das Werkzeug ausführen.Fehler bei der Ausführung (FillSinks).<<EMOJI_37> >< span >< < EM OJ I _38 > > </ span >< span >< < EM OJ I _39 > > </ span >< span >< < EM OJ I _40 > > </ span >< span >< < EM OJ I _41 > > </ span >< span >< < EM OJ I _42 > > </ span >< span >< < EM OJ I _43 > > </ span >< span >< < EM OJ I _44 > > </ span >< span >< < EM OJ I _45 > > </ span >< span >< < EM OJ I _46 > > </ span >< span >< < EM OJ I _47 > > </ span >< span >< < EM OJ I _48 > > </ span >< span >< < EM OJ I _49 > > </ span ></ CODE ></ PRE >< P > Fehlermeldung:< / P >< P >< / P >< P > Ich verwende derzeit ArcGIS 10.3.1 und ArcHydroTools 10.3.0.78.< / P >< / BODY >< / HTML >
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
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.