Advertisement
Guest User

Untitled

a guest
Jul 4th, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. #-------------------------------------------------------------------------------
  2. # name: Multiprocessing jobs
  3. #
  4. # Purpose: Methode om arcgis werktaken multiprocessed te verdelen
  5. #
  6. # Author: spoonm
  7. #
  8. # Created: 28/05/2015
  9. # Copyright: (c) martijn spoon 2015
  10. # Licence: <your licence>
  11. #-------------------------------------------------------------------------------
  12. #!/usr/bin/env python
  13.  
  14. # import system module
  15. import os
  16. import sys
  17. #import math
  18. #import time
  19.  
  20. import multiprocessing
  21. #max_process_count = multiprocessing.cpu_count()
  22. max_process_count = 4
  23.  
  24. #import arcview
  25. #import arcinfo
  26. #import arcpy
  27. #from arcpy import env
  28.  
  29. # Check out any necessary licenses
  30. #arcpy.CheckOutExtension("3D")
  31. # Check out the ArcGIS Spatial Analyst extension license
  32. #arcpy.CheckOutExtension("Spatial")
  33.  
  34. debug = True
  35.  
  36.  
  37. #from arcpy.sa import *
  38.  
  39. #-------------------------------------< Multiprocessing Pool functie>----------------------------------
  40. # hier worden de activiteiten verdeeld in de pool
  41.  
  42. def ToPool(poollist):
  43. # pool engine
  44. maxtask = max(1,len(poollist)/max_process_count)
  45. pool = multiprocessing.Pool(min(max_process_count,len(poollist)), maxtasksperchild=1)
  46. #pool = multiprocessing.Pool(min(max_process_count,len(poollist)), maxtasksperchild=maxtask)
  47. filelist = pool.map(dobefore,poollist) # stuur per item alle gegevens naar dobefore en via return terug naar filelist de resultaat rasters van urban(path +naam) terug naar main
  48. pool.close()
  49. pool.join()
  50.  
  51. # resultaat via filelist terugsturen naar def main()
  52. return filelist
  53.  
  54.  
  55.  
  56. def dobefore(bladlist):
  57. # arcpy taken uit GIS
  58. try:
  59. file = bladlist[0]
  60. print file
  61.  
  62. naam = os.path.basename(file)
  63. path = os.path.split(file)[0]
  64.  
  65. # resultaat per proces terug sturen naar Topool(filelist), van daar wordt het naar main gestuurd via return filelist
  66. return naam,path
  67.  
  68.  
  69. except:
  70. # deze except is gemaakt om fouten -uit Con functie- op te vangen, processen gaan door na melding.
  71. print "block fout opgetreden, proces zou verder moeten gaan!"
  72. return None,None # bij fout geef none
  73.  
  74. def main():
  75.  
  76.  
  77. bladlist = []
  78.  
  79. # Set environment settings
  80. #nv.workspace = workspace# os.path.split(inputAOIF)[0] #inputAOIF #inputFishnet
  81.  
  82. # voorbeeld input voor lijst
  83. path1 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\101.gdb\\RUR6_101"
  84. path2 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\102.gdb\\RUR6_102"
  85. path3 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\101.gdb\\RUR6_103"
  86. path4 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\102.gdb\\RUR6_104"
  87.  
  88. # nieuwe lijst met alle rasters
  89. files = [path1,path2,path3,path4]
  90. for f in files:
  91. #print f
  92. file = f
  93.  
  94. # list een folder op rasters
  95. bladlist.append([file])
  96.  
  97. # stuur lijst met variabelen(bladlist) door naar Pool functie
  98. #>>>>>>>>>>>>>>>>>>>
  99. #lijst_all = ToPool(bladlist) # lijst_all = filelist
  100. filelist = ToPool(bladlist) # lijst_all = filelist
  101. #>>>>>>>>>>>>>>>>>>>
  102.  
  103. nieuwelijst_name = []
  104. nieuwelijst_path= []
  105.  
  106. # uitkomsten per proces uit de pool weer samenvoegen...
  107. for item in range(len(filelist)):
  108. # maak een lijst met enkel de namen
  109. nieuwelijst_name.append(filelist[item][0]) # 0 = rural
  110. # maak een lijst met paden tot database
  111. nieuwelijst_path.append(filelist[item][1]) # 0 = rural
  112.  
  113.  
  114. print nieuwelijst_name
  115. print nieuwelijst_path
  116.  
  117.  
  118. pass
  119.  
  120. if __name__ == '__main__':
  121.  
  122. # voor run van model is het handig om alle benodigde data in een database te hebben.
  123. # Geef worksspace waar naaer raster moet worden gezocht...
  124.  
  125. #raster_folder = r"Y:\ontwdata\PBLbase\Martijn\PROJECTEN\WLV\Arno\Testen\rasters"
  126. #workspace = r"Y:\ontwdata\PBLbase\Martijn\PROJECTEN\WLV\Arno\Testen\workspace"
  127.  
  128.  
  129.  
  130.  
  131. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement