# MobileDirectLoad.py # load coverage tiles # Kimo Nov 2006 # With simple toolbox # or just run from PythonWin # # load directly from coverages 12 April 2012 # except for parcels which are multipart direct load # from currentgdb/parcel.gdb # ArcGIS 9.1 # ArcGIS 9.3+ October 2009 # bugfix 21 Oct 2009 in warning message # 10.0 with 9.3 gdb format 10 Nov 2011 # 10.0 upgrade # 14 April 2012 # 19 June 2012 bug fix for ccaddress import arcpy,sys,os,datetime # -- functions removed -- #======================== main ============================= start = datetime.datetime.now() droplst = ["xyz","rings_ok","rings_nok","lpoly#","rpoly#", "fnode#","tnode#","length","area","perimeter", "lpoly","rpoly","parcel#","parcel-id","poly#", "sufi","toc-code","parcel-int", "total-area","addressp", "pre-dir", "street-name", "street-type", "suf-dir","name-crs","alt-id", "$polygonid", "range_low","range_high","unofficial", "multi","case1","case2","case3", "$SCALE","$ANGLE","PAR-ID","OTHR#","OTHR-ID",] sr = arcpy.SpatialReference() sr.factoryCode = 2193 # NZTM sr.create() arcpy.env.outputCoordinateSystem = sr try: gdb = sys.argv[1] # "e:/crs/mobile/mobile.gdb" repl = sys.argv[2] arcpy.AddMessage(repl) if repl.lower() == 'true' : replace = True elif not repl.lower() == 'false': replace = False except : gdb = "e:/crs/mobile/mobile.gdb" replace =False ws = "e:/lib/nztm/tile" if not arcpy.Exists(gdb) : dir = os.path.dirname(gdb) filegdb = os.path.basename(gdb) print dir,filegdb arcpy.management.CreateFileGDB(dir,filegdb,"9.3") arcpy.env.workspace = ws+"/t1001/data" dictCov = { "add_all":"address/point", "emf":"emf/point", "fename":"fename/point", "hydro":"hydro/polygon", "hydrobdy":"hydro/arc", "lparcel":"lparcel/arc", "olabel":"olabel/point", "owner":"owner/point", "parcel":"parcel/polygon", "parcelbdy":"parcel/arc", "perror":"perror/polygon", "plabel":"plabel/point", "plan":"plan/point", "pother":"pother/region.othr", "strata":"pother/region.othr", "rail":"rail/arc", "res":"res/polygon", "reserve":"res/polygon", "road":"road/arc", "shway":"shway/arc", "surveypt":"surveypt/point", "title":"title/point", "titledif":"titledif/point", "up":"up/point", "uparcel":"uparcel/point" } lstFC = ["add_all","title","fename","road","rail","strata","plabel","olabel","lparcel","up","uparcel","surveypt","plan","perror","reserve","parcelbdy",] # lstFC = ["title","fename","parcelbdy","road","rail","strata","plabel","olabel","lparcel","up","uparcel","surveypt","plan","perror","reserve"] # parcel removed because multipart from elsewhere # lstFC = ["add_all"] # xlabel removed 13 July 2007 # address renamed because special processing required for outFCName in lstFC : cov = dictCov[outFCName] fds = cov.split("/")[0] print "Processing",outFCName,cov arcpy.AddMessage(outFCName) if not arcpy.Exists(gdb+"/"+outFCName) : lstSrc = [] # merge the coverages in all the tiles from 1001 - 1012 for ld in range(12) : tile = "t%d" % (ld + 1001) srcCov = ws+"/"+tile+"/data/"+cov if arcpy.Exists(srcCov) : lstSrc.append(srcCov) else : arcpy.AddError(srcCov+'not found') print srcCov,"NOT FOUND" # Create FieldMappings object to manage merge output fields fieldMappings = arcpy.CreateObject("FieldMappings") # Add all fields from sources for src in lstSrc: fieldMappings.addTable(src) # hide fields print " removing ", for fld in [fds+"#",fds+"-ID"] + droplst: #include cov# and cov-id pos = fieldMappings.findFieldMapIndex(fld.upper()) # print pos,fld if pos >= 0 : fieldMappings.removeFieldMap(pos) print fld.upper(), print print " keeping ", for x in range(fieldMappings.fieldCount): print fieldMappings.getFieldMap(x).outputField.name, print arcpy.Merge_management(lstSrc, gdb+"/"+outFCName,fieldMappings ) print outFCName,"merged" arcpy.AddMessage(outFCName+" merged") else : print "Skipping load of",outFCName arcpy.AddWarning("Skipping load of "+outFCName) print "Done", datetime.datetime.now() - start arcpy.AddMessage("Done")
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.