Ejemplo n.º 1
0
 def test_data_frame_name(self):
     """Test getting a map docmment data frame name without a layer name in the path"""
     expected_name = task_utils.get_data_frame_name(
         r"C:\GISData\mxds\USRivers.mxd | Layers").strip()
     self.assertEqual(expected_name, "Layers")
Ejemplo n.º 2
0
 def test_data_frame_name_with_layer(self):
     """Test getting a map docmment data frame name with a layer name in the path"""
     name = task_utils.get_data_frame_name(
         'C:\GISData\mxds\USRivers.mxd | Layers\Rivers')
     self.assertEqual(name, 'Layers')
Ejemplo n.º 3
0
 def test_data_frame_name(self):
     """Test getting a map docmment data frame name without a layer name in the path"""
     expected_name = task_utils.get_data_frame_name(r"C:\GISData\mxds\USRivers.mxd | Layers").strip()
     self.assertEqual(expected_name, "Layers")
Ejemplo n.º 4
0
 def test_data_frame_name_with_layer(self):
     """Test getting a map docmment data frame name with a layer name in the path"""
     name = task_utils.get_data_frame_name('C:\GISData\mxds\USRivers.mxd | Layers\Rivers')
     self.assertEqual(name, 'Layers')
Ejemplo n.º 5
0
def get_items(input_items, out_workspace):
    """Returns the list of items to package."""
    layers = []
    files = []
    errors = 0
    skipped = 0
    for i, item in enumerate(input_items, 1):
        try:
            if item.endswith('.lyr'):
                layers.append(arcpy.mapping.Layer(item))
            else:
                # Is the item a mxd data frame.
                map_frame_name = task_utils.get_data_frame_name(item)
                if map_frame_name:
                    item = item.split('|')[0].strip()
                dsc = arcpy.Describe(item)
                if dsc.dataType in ('FeatureClass', 'ShapeFile', 'RasterDataset'):
                    if os.path.basename(item) in [l.name for l in layers]:
                        layer_name = '{0}_{1}'.format(os.path.basename(item), i)
                    else:
                        layer_name = os.path.basename(item)
                    if dsc.dataType == 'RasterDataset':
                        arcpy.MakeRasterLayer_management(item, layer_name)
                    else:
                        arcpy.MakeFeatureLayer_management(item, layer_name)
                    layers.append(arcpy.mapping.Layer(layer_name))
                elif dsc.dataType in ('CadDrawingDataset', 'FeatureDataset'):
                    arcpy.env.workspace = item
                    for fc in arcpy.ListFeatureClasses():
                        if os.path.basename(fc) in [l.name for l in layers]:
                            layer_name = '{0}_{1}'.format(os.path.basename(fc), i)
                        else:
                            layer_name = os.path.basename(fc)
                        arcpy.MakeFeatureLayer_management(fc, layer_name)
                        layers.append(arcpy.mapping.Layer(layer_name))
                    arcpy.env.workspace = out_workspace
                elif dsc.dataType == 'MapDocument':
                    in_mxd = arcpy.mapping.MapDocument(item)
                    if map_frame_name:
                        df = arcpy.mapping.ListDataFrames(in_mxd, map_frame_name)[0]
                        mxd_layers = arcpy.mapping.ListLayers(in_mxd, data_frame=df)
                    else:
                        mxd_layers = arcpy.mapping.ListLayers(in_mxd)
                    layers += mxd_layers
                elif item.endswith('.gdb') or item.endswith('.mdb'):
                    arcpy.env.workspace = item
                    for fc in arcpy.ListFeatureClasses():
                        if os.path.basename(fc) in [l.name for l in layers]:
                            layer_name = '{0}_{1}'.format(os.path.basename(fc), i)
                        else:
                            layer_name = os.path.basename(fc)
                        arcpy.MakeFeatureLayer_management(fc, layer_name)
                        layers.append(arcpy.mapping.Layer(layer_name))
                    for raster in arcpy.ListRasters():
                        if os.path.basename(raster) in [l.name for l in layers]:
                            layer_name = '{0}_{1}'.format(os.path.basename(raster), i)
                        else:
                            layer_name = os.path.basename(raster)
                        arcpy.MakeRasterLayer_management(raster, layer_name)
                        layers.append(arcpy.mapping.Layer(layer_name))
                    datasets = arcpy.ListDatasets('*', 'Feature')
                    for fds in datasets:
                        arcpy.env.workspace = fds
                        for fc in arcpy.ListFeatureClasses():
                            if os.path.basename(fc) in [l.name for l in layers]:
                                layer_name = '{0}_{1}'.format(os.path.basename(fc), i)
                            else:
                                layer_name = os.path.basename(fc)
                            arcpy.MakeFeatureLayer_management(fc, layer_name)
                            layers.append(arcpy.mapping.Layer(layer_name))
                        arcpy.env.workspace = item
                    arcpy.env.workspace = out_workspace
                elif dsc.dataType == 'File' or dsc.dataType == 'TextFile':
                    files.append(item)
                else:
                    status_writer.send_status(_('Invalid input type: {0}').format(item))
                    skipped_reasons[item] = 'Invalid input type'
                    skipped += 1
                    continue
        except Exception as ex:
            status_writer.send_status(_('Cannot package: {0}: {1}').format(item, repr(ex)))
            errors += 1
            errors_reasons[item] = repr(ex)
            pass
    return layers, files, errors, skipped