Ejemplo n.º 1
0
def writeMetadata(ShapeFile, lngruntime):
    print "Writing metadata to shapefile"
    metadata = md.MetadataEditor(ShapeFile)
    metadata.title.set("Missouri Mesonet Stations")
    abstractMessage = "Missouri mesonet station data obtained from the Missouri Climate Center at %s. This data includes temperature, dew point, wind speed, wind direction, and pressure." % (lngruntime)
    metadata.abstract.set(abstractMessage)
    metadata.tags.add(["Missouri", "Climate", "Center", "Mesonet", "temperature", "dew", "point", "wind", "speed", "direction", "pressure"])
    metadata.finish()
Ejemplo n.º 2
0
    def _write_metadata(data_set):
        """
        Write test values to metadata
        :param data_set: 
        :return: 
        """
        metadata = md.MetadataEditor(data_set, loglevel="DEBUG")
        # also has a feature_layer parameter if you're working with one, but edits get saved back to the source feature class

        for key in test_elements.keys():
            if hasattr(metadata, key):
                # write simple elements directly to property
                if not isinstance(test_elements[key], (
                        list,
                        dict,
                )):
                    setattr(metadata, key, test_elements[key])

                # for nested elements loop over children and write to properties of parent element
                if isinstance(test_elements[key], dict):
                    item = getattr(metadata, key)
                    for k in test_elements[key].keys():
                        setattr(item, k, test_elements[key][k])

                # for list elements loop either over children and write to properties of parent element or write entire list to property
                if isinstance(test_elements[key], list):
                    if isinstance(test_elements[key][0], dict):
                        item = getattr(metadata, key)
                        i = 0
                        while len(item) < len(test_elements[key]):
                            item.new()
                        while len(item) > len(test_elements[key]):
                            item.pop()
                        for element in test_elements[key]:
                            for k in element.keys():
                                setattr(item[i], k, test_elements[key][i][k])
                            i += 1
                    else:
                        setattr(metadata, key, test_elements[key])

            else:
                print("{0} does not exist. SKIP".format(key))

        metadata.save(
        )  # save the metadata back to the original source feature class and cleanup. Without calling finish(), your edits are NOT saved!

        del metadata
        gc.collect()
Ejemplo n.º 3
0
    def _run_example(self, feature_class):
        metadata = md.MetadataEditor(
            feature_class
        )  # also has a feature_layer parameter if you're working with one, but edits get saved back to the source feature class
        metadata.title = "The metadata title!"

        generated_time = "This layer was generated on {0:s}".format(
            datetime.datetime.now().strftime("%m/%d/%Y %I:%M %p"))

        metadata.purpose = "Layer represents locations of the rare Snipe."

        metadata.abstract += "generated by ___ software"
        metadata.abstract += generated_time
        metadata.tags += [
            "foo", "bar", "baz"
        ]  # tags.extend is equivalent to maintain list semantics

        metadata.finish(
        )  # save the metadata back to the original source feature class and cleanup. Without calling finish(), your edits are NOT saved!

        del metadata
        gc.collect()
Ejemplo n.º 4
0
def update_metadata(in_fc, tech_title, gfw_env):

    api_url = settings.get_settings(gfw_env)['metadata']['api_url']
    layer_url = api_url + r'/' + tech_title

    response = requests.get(layer_url)
    api_data = json.loads(response.text)

    md = arcpy_metadata.MetadataEditor(in_fc)

    md.title = escape_html(api_data['title'])
    md.purpose = escape_html(api_data['function'])
    md.abstract = escape_html(api_data['overview'])
    md.tags = api_data['tags'].split(",")
    md.extent_description = escape_html(api_data['geographic_coverage'])
    md.last_update = escape_html(api_data['date_of_content'])
    md.update_frequency = escape_html(api_data['frequency_of_updates'])
    md.citation = escape_html(api_data['citation'])
    md.limitation = escape_html(api_data['cautions'])
    md.source = escape_html(api_data['source'])
    md.scale_resolution = escape_html(api_data['resolution'])
    md.supplemental_information = escape_html(api_data['other'])

    md.finish()
Ejemplo n.º 5
0
            arcpy.env.overwriteOutput = True
            calcFileName = os.path.splitext(calcFile)[0]
            calcFile1 = outplace + '/' + 'a' + calcFileName[1:-1]
            arcpy.Times_3d(calcFile, 0.0393701, calcFile1)
            arcpy.AddMessage("Converted " + calcFileName + ' to inches')

# Add Metadata Input
ischecked5 = arcpy.GetParameterAsText(12)

if str(ischecked5) == 'true':
    env.workspace = outplace
    metaFileList = arcpy.ListRasters('a*')
    for metafile in metaFileList:
        if int(metafile[1:-1]) >= (int(arcpy.GetParameterAsText(8)) * 100 +
                                   int(arcpy.GetParameterAsText(9))):
            metaplace = outplace + '/' + metafile
            metadata = md.MetadataEditor(metaplace)
            metadata.title.set('PRISM precipitation data (inches) ' +
                               metafile[-3:-1] + ' ' + metafile[1:-3])  #
            metadata.purpose.set('PRISM Raster File in Inches ' +
                                 metafile[-3:-1] + ' ' + metafile[1:-3])
            metadata.abstract.append('PRISM Raster File in Inches ' +
                                     metafile[-3:-1] + ' ' + metafile[1:-3])
            metadata.tags.add([
                "PRISM", "Precipitation", "Inches", metafile[-3:-1],
                metafile[1:-3]
            ])  # tags.extend is equivalent to maintain list semantics
            metadata.finish(
            )  # save the metadata back to the original source feature class and cleanup. Without calling finish(), your edits are NOT saved!
            arcpy.AddMessage("Added Metadata to " + metafile + ' to inches')
