# 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")
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.