コード例 #1
0
        public SimpleMetadataViewModel GetMetadataModel(string uuid)
        {
            SimpleMetadata metadata = new SimpleMetadata(_geoNorge.GetRecordByUuid(uuid));

            var model = new SimpleMetadataViewModel()
            {
                Uuid             = metadata.Uuid,
                Title            = metadata.Title,
                HierarchyLevel   = metadata.HierarchyLevel,
                ParentIdentifier = metadata.ParentIdentifier,
                MetadataStandard = metadata.MetadataStandard,
                Abstract         = metadata.Abstract != null?metadata.Abstract.Replace("...", "") : "",

                                       ContactMetadata  = new Contact(metadata.ContactMetadata, "pointOfContact"),
                                       ContactPublisher = new Contact(metadata.ContactPublisher, "publisher"),
                                       ContactOwner     = new Contact(metadata.ContactOwner, "owner"),

                                       SupplementalDescription = metadata.SupplementalDescription,
                                       SpecificUsage           = metadata.SpecificUsage,

                                       ProcessHistory = metadata.ProcessHistory,
                                       ProductPageUrl = metadata.ProductPageUrl,

                                       DistributionUrl      = metadata.DistributionDetails != null ? metadata.DistributionDetails.URL : null,
                                       DistributionProtocol = metadata.DistributionDetails != null ? metadata.DistributionDetails.Protocol : null,

                                       MaintenanceFrequency = metadata.MaintenanceFrequency,
                                       DateUpdated          = metadata.DateUpdated,
                                       DateMetadataUpdated  = metadata.DateMetadataUpdated,

                                       KeywordsPlace = CreateListOfKeywords(SimpleKeyword.Filter(metadata.Keywords, SimpleKeyword.TYPE_PLACE, null)),
                                       KeywordsNationalInitiative = CreateListOfKeywords(SimpleKeyword.Filter(metadata.Keywords, null, SimpleKeyword.THESAURUS_NATIONAL_INITIATIVE)),
                                       KeywordsNationalTheme      = CreateListOfKeywords(SimpleKeyword.Filter(metadata.Keywords, null, SimpleKeyword.THESAURUS_NATIONAL_THEME)),
                                       KeywordsEnglish            = CreateDictionaryOfEnglishKeywords(metadata.Keywords),

                                       UseConstraints           = metadata.Constraints != null ? metadata.Constraints.UseConstraints : null,
                                       OtherConstraintsLink     = metadata.Constraints != null ? metadata.Constraints.OtherConstraintsLink : null,
                                       OtherConstraintsLinkText = metadata.Constraints != null ? metadata.Constraints.OtherConstraintsLinkText : null,
                                       OtherConstraintsAccess   = metadata.Constraints != null ? metadata.Constraints.OtherConstraintsAccess : null,

                                       EnglishTitle    = metadata.EnglishTitle,
                                       EnglishAbstract = metadata.EnglishAbstract,
                                       EnglishContactMetadataOrganization  = metadata.ContactMetadata != null ? metadata.ContactMetadata.OrganizationEnglish : null,
                                       EnglishContactPublisherOrganization = metadata.ContactPublisher != null ? metadata.ContactPublisher.OrganizationEnglish : null,
                                       EnglishContactOwnerOrganization     = metadata.ContactOwner != null ? metadata.ContactOwner.OrganizationEnglish : null
            };

            if (metadata.BoundingBox != null)
            {
                model.BoundingBoxEast  = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.EastBoundLongitude);
                model.BoundingBoxWest  = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.WestBoundLongitude);
                model.BoundingBoxNorth = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.NorthBoundLatitude);
                model.BoundingBoxSouth = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.SouthBoundLatitude);
            }

            // Translations
            model.TitleFromSelectedLanguage = model.TitleTranslated();
            return(model);
        }
コード例 #2
0
 public static SimpleMetadata FetchMetadata(string uuid)
 {
     try
     {
         GeoNorge         g        = new GeoNorge("", "", WebConfigurationManager.AppSettings["GeoNetworkUrl"]);
         MD_Metadata_Type metadata = g.GetRecordByUuid(uuid);
         return(metadata != null ? new SimpleMetadata(metadata) : null);
     }
     catch (Exception e)
     {
         return(null);
     }
 }
コード例 #3
0
        private void CheckDatasets()
        {
            for (int d = 0; d < metadataSets.Items.Length; d++)
            {
                string           uuid = ((www.opengis.net.DCMIRecordType)(metadataSets.Items[d])).Items[0].Text[0];
                MD_Metadata_Type md   = geoNorge.GetRecordByUuid(uuid);
                var data = new SimpleMetadata(md);

                if (data.DistributionDetails != null && !string.IsNullOrEmpty(data.DistributionDetails.Protocol) &&
                    data.DistributionDetails.Protocol == "GEONORGE:DOWNLOAD")
                {
                    if (string.IsNullOrEmpty(data.DistributionDetails.URL))
                    {
                        downloadProblems.Add(new MetadataEntry {
                            Uuid = uuid, Title = data.Title, Problem = "Distribusjons url er tom"
                        });
                    }
                    else
                    {
                        GetDistribution(uuid, data.Title, data.DistributionDetails.URL);
                    }
                }
            }
        }
