Nie jestem pewien, jak najlepiej korzystać z in_memory
obszaru roboczego w ArcGIS. Najlepszym zasobem, jaki znalazłem na ten temat, jest ESRI na temat korzystania z przestrzeni roboczej w pamięci . Niestety sekcja pomocy nie jest bardzo pouczająca. Ponadto na tej stronie znajduje się post, który krótko porusza ten temat tutaj i tutaj .
Moje konkretne pytania:
- Jakie jest właściwe użycie i składnia do używania
in_memory
przestrzeni roboczej w skryptach opartych na ArcGIS / arcpy? - Czy
in_memory
obszar roboczy jest taki sam, jak na przykład tworzenie warstwy przy użyciuarcpy.MakeFeatureLayer_management()
? - Czy istnieją jakieś standardy, takie jak usuwanie
in_memory
obszaru roboczego na końcu skryptu?
źródło
Nie ma w tym wiele. Istnieje magiczny katalog, do którego można uzyskać dostęp w narzędziach geoprzetwarzania i zwariowanych kursorach o nazwie
in_memory
. Zrobiłbyś coś takiegoarcpy.management.CreateTable('in_memory', 'my_new_table')
lubCreateFeatureClass
stworzyłbyś nową klasę funkcji lub tabelę. Następnie masz nową tabelę w tym procesie ze ścieżkąin_memory\my_new_table
, jeśli jesteś w arcmap, doda widok tabeli do spisu treści o nazwiemy_new_table
, którego możesz użyć jako skrótu, aby się do niego dostać. Jeśli jest to tymczasowa tabela w pamięci, po prostu użyj,arcpy.management.Delete(r'in_memory\my_new_table')
gdy skończysz z nią na końcu skryptu.źródło
Nie na temat, ale myślę, że warto na to zwrócić uwagę. Po pierwsze, zgadzam się zarówno z @JasonScheirer, jak i @egdetti powyżej, co
in_memory
może być bardzo przydatne. Najważniejszą rzeczą do odnotowania jest to, żein_memory
obszar roboczy nie obsługuje danych rastrowych. Jeśli stanie się to problemem, polecam za pomocątempfile
modułu Python . To nie będzie tak szybkie, ale bardziej niezawodne. Na przykład możesz zrobić coś takiego:źródło