ArcGIS'te meta verileri programlı olarak düzenleme / güncelleme?


10

ArcGIS 10'da meta verileri programlı olarak güncellemeyi başaran var mı? Python / arcpy, ancak ArcObjects (C # veya Python / comtypes) kullanmayı düşünmek de bir olasılıktır.

Hem FGDC hem de ArcGIS-ISO biçimindeki meta verileri güncellemem gerekiyor ve hangi çözüm kullanılırsa kullanılsın (boş olmayan) öğeleri, eklenen öğelerin yanı sıra, çakışan durumlar dışında, ek öğelerle birlikte tutabilmesi gerekir. eklenen öğeler mevcut öğelerin üzerine yazılır.

Yanıtlar:


9

Bunu ArcPy'den yapmanın en kolay yolu, Python kullanarak bir XML dosyası oluşturmak ve ardından Meta Verileri İçe Aktar'ı (Dönüştürme) çağırmaktır . Ancak, bu her şeyin üzerine yazacaktır.

Alternatif olarak, veri kümesine bir IName elde etmek, IMetadata'ya yayınlamak ve IPropertyset'i düzenlemek için ArcObjects kullanmaktır.


11

Benzer bir yeteneğe büyük bir ihtiyaç duyduk ve bu amaçla genel, ücretsiz, açık kaynaklı bir Python kütüphanesi oluşturduk. Bunu https://github.com/ucd-cws/arcpy_metadata adresinde veya "pip install arcpy_metadata" komutunu kullanarak bulabilirsiniz . Dünya Kaynakları Enstitüsü'nün bazı ek katkılarıyla bazı özelliklerin ve nasıl kullanılacağına dair belgeler vardır. İyi bir şekilde bütünleşmesi ve hızlı bir şekilde öğrenilebilmesi için şeyleri nispeten Pythonic tutmaya çalıştık . İşte bir örnek:

import arcpy_metadata as md
import datetime

metadata = md.MetadataEditor(path_to_some_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.append("generated by ___ software")
metadata.abstract.append(generated_time)  # .prepend also exists
metadata.tags.add(["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!

Eklenebilecek çok şey var, ancak zaten var olan öğeleri alt sınıflara ayırırsanız veya doğru bir şekilde yapılandırırsanız oldukça genişletilebilir. Hala alfa kalitesinde yazılımlarla ilgili, ama işe yarıyor ve bundan memnunuz.


ArcGIS Pro içinde bu özelliği arayan herkes için, sürüm 2.5'ten itibaren, artık Python'dan bir meta veri API'sı içeriyorlar. Meta Veri sınıfı belgelerinde daha fazla ayrıntı vardır .


9

Bununla mücadele ediyoruz ve arcobjects meta veri işlevleri etrafında basit bir python kütüphanesi oluşturarak çözdük. Meta veri değerlerinin anahtar kelimelerle değiştirildiği bir xml dosyasına dayanır. Bir meta veri alanının değerini almak veya ayarlamak için bu anahtar kelimeleri python kodunuzda kullanabilirsiniz. Kod woud şuna benzer:

import dataprocessing
DP = dataprocessing.create()

md = DP.OpenMetadata("C:/MyShapefile.shp") # Works also on geodatabases
myKeyword = "%FGDC.abstract" # Keywords have to start with '%' but the rest is up to you

if md.GetValue(myKeyword) == "Not what I want":
    md.SetValue(myKeyword, "New value that suits me better")

Araç şu adreste bulunabilir: http://www.aris.nl/dataprocessing_arcgis ve serbestçe kullanılabilir. Web sitesindeki sürüm arcgis 9.3 içindir. Bir arcgis 10 sürümü mevcut olacak, ancak artık ücretsiz olmayacak.

(Tam açıklama: Bu aracın mevcut versiyonunun kısmen vergi mükelleflerinin parasından ve kısmen programcı tarafından bağışlanan zamandan beri yapıldığı Hollandalı bir devlet kurumunda çalışıyorum. Bu yüzden ücretsiz ama açık kaynak için kullanılamıyor. 2013 itibariyle Yeni sürümleri finanse etmiyorum. Bundan herhangi bir şekilde para kazanmıyorum. Umarım daha fazla kullanılır.)


1

Şimdi baktığım üçüncü bir seçenek de XSLT Dönüşümü (Dönüştürme) aracıyla birlikte bir XSLT dosyası kullanmak . Ben de olsa ben dili öğrenmek zorundayım, ve onlar eski XSLT / XPath 1.0 standartlarını kullanan .NET uygulamasını kullanarak size kolaylaştırmaz.


1

Mevcut MD dönüşüm, sıfırdan oluşturma (yok) ve DOM kullanarak belirli öğelerin güncelleştirilmesi için ArcPy ve DOM kullanan bazı kod var. Oldukça fazla kodlanmış yol adı ve benzeri ile biraz tıknaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.