コード例 #4
0
        public ProductSheet UpdateProductSheetFromMetadata(string uuid, ProductSheet productSheet)
        {
            register = new RegisterFetcher();
            MD_Metadata_Type metadata = _geonorge.GetRecordByUuid(uuid);

            if (metadata == null)
            {
                throw new InvalidOperationException("Metadata not found for uuid: " + uuid);
            }

            var simpleMetadata = new SimpleMetadata(metadata);

            dynamic metedataExtended = register.GetMetadataExtended(simpleMetadata.Uuid);


            productSheet.Uuid                          = simpleMetadata.Uuid;
            productSheet.Title                         = simpleMetadata.Title;
            productSheet.Description                   = simpleMetadata.Abstract;
            productSheet.SupplementalDescription       = simpleMetadata.SupplementalDescription;
            productSheet.Purpose                       = simpleMetadata.Purpose;
            productSheet.SpecificUsage                 = simpleMetadata.SpecificUsage;
            productSheet.UseLimitations                = simpleMetadata.Constraints != null ? simpleMetadata.Constraints.UseLimitations : null;
            productSheet.UseConstraintsLicenseLink     = simpleMetadata.Constraints != null ? simpleMetadata.Constraints.UseConstraintsLicenseLink : null;
            productSheet.UseConstraintsLicenseLinkText = simpleMetadata.Constraints != null ? simpleMetadata.Constraints.UseConstraintsLicenseLinkText : null;
            productSheet.ContactMetadata               = simpleMetadata.ContactMetadata != null?CreateContact(simpleMetadata.ContactMetadata) : new Contact();

            productSheet.ContactPublisher = simpleMetadata.ContactPublisher != null?CreateContact(simpleMetadata.ContactPublisher) : new Contact();

            productSheet.ContactOwner = simpleMetadata.ContactOwner != null?CreateContact(simpleMetadata.ContactOwner) : new Contact();

            productSheet.ResolutionScale      = simpleMetadata.ResolutionScale;
            productSheet.KeywordsPlace        = CreateKeywords(SimpleKeyword.Filter(simpleMetadata.Keywords, SimpleKeyword.TYPE_PLACE, null));
            productSheet.ProcessHistory       = simpleMetadata.ProcessHistory;
            productSheet.MaintenanceFrequency = simpleMetadata.MaintenanceFrequency;
            productSheet.Status = simpleMetadata.Status;
            productSheet.DistributionFormatName    = simpleMetadata.DistributionFormat != null ? simpleMetadata.DistributionFormat.Name : null;
            productSheet.DistributionFormatVersion = simpleMetadata.DistributionFormat != null ? simpleMetadata.DistributionFormat.Version : null;
            productSheet.DistributionFormats       = GetDistributionFormats(simpleMetadata.DistributionFormats);
            productSheet.AccessConstraints         = simpleMetadata.Constraints != null?register.GetRestriction(simpleMetadata.Constraints.AccessConstraints, simpleMetadata.Constraints.OtherConstraintsAccess) : null;

            productSheet.LegendDescriptionUrl    = simpleMetadata.LegendDescriptionUrl;
            productSheet.ProductPageUrl          = simpleMetadata.ProductPageUrl;
            productSheet.ProductSpecificationUrl = simpleMetadata.ProductSpecificationUrl;
            foreach (var thumbnail in simpleMetadata.Thumbnails)
            {
                productSheet.Thumbnail = thumbnail.URL;
                if (!thumbnail.URL.StartsWith("http"))
                {
                    productSheet.Thumbnail = "https://www.geonorge.no/geonetwork/srv/nor/resources.get?uuid=" + simpleMetadata.Uuid + "&access=public&fname=" + thumbnail.URL;
                }
                if (thumbnail.Type == "large_thumbnail")
                {
                    break;
                }
            }
            //productSheet.CoverageArea = !string.IsNullOrWhiteSpace(simpleMetadata.CoverageUrl) ? GetCoverageLink(simpleMetadata.CoverageUrl, uuid) : "";
            productSheet.CoverageArea = metedataExtended.CoverageUrl;
            productSheet.Projections  = simpleMetadata.ReferenceSystems != null?getProjections(simpleMetadata.ReferenceSystems) : "";


            return(productSheet);
        }
コード例 #5
0
        public void ShouldReturnSingleIsoRecord()
        {
            MD_Metadata_Type record = _geonorge.GetRecordByUuid("63c672fa-e180-4601-a176-6bf163e0929d"); // Matrikkelen WMS

            Assert.NotNull(record, "Record does not exist.");
        }
