ArcGIS, FGDB tablo boyutu sınırları dahilinde olmasına rağmen, büyük CSV dosyasından dosya coğrafi veri tabanı tablosuna tüm kayıtları alamıyor


11

ArcGIS 10.0'ı 4GB RAM ile Windows 7 64 bit üzerinde kullanıyorum.

ArcGIS'e aktarmak için CSV formatında bazı çok büyük tablolarım var, hepsinin yaklaşık 30 alanı var, tablo başına 5 milyon kayıt (birkaçının iki veya daha fazlası var) ve yaklaşık 5 GB'a kadar dosya boyutları var. Sonuçta, bir özellik sınıfına onları bağlamak ve konumlarına göre tablolarda sonuçları analiz böylece her biri ayrı tablolar olarak bir dosya geodatabase içine almaya çalışıyorum.

Sorun şu ki, ArcGIS belirli bir noktada kayıtları içe aktarmayı bırakıyor gibi görünüyor. Dönüşüm> Geodatabase için "Tablodan tabloya" aracını kullanıyorum, ancak "Satırları Kopyala" aracı aynı sorunu var. CSV dosyasını ilk önce bir FGDB tablosuna dönüştürmeye çalışmadan doğrudan ArcGIS'e eklesem bile sorun aynıdır. Tablolarımdan birinin yaklaşık 11 milyon kaydı var ve ArcGIS sadece yaklaşık 10 milyonunu içeri aktarıyor. ArcGIS bana herhangi bir hata oluştuğunu söylemiyor, araç sanki hiçbir şey yanlışmış gibi bitiyor.

Şimdi birkaç kez denedim ve FGDB tablosuna yapan kayıtların sayısı her zaman aynıdır ve şimdiye kadar duyduğum bir dosya boyutu sınırı gibi görünmüyor (2 kare veya 16). ArcGIS, yaklaşık 6 milyon kayıtla başka bir CSV içe aktarabildi ve tüm kayıtlar geldi (daha büyük tablo ile yaşadığım problemlerle birlikte, küçük olan da şimdi şüpheli). ESRI'nin web sitesi bir dosya coğrafi veritabanında aşağıdaki boyut sınırlarını listeler ve bunlardan herhangi birini vurmaktan çok uzaktayım:

  • Dosya coğrafi veritabanı boyutu: Sınır yok
  • Tablo veya özellik sınıfı boyutu: 1 TB (varsayılan), anahtar kelime ile 4 GB veya 256 TB
  • Özellik sınıfı ve tablo sayısı: 2.147.483.647
  • Bir özellik sınıfındaki veya tablodaki alan sayısı: 65.534
  • Bir özellik sınıfındaki veya tablodaki satır sayısı: 2.147.483.647
  • Coğrafi veritabanı adı uzunluğu: İşletim sisteminin bir klasörde izin verdiği karakter sayısı
  • Özellik sınıfı veya tablo adı uzunluğu: 160 karakter
  • Alan adı uzunluğu: 64 karakter
  • Metin alanı genişliği: 2.147.483.647

Bu tablolara gerçekten yapmam gereken tek şey birkaç alan eklemek, birkaçını silmek ve yeni alanlar (mevcut alanlardan birkaçının toplamı) için değerler oluşturmak. Bunun için ArcGIS kullanıyorum çünkü alan hesap makinesine aşinayım ve milyonlarca kayıttan oluşan tabloları işleyebileceğini biliyorum (veya şimdiye kadar biliyordum ), oysa diğer masaüstü yazılımlarının çoğu kullanışlı (MS Access / Excel) ) birçok kayda boğulur. Bu yüzden orijinal tabloyu işlemek için başka bir yazılım parçası kullanmaya ve ardından (çok daha küçük) sonuç tablosunu ArcGIS'e aktarmaya açıkım. Gerçekten, bu sorunu yaşıyorum ve ArcGIS bana sorunun bile meydana geldiğine dair herhangi bir hata veya uyarı vermiyor olması, bu verileri mümkün olduğunca ArcGIS dışında ele almamı sağlıyor.


