Verideki alanları kalıcı olarak yeniden sıralayın (shp, gdb)


24

Kalıcı olarak yeniden düzenlemek istediğim alanlara sahip bir şekil dosyası veya coğrafi veritabanı özellik sınıfım varsa, bu görevi hızlı bir şekilde yerine getirmeme yardımcı olacak bir araç, komut dosyası veya yardımcı program var mı?

Genel olarak yeni bir alan oluşturmanız gerektiğini biliyorum, daha sonra eski değerlerle doldurun, sonra eski alanı silin. Bu konuda yardımcı olacak daha önce yaratılmış bir şey olduğunu umuyorum. FME veya başka bir ETL aracınız olmadığını varsayarsak, sonraki en iyi öneri nedir?

Bu, bir görünüm seviyesi değişikliği DEĞİLDİR (alanları sırayla sürükleyin / bırakın), ancak yeni bir şekil dosyasına veya özellik sınıfına yazın. Teşekkürler.


İnanması zor, ama bunu yapmanın bir yolunu bulamıyorum. Alanları yeniden sipariş etmek için kullanmanız gereken durum nedir? ArcMap'teki katman özelliklerinin alanlar sekmesindeki alanları yeniden sıralamak bir çözüm değil mi?
Derek Swingley

2
Alanların yeniden sıralanması, verilerin ArcMap'te kullanılmayacağı, ancak 1) şekil dosyalarını kullanan ve 2) müşteri tarafında yeniden sıralamaya izin vermediği ve 3) müşterinin görmesi gereken ihtiyaçlara sahip olduğu daha az karmaşık bir haritalama yazılımı nedeniyledir. anahtar öznitelikleri "tanımla" ağacının tepesinde gösterilir.
RyanDalton

Sadece önceden silinmiş cevabımı düzenledi. Umarım komut satırından korkmazsınız;).
Derek Swingley


2
@ SaultDon- Bu aynı soru değil. KAYITLARI (satırlar) sıralamak isteyen bir soruya başvuru yaptınız, ancak ALANLARI (sütunlar) sıralamak istiyorum.
RyanDalton

Yanıtlar:


13

Bunu , aracın alan haritası bölümündeki alanları yeniden sıralayarak Özellik Sınıfı ile Özellik Sınıfı arasında yapabileceğinize eminim .

Düzenleme: FC2FC bunu yapmaz ama ... kurtarmaya başlar.

Sadece ogr2ogr'un bunu yapabileceğini onayladım. Alan adı sırasını -select anahtarında belirtin. Örneğin, "Name" ve "FolderPath" olmak üzere iki alana sahip bir shapefile'im varsa (bu sırada), ancak önce "FolderPath" ile yeni bir shapefile istiyorum:

C:\Temp>ogr2ogr -f "ESRI Shapefile" re_order_ogr.shp re_order1.shp -select "FolderPath,Name"

2
Kullanıcı dostu olarak umduğum gibi bir seçenek değildi, ancak kesinlikle hile yapar. Bunun için girdileri oluşturmaya yardımcı olan bir ArcGIS python betiği oluşturdum ve kullanıcının sadece -select "field1, field2, etc" seçeneğini içermesi gerekiyor. Sen adresinden indirebilirsiniz resources.arcgis.com/Resources2010/gallery/file/geoprocessing/...
RyanDalton

Etki alanları olan SDE'de bir özellik sınıfım var. Bu ilişkili alanları tutabilir mi?
MjonesGEO

@joebob no. AFAIK, ogr, SDE GDB'lerin veri kümelerini desteklememektedir ve etki alanlarını da desteklememektedir.
Derek Swingley

Teşekkürler, sadece XRay'i kullandım ve alanlarını SDE'de tutarken alanları yeniden sıralayabilir veya değiştirebilir.
MjonesGEO

7

ET GeoWizards aracı yapacak ve ücretsiz sürümü özelliklerin sayısına ilişkin herhangi bir sınırlama olmadan yapacak gibi görünüyor.


Olur ama ne yazık ki takma adları korumaz.
Howeitzer

7

QGIS "Table Manager" Eklentisi artık bu görevi komut satırı gerektirmeden kolayca gerçekleştirebiliyor.


6

QGIS'de artık işlem araç kutusunu (Ctl + Alt + T) kullanabilir ve QGIS geoalgorithms> Vektör tablosu araçları> Refactor alanlarına gidebilirsiniz.

Oradan masa yapınızı düzenlemek için tüm araçlara sahip olacaksınız.

görüntü tanımını buraya girin


4

X-Ray arcmap eklentisi Geodatabes formatındaki alanları yeniden sıralamak için bir araca sahipburada x-ışını yeniden düzenleme alanları aracı


Bu çok iyi çalışıyor. Bir SDE'yi yeniden sipariş ediyorsanız, etki alanlarınızı alanlarda bile tutacaktır. Harika öneri!
MjonesGEO

3

Başvuru için: MapInfo, kutunun dışında da yapabilir. Sadece DBF'yi açın ve alanları kalıcı olarak yeniden sıralayın. http://www.dbf-editor.com da bunu yapar (40 $). Diğer DBF editörleri de bunu yapabilir.


Bu satırda, infolib muhtemelen de çalışmalıdır ( .cibg'ye ( csv'ye dönüştür), yeniden düzenlemek, tekrar bilgi veya dbf'ye dönüştürmek), .dbf dosya formatının sınırlamaları ile yaşamaya istekli olduğunuz sürece.
matt wilkie

CSV formatının sınırlamaları ile yaşamak mı demek istiyorsun? DBF bu sorunun başlangıç ​​noktasıdır ...
Uffe Kousgaard

