Seite 2 von 2

Verfasst: Mittwoch 20. Juni 2007, 12:12
von Zap
Ich denke N317V hat das mit dem "nicht leeren" Ordner überlesen.
Weiß atm nicht ob es ne Möglichkeit gibt eine rmdir ähnliche Methode zu verwenden die force ein Verzeichnis löscht.
Also meine Lösung da oben sollte funktionieren.
Erst werden die Dateien im Ordner gelöscht dann der Ordner.
Es fehlen allerdings die try: except Blöcke, wenn dein Programm dir nicht die exceptions bei Fehlschlägen um die Ohren hauen soll.

Verfasst: Mittwoch 20. Juni 2007, 12:14
von BlackJack
Zum löschen von ganzen Verzeichnisbäumen gibt's `shutil.rmtree()`.

Verfasst: Mittwoch 20. Juni 2007, 13:17
von mazdafox
danke leute habe schon eine neue möglichkeit gefunden und es funktioniert nun! hier mal mein fertiges programm kann man daran noch was verbessern??? fällt euch was auf?

mfg christoph

Code: Alles auswählen

# ---------------------------------------------------------------------------
# SDE_TIN_temp.py
# Created on: Mi Jun 13 2007 
#   (generated by Pueler Christoph)
# ---------------------------------------------------------------------------

# Import system modules
import sys, string, os, arcgisscripting, datetime

# Create the Geoprocessor object
gp = arcgisscripting.create()

print ("--------------------------- Opening Tool: 2D to 3D ---------------------------")
print ("")

now1 = datetime.datetime.now()

print "------------- Calculating started at: " , now1 , "------------"
print ("")

# Check out any necessary licenses
gp.CheckOutExtension("3D")

# Load required toolboxes...
gp.AddToolbox("C:/Programme/ArcGIS/ArcToolbox/Toolboxes/3D Analyst Tools.tbx")
gp.AddToolbox("C:/Programme/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")

# Local variables...
Delete_succeeded = "false"
TIN_Temp = "C:\\TIN_Temp"
TIN_Temp_2 = "C:\\TIN_Temp"
DHM_Point_fein1 = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein1"
DHM_Point_fein2 = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein2"
DHM_Point_grob = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_grob"
DHM_Polyline_richtig_Albania = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Albania"
DHM_Polyline_richtig_Greece = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Greece"
DHM_Route_Dissolve = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route_Dissolve"
DHM_Route = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route"
DHM_Terrain = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Terrain"

print ("-------------------------- Creating TIN local at C:\ -------------------------")

# Process: Create TIN...
try: 
  gp.Delete_management(TIN_Temp, "Tin")
except:
  pass
gp.CreateTin_3d(TIN_Temp, "PROJCS['WGS_1984_UTM_Zone_34N',GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',21.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]")

# Process: Edit TIN...
gp.EditTin_3d(TIN_Temp, "'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein1' GRID_CODE <None> masspoints false;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein2' GRID_CODE <None> masspoints false;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_grob' B1 <None> masspoints false;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Albania' ELEVATION <None> hardline true;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Greece' ELEVATION <None> hardline true")

print ("                 !!!!! Saving TIN successfully finished !!!!!                 ")
print ("")
print ("-------------------------------- Merging Route -------------------------------")

# Process: Dissolve...
try: 
  gp.Delete_management(DHM_Route_Dissolve, "FeatureClass")
except:
  pass
gp.Dissolve_management(DHM_Route, DHM_Route_Dissolve, "", "", "MULTI_PART")

print ("               !!!!! Merging Route successfully finished !!!!!                ")
print ("")
print ("--------------------------- Interpolate_Shape_to_3D --------------------------")
print ("---------------------------- Getting Input Surface ---------------------------")
print ("------------------------- Getting Input Feature Class ------------------------")
print ("----------------------- Exporting Output Feature Class -----------------------")

# Process: Interpolate Shape...
try: 
  gp.Delete_management(DHM_Terrain, "FeatureClass")
except:
  pass
gp.InterpolateShape_3d(TIN_Temp_2, DHM_Route_Dissolve, DHM_Terrain, "", "1", "BILINEAR")

print ("           !!!!! Interpolate Shape to 3D successfully finished !!!!!          ")
print ("")
print ("------------------------ Deleting TIN from local disk ------------------------")

# Process: Delete...
gp.Delete_management(TIN_Temp_2, "Tin")

print ("                !!!!! Deleting TIN successfully finished !!!!!                ")
print ("")

now2 = datetime.datetime.now()

print "       !!! Tool: 2D to 3D successfully finished after",now2-now1,"!!!      "
print ("")
print ("")
print ("------------------------ !!! Press enter to close !!! ------------------------")

wait=raw_input()

Verfasst: Mittwoch 20. Juni 2007, 13:32
von BlackJack
``print`` ist keine Funktion, die Klammern um die "Argumente" sehen "komisch" aus.

Den "Quelltext" für die GIS-Anwendung hätte ich nicht auf eine Monsterzeile gepackt.

Und ein ``except:`` ohne eine konkrete Ausnahme sollte man nicht verwenden. Das verschluckt wirklich *alles* und erschwert damit die Fehlersuche ungemein.

Verfasst: Mittwoch 20. Juni 2007, 13:35
von mazdafox
was soll ich statt print nehmen?

Verfasst: Mittwoch 20. Juni 2007, 14:06
von apollo13
Du sollst statt print ("blubb") print "blubb" schreiben :)

Verfasst: Mittwoch 20. Juni 2007, 14:43
von Zap
vorallem mehrzeilige Ausgaben sind in der Regel so besser:

Code: Alles auswählen

print """Angefangen mit 3 Anführungszeichen
und
abschließend mit 3 Anführungszeichen"""

Verfasst: Mittwoch 20. Juni 2007, 14:47
von mazdafox
sind nicht mehrzeigig! möchte nur abstände daher das print ""

Verfasst: Mittwoch 20. Juni 2007, 14:59
von Zap
mazdafox hat geschrieben:sind nicht mehrzeigig! möchte nur abstände daher das print ""
Und wie mehrzeilig das ist:

Code: Alles auswählen

print "       !!! Tool: 2D to 3D successfully finished after",now2-now1,"!!!      " 
print ("") 
print ("") 
print ("------------------------ !!! Press enter to close !!! ------------------------") 
geht auch so:

Code: Alles auswählen

mein_text = """       !!! Tool: 2D to 3D successfully finished after %s!!!


------------------------!!! Press enter to close !!! ------------------------"""

print mein_text % str(now2-now1)

Verfasst: Freitag 22. Juni 2007, 08:02
von N317V
Zap hat geschrieben:Ich denke N317V hat das mit dem "nicht leeren" Ordner überlesen.
Stimmt! Das hab ich nicht gelesen. Ich hatte mich ja schon auf einen viel früheren Beitrag bezogen. Sorry!