Chciałbym wykonać dokładną kopię (domen, zestawów danych elementów, klas obiektów itp.) Bazy danych SDE do geobazy danych pliku.
Wypróbowałem kilka możliwości, w tym:
- za pomocą procesu kopiowania (zarządzanie danymi)
- tworzenie nowego GDB i ręczne kopiowanie każdego zestawu danych funkcji z SDE
- eksportowanie dokumentu obszaru roboczego xml z SDE i importowanie go do GDB
Wydaje się Copy_management
, że proces nie działałby w przypadku kopiowania SDE do GDB, ponieważ typy danych wejściowych i wyjściowych muszą być zgodne.
Proces importowania każdego zestawu danych funkcji do nowego GDB można prawdopodobnie zautomatyzować również za pomocą funkcji Copy_management poprzez iterację po każdym zestawie danych funkcji, choć wydaje się, że może to powodować problemy z niekompletnym kopiowaniem, jeśli wystąpi błąd w jednym z procesów.
Wydaje się, że eksportowanie i importowanie obszarów roboczych xml działa, chociaż proces ten tworzy niewiarygodnie duże pliki, gdy proces jest używany na dużych geobazach.
Czy istnieje prostszy sposób na skopiowanie zawartości i schematu SDE do GDB niż wymienione wyżej sposoby w sposób, który można zautomatyzować?
Jeśli nie, czy istnieją powody, dla których powyższe możliwości nie powinny być wykorzystane w tym procesie?
Odpowiedzi:
Jedynym sposobem na uzyskanie prawdziwej kopii danych (domen, zestawów danych, relacji itp.) Jest użycie metody ręcznego kopiowania i wklejania w katalogu. ESRI nie dał nam jeszcze możliwości przesyłania tych danych w jakikolwiek inny sposób za pomocą pojedynczej operacji, którą można łatwo wykonać skryptem.
Mam proces nocny, który kopiuje moje dwie podstawowe bazy danych SDE do plików geobaz danych w celu zapewnienia ciągłości operacji. Dzieje się tak, aby w razie nagłego wypadku mój personel miał jakieś dane do pracy, dopóki mój sklep IT nie będzie mógł odbudować mojego SDE z kopii zapasowej. Po wielu próbach i błędach zdecydowałem, że możemy żyć z ograniczeniami korzystania z FeatureClassToFeatureClass_conversion i TableToTable_conversion do przesyłania naszych danych każdego wieczora.
Tak, tracimy część funkcjonalności geobazy, ale teraz będzie ona działać bez nadzoru w nocy i jest gotowa do pracy, jak tylko ją zdobędę. W moim przypadku jedyną funkcją, której tak naprawdę brakuje nam (zakładając działanie w trybie awaryjnym), jest to, że moje klasy relacji są zepsute, ponieważ konwersja resetuje ObjectID, które łączą dwie tabele.
Dopóki ESRI nie da nam więcej opcji, będziesz musiał spojrzeć na to, co w tej chwili chcesz poświęcić; czas i wysiłek czy funkcjonalność?
źródło
Wiem, że ten post jest trochę stary, ale pomyślałem, że podzielę się moją odpowiedzią, ponieważ napotkałem ten sam problem. Poniższy skrypt POWINIEN skopiować wszystkie tabele, klasy elementów i relacje spoza zbioru danych, a także skopiuje wszystkie zestawy danych, w tym klasy elementów, topologię itp. W zestawie danych. Pominie wszelkie błędy podczas kopiowania i będzie kontynuowane. Spowoduje to utworzenie pliku dziennika zawierającego dane, takie jak liczba elementów źródłowej bazy danych i liczba elementów docelowych, dzięki czemu można porównać kopię, a także zarejestrować błędy, które napotka.
Miałem z tym naprawdę szczęście. Replikowałem bazę danych SDE na geobazę plików. Nie przeprowadziłem jednak zbyt wielu testów tego skryptu, ponieważ spełnił on wszystkie moje potrzeby. Przetestowałem to za pomocą ArcGIS 10.3. Należy również zauważyć, że rozmawiałem z kimś, kto użył tego skryptu, i napotkał problem z błędem podczas kopiowania niektórych zestawów danych z powodu niewłaściwych uprawnień i pustych tabel.
Lemur - dlaczego nie utworzyć relacji opartych na globalnym identyfikatorze zamiast identyfikatora obiektu? Że twoje relacje zostaną zachowane. Jeśli nie masz globalnego identyfikatora, bardzo go polecam.
-aktualizacja
Dodałem trochę więcej logiki do kodu, aby obsłużyć złe ścieżki połączenia z bazą danych oraz lepszą rejestrację i obsługę błędów:
źródło
Użyłem skryptu podobnego do powyższego Petera i miałem szczęście, chociaż jego jest lepszy. Jedną rzeczą, na którą należy zwrócić uwagę, że ktoś może się potknąć, jest to, że jeśli używasz 64-bitowego geoprzetwarzania Pythona i masz ArcFM załadowany na ESRI, to zawiedzie we wszystkich funkcjach, które zostały skonfigurowane do używania ArcFM lub Projektanta z ERROR 000260. ponieważ musisz użyć 32-bitowego Pythona, inaczej ArcFM nie będzie poprawnie licencjonowany.
Bardziej szczegółowy opis korzystania z 32-bitowego ArcPy znajduje się w dwóch pierwszych komentarzach do tego wątku w programie Exchange
https://infrastructurecommunity.schneider-electric.com/docs/DOC-2563
źródło
Jeśli masz uprawnienia administratora, możesz użyć prostych poleceń kopiowania i wklejania, aby eksportować lub importować sde do pliku geo-bazy danych na odwrót i zajrzyj tutaj, aby uzyskać więcej informacji.
źródło