Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
def makeTerrainFile(site_id):
    filePath = 'C:\\amigos\\dump\\%s-terrain.3dm' % site_id
    outLayers = [
        'groundsurface',
        'bigcontours',
        'smallcontours',
    ]
    FileUtils.exportLayers(outLayers, filePath)
Пример #4
0
def makeTerrainFile(site_id):
    filePath = 'C:\\amigos\\dump\\%s-terrain.3dm' % site_id
    outLayers = [
            'groundsurface',
            'bigcontours',
            'smallcontours',
            ]
    FileUtils.exportLayers(outLayers, filePath)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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')
Пример #8
0
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')
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
def importSiteFiles(siteId, types):
    fmask = 'C:\\amigos\\dump\\%s-%s.3dm'
    fpaths = [(fmask % (siteId, t)) for t in types]
    FileUtils.deleteAll()
    FileUtils.importFiles(fpaths)
Пример #15
0
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)
Пример #16
0
def importSiteFiles(siteId, types):
    fmask = 'C:\\amigos\\dump\\%s-%s.3dm'
    fpaths = [(fmask % (siteId, t)) for t in types]
    FileUtils.deleteAll()
    FileUtils.importFiles(fpaths)