Próbuję zautomatyzować różne zadania w ArcGIS Desktop (ogólnie używając ArcMap) za pomocą Pythona i ciągle potrzebuję sposobu, aby dodać plik kształtu do bieżącej mapy. (A potem zrób z tym różne rzeczy, ale to już inna historia).
Do tej pory najlepsze, co mogę zrobić, to dodać plik warstwy do bieżącej mapy, używając następującego polecenia („addLayer” to obiekt pliku warstwy):
def AddLayerFromLayerFile(addLayer):
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
arcpy.mapping.AddLayer(df, addLayer, "AUTO_ARRANGE")
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
del mxd, df, addLayer
Jednak moje nieprzetworzone dane zawsze będą plikami kształtowymi, więc muszę być w stanie je otworzyć. (Równoważnie: przekonwertuj plik kształtu do pliku warstwy bez otwierania go, ale wolałbym tego nie robić).
Utwórz warstwę funkcji (zarządzanie danymi) http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000006p000000.htm
Właśnie wypróbowałem to w oknie ArcMap w Pythonie i dodaje się ono bezpośrednio do mojej mapy (nie musiałem pobierać ramki danych i wywoływać AddLayer).
arcpy.MakeFeatureLayer_management('r:/temp/a.shp','test')
źródło
arcpy.SaveToLayerFile_management('test', 'r:/temp/evilmonkey.lyr', 'ABSOLUTE')
Jeśli nie chcesz zapisywać warstwy i po prostu chcesz go nie ma,arcpy.Delete_management('test')
.