2
"FGDB tablo haline getiren kayıtların sayısı her zaman aynı" ise, o zaman daha önce başarıyla alınan milyonlarca karşılaştırıldığında tutarsız görünüyor bir şey olup olmadığını görmek için son ve sonraki kayıtlara bakmak istiyorum.
PolyGeo

1
İyi bir fikir. Kesilmiş FGDB tablosundaki son kayıt ile sonraki kayıt arasında (CSV'den) herhangi bir fark göremiyorum. Kaynak CSV'den başarıyla alınan tüm kayıtları kaldırmayı, ardından kalanı başka bir FGDB tablosuna aktarmayı denedim ve işe yaradı. Yani herhangi bir kayıtla ilgili bir sorun gibi görünmüyor. İşleri daha da kötüleştirmek için, iki FGDB tablosunu birleştirdim (ikisi arasında tüm kaynak kayıtlarına sahibim) ve bir kez daha ArcGIS her şeyin yolunda gittiğini iddia ediyor, ancak birleştirilmiş tablo, 10.9 milyon kayıttan sadece 9.6 milyonunu içeriyor FGDB tabloları.
Dan C

ESRI ile bir destek olayı açtınız mı? Bu noktada, potansiyel olarak oldukça ciddi bir sorun olabileceğini keşfettiniz. Başka bir şey yoksa, destek personeli bunu zaten bilmek isteyecekti, çünkü zaten bir çözüm biliyor olabilirler veya test konusunda yardımcı olmaya istekli olacaklardı.
Mekansal Alın

Spatial'ı almayı kabul ediyorum, ancak çalıştırmak isteyebileceğiniz son bir test, aynı değerleri yerleştirdiğiniz bir alanla (belki "test") bir CSV dosyası oluşturmaktır. Teoriniz 9,6 milyon maksimum ise, bu sınır 10 milyon satır "test" kullanıldığında, ancak 9,5 milyon satır olduğunda kullanılmaz.
PolyGeo

Şimdi farklı, ama aynı zamanda büyük (10 milyondan fazla kayıt) CSV ile denedim ve aynı şekilde başarısız, ama farklı bir satırda (yaklaşık 8.9 milyon kayıt içeri girer). Bu nedenle, belirli bir kayıt sayısı veya belirli bir tablo boyutu gibi görünmüyor. İki alanlı bir test CSV'si deneyeceğim ve ne olacağını göreceğim. Ben her iki şekilde de Pazartesi günü ESRI arayacağım, hiçbir hata mesajı olmadan başarısız bu işlem kabul edilemez ve hatta şüpheli yapan kayıtları bile yapar.
Dan C

Yanıtlar:


9

Bu konuda ESRI desteğini aradım ve cevapları cesaret verici değildi, ama sorunu açıkladı. ESRI'yı açıklama: Sorun, 32 bit yazılım olan ArcGIS Desktop'ın en fazla 4GB RAM kullanımı ile sınırlı olmasıdır. Metin dosyası tablo olarak saklanmadan önce RAM'de işlenmelidir, bu nedenle işlem sırasında bazı poing'lerde ArcGIS RAM sınırına çarptı ve orada durdu. İçe aktardığım dosyanın boyutu 6 GB civarındaydı. Görünüşe göre bir hata mesajı vermeden başarısız olması benim için benzersiz, ofisimdeki diğer insanların bunu yapmasını denedim ve içe aktarma hala başarısız oldu, ancak bir hata mesajı verdi (yararsız bir tane, ama en azından kullanıcı bir şeylerin yanlış gittiğini bilir) ve ESRI temsilcisi bunun bir hata vermesi gerektiğini söyledi.

Benim çözümüm, bir metin editörü (EditPad Pro kullandım) kullanarak dosyayı iki küçük CSV'ye bölmek, her birini ayrı bir tablo olarak bir FGDB'ye aktarmak, ardından iki FGDB tablosunu birleştirmekti. Nedense bu ilk denedim başarısız oldu ama daha sonra çalıştı. Bunu biraz daha test etmek için uğraşabilirim, bu boyuttaki dosyalarla sürekli olarak ilgileneceğim.

ArcGIS 10.0 kullanıyorum, ancak ArcGIS 10.1 hizmet paketi 1 piyasaya sürüldü ve coğrafi işlemcinin 4GB RAM'den fazla kullanmasına izin veren 64 bit arka plan coğrafi işlemci kullanma yeteneği ekliyor, ancak bu sorunu çözemez test edin.

GÜNCELLEME: Şimdi ArcGIS 10.1 SP1 kullanıyorum (64 bit arka plan coğrafi işleme eklentisiyle) ve bu dev .CSV'leri, en azından şimdiye kadar ele aldığımları başarıyla içeri aktarıyor. 14GB RAM (evet, 14) olan bir makinede, yaklaşık 10.5 milyon sıralı 6GB .CSV bir FGDB tablosuna başarıyla aktarılır.


1
GDAL'ın 64 bitlik bir yapısında çalıştırmayı deneyebilir misiniz merak ediyorum. Eminim iyi çalışır.
Ragi Yaser Burhum

7

Veri yükleme amacıyla, büyük bir CSV dosyasını belleğe okumak oldukça saçmadır. Sadece gerçekten bir defada 1 satır okuması gerekiyor.

Ben bir Python komut dosyası yazma önermek ve csvsatır satır okumak ve bir InsertCursor(veya tercihen bir arcpy.da.InsertCursordaha hızlı, ancak sadece 10.1 kullanılabilir) kullanarak tabloya satır eklemek modülü kullanın .

Düzenleme: Sadece son paragrafınızı okuyun. Gerçekten de Python içinde bunu kolayca yapabileceğiniz gibi görünüyor, hatta sonuçları CSV'ye veya başka bir formata bile aktarabiliyorsunuz.

Her satır ve sütun ile tam olarak ne yapmanız gerektiğini açıklayabilirseniz, bu yararlı olacaktır.


4

5GB csv dosyalarını küçük dosyalara bölmeyi denediniz mi?

csv'yi satırlara veya dosya sayısına göre bölmek için bir araç vardır.

Dosyaları Böl ve sonra almaya çalışın .. Ama bu araçta bir sınırlama var, ben sadece bir dosyadaki tablo için çalışacağını düşünüyorum (öyle düşünüyorum). lütfen. bir dene.

http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/


Bunu yapmak zorundaysam, uğraşacak çok fazla CSV olmadığını denemeyi planlıyorum, bu yüzden muhtemelen bunları metin düzenleyicimle manuel olarak bölecağım. Yine de başka birinin bu sorunu yaşayıp yaşamadığını öğrenmek istiyorum, ArcGIS büyük tabloları yanlış anlama alışkanlığı kazanacak ve hatta işe yaramaz bir hata mesajı atmak için ortak nezaket sahibi bile olmayacaksa, bu bir sorun olacaktır.
Dan C

Tamam, sadece denedim ve yarı yolda çalışıyor. CSV'yi iki küçük olana böldükten sonra (manuel olarak bir metin editörü ile), iki ayrı FGDB tablosuna başarıyla aktarıldılar ve tüm kayıtlar orada. Ancak bu iki FGDB tablosunu bir araya getirmeye çalıştığımda, ArcGIS bir kez daha hiçbir şey yanlışmış gibi işlemden geçiyor ve birleştirilmiş tabloda 1.3 milyon kayıt eksik.
Dan C

2

Bu hatayı (001156) büyük bir boru ile sınırlandırılmış metin dosyası (2.712.391) satırının yaklaşık dörtte biri kadar aynı satırda çalıştırıyordum.
Bu nedenle, bu satırda bir sorun olduğunu düşündüm, ancak satırların geri kalanıyla özdeşti.
Kısmi içe aktarmadan satırları silip verileri yükledim (Yükle> Verileri Yükle ...) ve tüm 2M + hatlarını alabildim.

Ben de, 16GB RAM'de 10.1 SP1 w / 64 bit arka plan coğrafi işleme kullanıyorum ve RAM'i kullanacak bir süreçtir (her işlem henüz 64 bit'te etkinleştirilmemiştir).
Yavaş, klunky geçici çözümü, ancak sürekli çalışıyor.
Herhangi bir içe aktarma derecesiyle başarılı olamıyorsanız, önce boş tabloyu ayarlamanız gerekebilir.

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.