# --------------------------------------------------------------------------------------------------------------------
# ccm_import.py
# Created on: Feb 15 2006
# Usage: ccm_import <Output-Pfad> <Segments_e00-File> <Catchments_e00-File> <BIL-File> <PGDB-Name> 
# Description: 
# Dieses Tool importiert die zwei e00-Files sowie das BIL-Rasterfile  aus der River and Catchment
# Database for Europe (CCM) in eine einfache Personal Geodatabase. Eine Umprojizierung nach CH1903
# findet auch statt. Als Input-Parameter sind die beiden e00-Files, das BIL-File sowie der Ordner der
# PGDB und deren Name zu &#252;bergeben.
# --------------------------------------------------------------------------------------------------------------------

# Import system modules
import sys, string, os, win32com.client

# Create the Geoprocessor object
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")

# Der Befehl holt sich zwar nicht automatisch eine ArcInfo-Lizenz, er muss aber trotzdem
# vorhanden sein, damit das Script l&#228;uft!!!
gp.SetProduct("ArcInfo")

# Load required toolboxes...
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Conversion Tools.tbx")
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")
gp.AddToolbox("C:/ArcGIS/arcexe9x/Toolboxes/Coverage Tools.tbx")

# Script arguments...
Pfad = sys.argv[1]
SegmentFile = sys.argv[2]
CatchmentFile = sys.argv[3]
BILFile = sys.argv[4]
PGDBName = sys.argv[5]
PGDB = Pfad + "\\" + sys.argv[5]

gp.AddMessage("Setze Workspace")
gp.workspace = Pfad
gp.scratchWorkspace = Pfad

gp.AddMessage("Setze lokale Variablen")
Lambert = "PROJCS['User_Defined_Lambert_Azimuthal_Equal_Area',GEOGCS['GCS_User_Defined',DATUM['D_User_Defined',SPHEROID['User_Defined_Spheroid',6378388.0,0.0]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Lambert_Azimuthal_Equal_Area'],PARAMETER['False_Easting',0.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',10.0],PARAMETER['Latitude_Of_Origin',52.0],UNIT['Meter',1.0]]"
CH1903 = "PROJCS['CH1903_LV03',GEOGCS['GCS_CH1903',DATUM['D_CH1903',SPHEROID['Bessel_1841',6377397.155,299.1528128]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Hotine_Oblique_Mercator_Azimuth_Center'],PARAMETER['False_Easting',600000.0],PARAMETER['False_Northing',200000.0],PARAMETER['Scale_Factor',1.0],PARAMETER['Azimuth',90.0],PARAMETER['Longitude_Of_Center',7.439583333333333],PARAMETER['Latitude_Of_Center',46.95240555555556],UNIT['Meter',1.0]];-10000 -10000 100000;0 100000;0 100000"
RasterTemp = "landcover"
CatchmentTemp = "catch"
SegmentTemp = "seg"

gp.AddMessage("Erstelle PGDB")
gp.CreatePersonalGDB_management(Pfad, PGDBName)

gp.AddMessage("Definiere BIL-Projektion")
gp.DefineProjection_management(BILFile, Lambert)

gp.AddMessage("Projiziere BIL-Raster")
gp.ProjectRaster_management(BILFile, RasterTemp, CH1903, "NEAREST", "250")

gp.AddMessage("Verschiebe BIL-Raster in PGDB")
gp.RasterToGeodatabase_conversion(RasterTemp, PGDB, "")

gp.AddMessage("Importiere e00-Files")
gp.Import_arc("AUTO", CatchmentFile, CatchmentTemp)
gp.Import_arc("AUTO", SegmentFile, SegmentTemp)

gp.AddMessage("Definiere Coverage-Projektionen")
gp.DefineProjection_management(CatchmentTemp, Lambert)
gp.DefineProjection_management(SegmentTemp, Lambert)

gp.AddMessage("Coverage Feature Classes umprojizieren und in PGDB verschieben")
gp.Project_management(CatchmentTemp + "\\polygon", PGDB + "\\catchments", CH1903)
gp.Project_management(CatchmentTemp + "\\region.seaoutlet", PGDB + "\\seaoutlets", CH1903)
gp.Project_management(CatchmentTemp + "\\label", PGDB + "\\labels", CH1903)
gp.Project_management(SegmentTemp + "\\arc", PGDB + "\\segments", CH1903)

gp.AddMessage("L&#246;sche alle tempor&#228;ren Coverages")
gp.Delete(CatchmentTemp)
gp.Delete(SegmentTemp)
gp.Delete(RasterTemp)
