Oczekujesz, że ArcPy zastąpi pliki w pliku geobazy?


13

Piszę skrypt w języku Python, mam plik MXD, a jego obszarem roboczym jest plik geobazy zawierający wszystkie potrzebne pliki. Problem, który napotykam podczas testowania i pisania kodu, polega na tym, że pomimo polecenia:

arcpy.env.overwriteOutput=True

wszystkie pliki zawarte w geobazie nie mogą zostać zastąpione. Jest sposób na obejście tego?


Czy w ArcMap zaznaczyłeś opcję „Zastąp wyniki operacji geoprzetwarzania” w Geoprocessing> Opcje geoprzetwarzania?
Baltok

tak. Ale nie działało.
Annalisa Minelli,

3
Czy znasz jakieś blokady schematu danych? To również może zapobiec zastąpieniu. Geobazy plików i osobiste są szczególnie wrażliwe na to, ponieważ jeśli jedna klasa obiektów ma blokadę, blokuje całą geobazę.
Baltok

2
Kiedy mówisz, że „wszystkie pliki zawarte w geobazie nie mogą zostać zastąpione”, masz na myśli, że skrypt się nie udaje lub kończy, ale po prostu nie zastępuje klas funkcji, które powinien?
Chad Cooper

spróbuj uruchomić kod z IDE Pythona, takiego jak PyScripter, a następnie zamknij ArcMap.
geogeek

Odpowiedzi:


16

Jeśli dobrze pamiętam, są pewne sytuacje, w których overwriteOutput nie będzie działać. W takim przypadku użyj następującego kodu przed wypisaniem nowych plików:

if arcpy.Exists(fileInQuestion):
    arcpy.Delete_management(fileInQuestion)

1

Upewnij się, że geobaza danych pliku nie jest skompresowana, tzn. Tylko do odczytu.


0

Miałem również ten problem, a komentarz na temat blokad schematu naprawdę pomógł. Jeśli masz MXD z tą klasą funkcji, to blokuje tę klasę funkcji, więc nie można jej usunąć. Jeśli po prostu wyjdziesz z mxd, który zawiera tę klasę funkcji i uruchomisz ten sam kod zastępujący, wydaje się, że działa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.