Ejemplo n.º 6
0
del sheet1
sheet = book.sheet_by_index(
    0)  # busca la primera hoja del libro (con el indice 0)
ruta_base = arcpy.GetParameterAsText(1)
# ruta_base = ruta_base.replace("\\","/")
arcpy.AddMessage(ruta_base)
arcpy.AddMessage(sheet.nrows)
for row_index in range(4, sheet.nrows, 1):
    print ruta_base + '\\' + sheet.cell(
        row_index, 0).value + '\\' + sheet.cell(row_index, 1).value
    archivo = ruta_base + '\\' + sheet.cell(
        row_index, 0).value + '\\' + sheet.cell(row_index, 1).value
    if (os.path.exists(archivo)):
        try:
            arcpy.AddMessage(archivo)
            metadata = md.MetadataEditor(archivo)
            # arcpy.AddMessage(archivo)
            metadata.title = sheet.cell(row_index, 2).value
            metadata.purpose = sheet.cell(row_index, 14).value
            if sheet.cell(row_index, 11).value == "":
                laesca = "Escala: " + str(sheet.cell(row_index, 10).value)
            else:
                laesca = "Escala: " + str(sheet.cell(row_index, 10).value) + \
                         " Resolucion: " + str(sheet.cell(row_index, 11).value)
            metadata.scale_resolution = laesca
            metadata.place_keywords = [
                sheet.cell(row_index, 6).value,
                sheet.cell(row_index, 7).value
            ]
            los_meta = []
            if sheet.cell(row_index, 3).value != "" and sheet.cell(
Ejemplo n.º 7
0
    def _read_metadata(self, dataset):
        """
        Read previously saved metadata and compare with orininal values
        :param dataset: 
        :return: 
        """
        metadata = md.MetadataEditor(dataset, loglevel="DEBUG")

        # Loop over all elements listed in test_elements to check if values were correctly saved
        for key in test_elements.keys():
            if hasattr(metadata, key):
                item = getattr(metadata, key)

                # simple elements (text, numeric, date)
                if not isinstance(test_elements[key], (list, dict)):

                    # convert date back to string
                    if isinstance(item, (datetime, date)):
                        if len(test_elements[key]) == 8:
                            test_date = datetime.strptime(
                                test_elements[key], "%Y%m%d")
                        else:
                            test_date = datetime.strptime(
                                test_elements[key], "%Y-%m-%dT%H:%M:%S")

                        print("{0}: before = {1}; after = {2}".format(
                            key, test_date, item))

                        self.assertEqual(
                            item, test_date,
                            'Value for element {0} was not correctly saved'.
                            format(key))

                    else:
                        print("{0}: before = {1}; after = {2}".format(
                            key, test_elements[key], item))
                        self.assertEqual(
                            item, test_elements[key],
                            'Value for element {0} was not correctly saved'.
                            format(key))

                # parent items (eg contacts)
                elif isinstance(test_elements[key], dict):
                    for k in test_elements[key].keys():
                        child = test_elements[key][k]
                        print("{0}.{1}: before = {2}; after = {3}".format(
                            key, k, child, getattr(item, k)))
                        self.assertEqual(
                            getattr(item, k), child,
                            'Value for element {0}.{1} was not correctly saved'
                            .format(key, k))

                # lists
                elif isinstance(test_elements[key], list):
                    # nested lists
                    if isinstance(test_elements[key][0], dict):

                        # make sure both lists are sorted in the same way
                        keys = test_elements[key][0].keys()
                        sorted_items = sorted(
                            item,
                            key=lambda x:
                            (getattr(x, keys[0]), getattr(x, keys[1])))
                        sorted_elements = sorted(test_elements[key],
                                                 key=lambda x:
                                                 (x[keys[0]], x[keys[1]]))

                        i = 0
                        for sub_element in sorted_elements:
                            for k in sub_element:
                                child = sub_element[k]
                                print(
                                    "{0}[{1}].{2}: before = {3}; after = {4}".
                                    format(key, i, k, child,
                                           getattr(sorted_items[i], k)))
                                self.assertEqual(
                                    getattr(sorted_items[i], k), child,
                                    'Value for element {0}[{1}].{2} was not correctly saved'
                                    .format(key, i, k))
                            i += 1
                    # simple lists
                    else:
                        print("{0}: before = {1}; after = {2}".format(
                            key, test_elements[key], item))
                        self.assertEqual(
                            item.sort(), test_elements[key].sort(),
                            'Value for element {0} was not correctly saved'.
                            format(key))

            else:
                print("{0} does not exist. SKIP".format(key))

        del metadata
        gc.collect()
Ejemplo n.º 8
0
    # make a list of path
    # settings_dict = {s: dict(config.items(s)) for s in config.sections()}
##    path_dict = {md.get("name"): dict(config.items(md)) for md in search.get("results")}
    names_dict = {}
    for md_isogeo in search.get("results"):
        if md_isogeo.get("type")in ["vectorDataset", "rasterDataset"] and md_isogeo.get("name"):
            names_dict[md_isogeo.get("name")] = md_isogeo.get("abstract")
        else:
            pass

    # print(names_dict.keys()[8])
    print(names_dict.keys())
        

    # arcpy
    enviro.workspace = config.get('esri', 'sde_file')
    fcList = arcpy.ListFeatureClasses()
    for fc in fcList[:10]:
        # print(fc)
        # in names_dict.keys()
        if fc == "SIG.DSU_INCIDENT":
            src_md = arc_md.MetadataEditor(fc)
            print(src_md.title)
            ig_md = names_dict.get(fc)
            print(ig_md)