Как добавить шейп-файл в ArcGIS с помощью сценариев Python? - PullRequest
4 голосов
/ 25 октября 2010

Я пытаюсь автоматизировать различные задачи в ArcGIS Desktop (в основном с ArcMap) с помощью Python, и мне все еще нужен способ добавить файл формы на текущую карту. (А потом что-то с этим делать, но это уже другая история).

Лучшее, что я могу сделать на данный момент, это добавить файл layer к текущей карте, используя следующее ("addLayer" - это объект файла слоя):

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

Однако мои необработанные данные всегда будут файлами форм, поэтому я должен иметь возможность открывать их. (Эквивалентно: преобразовать файл формы в файл слоя, не открывая его, но я бы предпочел этого не делать).

Ответы [ 2 ]

6 голосов
/ 24 ноября 2011

Переменная «theShape» - это путь к файлу формы, который будет добавлен.

import arcpy
import arcpy.mapping
# get the map document 
mxd = arcpy.mapping.MapDocument("CURRENT")  

# get the data frame 
df = arcpy.mapping.ListDataFrames(mxd,"*")[0]  

# create a new layer 
newlayer = arcpy.mapping.Layer(theShape)  

# add the layer to the map at the bottom of the TOC in data frame 0 
arcpy.mapping.AddLayer(df, newlayer,"BOTTOM")

# Refresh things
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
del mxd, df, newlayer
1 голос
/ 23 июля 2014

Недавно я боролся с подобной задачей и первоначально использовал метод идентификации документа карты, идентификации фрейма данных, создания слоя и добавления слоя в документ карты.Интересно, что все это может быть выполнено с использованием следующего при условии, что он вызывается из текущего документа карты.

# import modules
import arcpy

# create layer in TOC and reference it in a variable for possible other actions
newLyr = arcpy.MakeFeatureLayer_managment(
    in_features, 
    out_layer
)[0]

Создание векторного слоя требует двух входов, объектов ввода и выводаслой.Входными объектами могут быть любые типы классов объектов или слоев.Это включает шейп-файлы.Выходной слой - это имя слоя, которое будет отображаться в оглавлении.

Кроме того, Make Feature Layer может принимать предложение where для создания запроса определения во время создания.Как правило, именно так я это реализую, когда нужно быстро создать множество слоев с различными запросами определений.

Наконец, в приведенном выше фрагменте, хотя это и не является необходимым, я продемонстрировал, как заполнять переменную с помощьюрезультат вывода инструмента, чтобы можно было управлять слоем в оглавлении, используя arcpy.mapping, если это необходимо позже в скрипте.Каждый инструмент возвращает объект результата.Доступ к выходному объекту результата можно получить с помощью метода getOutput, но к нему также можно получить доступ с помощью индекса интересующего вас свойства результата, в данном случае выходной файл расположен с индексом 0.

...