def makeTerrains(idList): fmask = 'C:\\amigos\\dump\\%s-site.3dm' for id in idList: FileUtils.deleteAll() fpaths = [fmask % id] FileUtils.importFiles(fpaths) makeTerrainSurfaces() makeTerrainFile(id)
def makeTerrainFile(site_id): filePath = 'C:\\amigos\\dump\\%s-terrain.3dm' % site_id outLayers = [ 'groundsurface', 'bigcontours', 'smallcontours', ] FileUtils.exportLayers(outLayers, filePath)
def makeProjectedFiles(idList, layerList, fileSuffix): fmask = 'C:\\amigos\\dump\\%s-%s.3dm' outMask = 'C:\\amigos\\dump\\%s-' + fileSuffix + '.3dm' types = ['site', 'terrain'] outLayers = [s + '-projected' for s in layerList] for siteId in idList: FileUtils.deleteAll() fpaths = [(fmask % (siteId, t)) for t in types] FileUtils.importFiles(fpaths) for i, layer in enumerate(layerList): lyrAtt = LayerUtils.layerAttributes(outLayers[i]) # make the layer # determine geometry type sampleGeom = LayerUtils.getLayerGeometry(layer) if len(sampleGeom) > 0: if type(sampleGeom[0]) == Point: resultPairs = IntersectionTools.smartPointLayerProject( layer, 'groundsurface', lyrAtt) # bake results for pair in resultPairs: scriptcontext.doc.Objects.AddPoint(pair[0], pair[1]) else: resultPairs = IntersectionTools.smartCurveLayerProject( layer, 'groundsurface', lyrAtt) # bake results for pair in resultPairs: scriptcontext.doc.Objects.AddCurve(pair[0], pair[1]) outPath = outMask % siteId FileUtils.exportLayers(outLayers, outPath)
def makeProjectedFiles(idList, layerList, fileSuffix): fmask = 'C:\\amigos\\dump\\%s-%s.3dm' outMask = 'C:\\amigos\\dump\\%s-'+fileSuffix+'.3dm' types = ['site', 'terrain'] outLayers = [s+'-projected' for s in layerList] for siteId in idList: FileUtils.deleteAll() fpaths = [(fmask % (siteId, t)) for t in types] FileUtils.importFiles(fpaths) for i, layer in enumerate(layerList): lyrAtt = LayerUtils.layerAttributes(outLayers[i]) # make the layer # determine geometry type sampleGeom = LayerUtils.getLayerGeometry(layer) if len(sampleGeom) > 0: if type(sampleGeom[0]) == Point: resultPairs = IntersectionTools.smartPointLayerProject(layer, 'groundsurface', lyrAtt) # bake results for pair in resultPairs: scriptcontext.doc.Objects.AddPoint(pair[0], pair[1]) else: resultPairs = IntersectionTools.smartCurveLayerProject(layer, 'groundsurface', lyrAtt) # bake results for pair in resultPairs: scriptcontext.doc.Objects.AddCurve(pair[0], pair[1]) outPath = outMask % siteId FileUtils.exportLayers(outLayers, outPath)
def addBillboards(): # must have projected things already FileUtils.importFile('C:\\amigos\\templates\\billboardangled.3dm') FileUtils.importFile('C:\\amigos\\templates\\billboardstraight.3dm') lyrAtt = LayerUtils.layerAttributes('billboards') bbs = LayerUtils.getLayerGeometry('geocodedbillboards-projected') bbs.extend(LayerUtils.getLayerGeometry('foundbillboards-projected')) bbpoints = [bb.Location for bb in bbs] frwys = LayerUtils.getLayerGeometry('freeways-projected') roads = LayerUtils.getLayerGeometry('roads-projected') for pt in bbpoints: vector = GeomTools.vectorToClosestCurve(pt, frwys, 100.0) if vector: # freeway within 100m bbModel = LayerUtils.getLayerGeometry('billboardangled') else: # no freeways within 100meters vector = GeomTools.vectorToClosestCurve(pt, roads) bbModel = LayerUtils.getLayerGeometry('billboardstraight') GeomTools.moveMany(bbModel, Vector3d(pt)) angle = vector.VectorAngle(Vector3d.XAxis, vector, Plane.WorldXY) GeomTools.rotateMany(bbModel, angle, Vector3d.ZAxis, pt) GeomTools.bakeMany(bbModel, lyrAtt) LayerUtils.deleteLayer('billboardstraight') LayerUtils.deleteLayer('billboardangled')
def addBillboards(): # must have projected things already FileUtils.importFile('C:\\amigos\\templates\\billboardangled.3dm') FileUtils.importFile('C:\\amigos\\templates\\billboardstraight.3dm') lyrAtt = LayerUtils.layerAttributes('billboards') bbs = LayerUtils.getLayerGeometry('geocodedbillboards-projected') bbs.extend( LayerUtils.getLayerGeometry('foundbillboards-projected') ) bbpoints = [bb.Location for bb in bbs] frwys = LayerUtils.getLayerGeometry('freeways-projected') roads = LayerUtils.getLayerGeometry('roads-projected') for pt in bbpoints: vector = GeomTools.vectorToClosestCurve(pt, frwys, 100.0) if vector: # freeway within 100m bbModel = LayerUtils.getLayerGeometry('billboardangled') else: # no freeways within 100meters vector = GeomTools.vectorToClosestCurve(pt, roads) bbModel = LayerUtils.getLayerGeometry('billboardstraight') GeomTools.moveMany( bbModel, Vector3d(pt) ) angle = vector.VectorAngle( Vector3d.XAxis, vector, Plane.WorldXY ) GeomTools.rotateMany( bbModel, angle, Vector3d.ZAxis, pt ) GeomTools.bakeMany( bbModel, lyrAtt ) LayerUtils.deleteLayer('billboardstraight') LayerUtils.deleteLayer('billboardangled')
def makeBillboardFiles(idList): fmask = 'C:\\amigos\\dump\\%s-%s.3dm' outMask = 'C:\\amigos\\dump\\%s-billboards.3dm' types = ['billboardpoints', 'terrain', 'roads', ] outLayers = ['billboards'] for siteId in idList: FileUtils.deleteAll() fpaths = [(fmask % (siteId, t)) for t in types] FileUtils.importFiles(fpaths) addBillboards() outPath = outMask % siteId FileUtils.exportLayers(outLayers, outPath)
def makeBillboardFiles(idList): fmask = 'C:\\amigos\\dump\\%s-%s.3dm' outMask = 'C:\\amigos\\dump\\%s-billboards.3dm' types = [ 'billboardpoints', 'terrain', 'roads', ] outLayers = ['billboards'] for siteId in idList: FileUtils.deleteAll() fpaths = [(fmask % (siteId, t)) for t in types] FileUtils.importFiles(fpaths) addBillboards() outPath = outMask % siteId FileUtils.exportLayers(outLayers, outPath)
def makeDrainFiles(idList): fmask = 'C:\\amigos\\dump\\%s-%s.3dm' outMask = 'C:\\amigos\\dump\\%s-drains.3dm' types = ['site', 'terrain'] outLayers = ['openchannels-projected', 'gravitymains-projected', 'lateraldrains-projected', 'catchbasins-projected', ] for id in idList: FileUtils.deleteAll() fpaths = [(fmask % (id, t)) for t in types] FileUtils.importFiles(fpaths) makeDrains() outPath = outMask % id FileUtils.exportLayers(outLayers, outPath)
def makeDrainFiles(idList): fmask = 'C:\\amigos\\dump\\%s-%s.3dm' outMask = 'C:\\amigos\\dump\\%s-drains.3dm' types = ['site', 'terrain'] outLayers = [ 'openchannels-projected', 'gravitymains-projected', 'lateraldrains-projected', 'catchbasins-projected', ] for id in idList: FileUtils.deleteAll() fpaths = [(fmask % (id, t)) for t in types] FileUtils.importFiles(fpaths) makeDrains() outPath = outMask % id FileUtils.exportLayers(outLayers, outPath)
def getSiteLayerDict(index, types, layers): id = ids[index] fmask = 'C:\\amigos\\dump\\%s-%s.3dm' fpaths = [(fmask % (id, t)) for t in types] return FileUtils.importLayerDict(fpaths, layers)
def importSiteFiles(siteId, types): fmask = 'C:\\amigos\\dump\\%s-%s.3dm' fpaths = [(fmask % (siteId, t)) for t in types] FileUtils.deleteAll() FileUtils.importFiles(fpaths)