コード例 #6
0
        public Task UpdateMetadata()
        {
            var datasetList = GetDatasets();

            var datasets = datasetList.OrderBy(x => x.Uuid)
                           .GroupBy(x => x.Uuid)
                           .Select(g => new {
                Uuid     = g.Key,
                Datasets = g.Select(dataset => new {
                    dataset.Url,
                    dataset.Organization,
                    dataset.LastUpdated,
                    dataset.DistributionsFormats,
                    dataset.ReferenceSystems
                })
            }).ToList();

            foreach (var dataset in datasets)
            {
                try
                {
                    var metadataInfo = new UpdateMetadataInformation();
                    metadataInfo.Uuid          = dataset.Uuid.Trim();
                    metadataInfo.Distributions = new List <SimpleDistribution>();


                    foreach (var item in dataset.Datasets)
                    {
                        try
                        { metadataInfo.DatasetDateUpdated = DateTime.Parse(item.LastUpdated, System.Globalization.CultureInfo.InvariantCulture); }
                        catch (Exception e)
                        {
                            Log.Error("Error with LastUpdated: " + item.LastUpdated, e);
                        }

                        foreach (var distribution in item.DistributionsFormats)
                        {
                            SimpleDistribution simpleDistribution = new SimpleDistribution();
                            simpleDistribution.Organization = distribution.Organization;
                            simpleDistribution.Protocol     = "W3C:AtomFeed";
                            simpleDistribution.URL          = item.Url;
                            simpleDistribution.FormatName   = distribution.FormatName;

                            metadataInfo.Distributions.Add(simpleDistribution);
                        }

                        metadataInfo.Projections = new List <SimpleReferenceSystem>();

                        foreach (var projection in item.ReferenceSystems)
                        {
                            SimpleReferenceSystem simpleReferenceSystem = new SimpleReferenceSystem();
                            simpleReferenceSystem.CoordinateSystem = projection.CoordinateSystem;


                            metadataInfo.Projections.Add(simpleReferenceSystem);
                        }
                    }

                    System.Collections.Specialized.NameValueCollection settings = System.Web.Configuration.WebConfigurationManager.AppSettings;
                    string server             = settings["GeoNetworkUrl"];
                    string usernameGeonetwork = settings["GeoNetworkUsername"];
                    string password           = settings["GeoNetworkPassword"];
                    string geonorgeUsername   = settings["GeonorgeUsername"];


                    GeoNorge api = new GeoNorge(usernameGeonetwork, password, server);
                    api.OnLogEventDebug += new GeoNorgeAPI.LogEventHandlerDebug(LogEventsDebug);
                    api.OnLogEventError += new GeoNorgeAPI.LogEventHandlerError(LogEventsError);

                    var metadata = api.GetRecordByUuid(metadataInfo.Uuid);

                    SimpleMetadata simpleMetadata = new SimpleMetadata(metadata);

                    List <SimpleDistribution> distributionFormats = simpleMetadata.DistributionsFormats;

                    List <SimpleDistribution> distributionFormatsUpdated = new List <SimpleDistribution>();

                    if (HasAtomFeed(metadataInfo.Distributions))
                    {
                        foreach (var distribution in distributionFormats)
                        {
                            if (distribution.Protocol != "W3C:AtomFeed")
                            {
                                distributionFormatsUpdated.Add(distribution);
                            }
                        }
                    }
                    else
                    {
                        distributionFormatsUpdated = distributionFormats;
                    }

                    distributionFormatsUpdated.AddRange(metadataInfo.Distributions);

                    simpleMetadata.DistributionsFormats = distributionFormatsUpdated;
                    simpleMetadata.DistributionDetails  = new SimpleDistributionDetails
                    {
                        URL                 = distributionFormatsUpdated[0].URL,
                        Protocol            = distributionFormatsUpdated[0].Protocol,
                        UnitsOfDistribution = distributionFormatsUpdated[0].UnitsOfDistribution
                    };

                    List <SimpleReferenceSystem> simpleReferenceSystems = new List <SimpleReferenceSystem>();
                    foreach (var projection in metadataInfo.Projections)
                    {
                        SimpleReferenceSystem refsys = new SimpleReferenceSystem();
                        refsys.CoordinateSystem = projection.CoordinateSystem;
                        simpleReferenceSystems.Add(refsys);
                    }
                    if (simpleMetadata.ReferenceSystems == null ||
                        (simpleMetadata.ReferenceSystems != null && simpleMetadata.ReferenceSystems.Count == 0))
                    {
                        simpleMetadata.ReferenceSystems = simpleReferenceSystems;
                    }

                    simpleMetadata.DateMetadataUpdated = DateTime.Now;

                    if (metadataInfo.DatasetDateUpdated.HasValue)
                    {
                        simpleMetadata.DateUpdated = metadataInfo.DatasetDateUpdated;
                    }

                    api.MetadataUpdate(simpleMetadata.GetMetadata(), CreateAdditionalHeadersWithUsername(geonorgeUsername, "true"));
                    Log.Info($"Metadata updated for uuid: {metadataInfo.Uuid}");
                }
                catch (Exception ex)
                {
                    Log.Error("Error updating metadata uuid: " + dataset.Uuid + ", error: " + ex);
                }
            }

            return(Task.CompletedTask);
        }