Chciałbym, aby następujące elementy wybrały (podświetliły) warstwę „projektu” przecinającą siatkę, a następnie pobrały zapis z wybranej „siatki”. Nie muszę zapisywać warstwy.
Uwaga: Uruchomienie skryptu z poziomu ArcMap w oknie konsoli Python.
import arcpy
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")
# Then add a selection to the layer based on location to features in another feature class
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")
Ten kod działa i nie są podawane żadne błędy, ale nie wybiera (wyróżnia) żadnych funkcji. Masz pomysł, dlaczego? Działa również bardzo wolno.
Zasadniczo próbuję to zrobić:
Działa to naprawdę szybko, niemal natychmiast, ale chcę zrobić to samo przy użyciu Pythona. Potrzebuję tylko wartości z tabeli wybranej funkcji, nie potrzebuję kopii warstwy.
Częścią rozwiązania może być wykorzystanie obszaru roboczego w pamięci, którym jest
Zapisywanie danych w obszarze roboczym w pamięci jest często znacznie szybsze niż zapisywanie w innych formatach ...
Tylko nie wiem, jak zaimplementować obszar roboczy w pamięci
źródło
import arcpy
polecenia zajmuje trochę czasu.arcpy.MakeFeatureLayer()
linii, ponieważproject
jest ona już warstwą. Po prostu zróbarcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
.Odpowiedzi:
Dobre pytanie!
Dmahr ma rację, szybciej jest po prostu wybrać warstwę zamiast tworzyć warstwę funkcji. Dodałbym również resztę zmiennych, nawet jeśli są one opcjonalne.
Kolejną rzeczą, którą znajduję, jest to, że uruchamianie rzeczy w oknie Pythona ArcMap jest zawsze wolniejsze. Uważam, że jeśli napiszesz kod do pliku .py, dodasz go jako skrypt do przybornika, a następnie uruchomisz, przetwarzanie będzie przebiegać szybciej.
źródło