Özellikle csv'nin alan adı uzunluğu veya kayıt değeri uzunlukları konusunda bir sınırı olmadığını düşünerek dbf limitlerini kastediyordum, ve bu başlangıç ​​noktasının gdb dosyası olduğunu, ancak QI'nin yeniden okunması başlığında "shp" ifadesinin yer aldığını gördüm. Yani, tüm sınırları ;-)
matt wilkie

3

Benzer bir sorun yaşadım ve zaten QGIS'iniz varsa, veri alanlarını kalıcı olarak yeniden sıralamanın en hızlı yolu, daha önce önerildiği gibi 'Tablo Yöneticisi' eklentisini kullanmak.

Eklentileri kurmak basittir ve aşağıdaki sayfada açıklandığı gibi kullanıcı dostudur:

http://www.qgistutorials.com/en/docs/using_plugins.html

Öznitelikleri belirli bir düzende taşımanıza, alanları yeniden adlandırmanıza, yeni alanlar eklemenize ve bunları çoğaltmanıza olanak tanır. Ayrıca, orijinal dosyayı kaydetmenize veya yeniden adlandırıp orijinalden farklı şekilde kaydetmenize olanak tanır.

görüntü tanımını buraya girin

Bu benim öznitelik tablo yönetimi sorununa hızlı ve kolay bir özümdü ve özellikle onunla ilişkili çok sayıda özniteliği olan dosyalar için şiddetle tavsiye ediliyor.


3

Bunu yapmanın en iyi yolu Saha Haritaları kullanmaktır. Bu ESRI yazılımının bu özelliği ile yıllardır mücadele ediyorum, fakat sonunda bu çözümden memnunum. Temel olarak, arcpy.FieldMappings kullanarak kalıcı olarak yeniden sıralanan alanlarla birlikte Özellik Sınıfınızın bir kopyasını alabilirsiniz . Verilerin tümü de taşınır. Betik tamamlandıktan sonra, eski Özellik Sınıfınızı myFeatureClass_old ve yenisini myFeatureClass olarak yeniden adlandırın!

İşte senaryo, bu çok basit:

import arcpy
'''
This is possible in python using FeatureClasstoFeatureClass with Fieldmappings. You can also rename fields at the same time.
So if you have a Feature Class with FIELD3, FIELD2, FIELD1 and you want the result to be FIELD1, FIELD2, FIELD3 then the following code should accomplish this.
'''
arcpy.env.workspace = r"C:\Users\myself\ArcData\my_geodatabase.gdb"
arcpy.env.overwriteOutput = True

input_fpath = "Lakes"

output_dpath = arcpy.env.workspace
output_fname = "Lakes_new"

fms = arcpy.FieldMappings()

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD1")
fms.addFieldMap(fm)

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD2")
fms.addFieldMap(fm)

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD3")
fms.addFieldMap(fm)

arcpy.conversion.FeatureClassToFeatureClass(input_fpath,output_dpath,output_fname,"",fms)

3

Özellik Sınıfından Özellik Sınıfına, GP Aracı Alan Eşleme bölümünü kullanarak bunu şimdi 10.5'te gerçekleştirebilirsiniz.

görüntü tanımını buraya girin


2

MakeQueryTable, bir tablo veya FC için alanlarınızın sırasını tanımlamanıza izin verir (yalnızca Geodatabase). Alanları belirttiğiniz sıra, çıktının sırasıdır. Bu aracı kullanmak zor buluyorum. YMMV

Arctoolbox, veri yönetimi araçları, katmanlar ve tablo görünümleri, Tablo yapmak


2

Özellik sınıflarını boş bir kişisel coğrafi veritabanına verin (sürükle ve bırak en hızlıdır), Access'te .mdb'yi açın, alanları Tasarım Görünümü'nde yeniden sıralayın , kaydedin, ardından ArcMap / Katalog kopyasını tekrar şekil veya dosya coğrafi veritabanına kaydedin.

Aynı yöntem, alanları yeniden adlandırmak için de geçerlidir.

Yine de dikkatli olun , sadece kopyalar üzerinde çalışın, her şeyi mahvetmek kolaydır. (Karey Jack'in başka bir cevapta yazdığı gibi, Esri doğrudan .mdb erişimini önermez ). Güvenlik için ile başlayan GDB_ve aynı zamanda biten tüm tabloları görmezden gelin _Shape_Index.


1

OGR2OGR'yi deneyin. Bir SQL sorgusu iletebilir ve alanları istediğiniz sıraya koyabilirsiniz.

ogr2ogr outdataset indataset -sql "SELECT src_field1 AS dst_field1, src_field2 AS dst_field2 AS kaynak kodundan"

Sadece bunu test ettim ve iyi çalışıyor!

FYI, OGR'u kurmanın en kolay yolu FWTools .



0

Bu konuda partiye biraz geç kaldım, ama kimsenin ESRI Geodatabase Diagrammer'dan bahsetmediğine şaşırdım .

Coğrafi veritabanınızın ve dosyalarınızın XML yapısını düzenlemek için ESRI tarafından sağlanan kaynak. Endişelendiğim kadarıyla, tasarımın mükemmel olması gereken herhangi bir şey üzerinde çalışıyorsanız (uzun vadeli bir proje) çok önemlidir. Basit bir hata yaptıktan sonra dosyaları sürekli olarak yeniden oluşturmak zorunda kalmazsınız.


1
Bunun bir veritabanı düzenlemesi olmadığını, bunun yerine verileri dışa aktarmak için gerekli olduğunu belirten yorumu (sorunun kendisine) gördünüz mü ?
whuber
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.