Выбор объектов карты и увеличение выбранных объектов не работает - PullRequest
0 голосов
/ 16 ноября 2018

Ниже приведен мой код для проецирования координат XY из CSV, создания из него шейп-файла, загрузки шейп-файла в существующий документ MXD, добавления меток, выбора объектов, увеличения выбранных объектов и экспорта карты. В конечном итоге, я хочу экспортировать около трех разных карт, поэтому мне нужно было бы перебирать выбранные функции, масштабировать и экспортировать. Мой код работает без ошибок. Однако выбор функций и увеличение выбранных функций не работает. Я упрощал код прямо сейчас, пока не смогу перейти к чему-то более сложному, включающему маркировку нескольких объектов, выбор нескольких объектов и циклический просмотр, масштабирование и экспорт карт. Ниже мой код. Я думаю, что первая проблема заключается в том, как мне исправить выбранные функции и увеличить выбранную функцию. Любая помощь приветствуется.

import pandas as pd
import arcpy

in_csv = 'C:/Users\Hector Hernandez/Documents/GitHub/pratt-savi-810-2018-10/students/hhernandez2783/Test/brg.csv'

df = pd.read_csv(in_csv)

out_csv = in_csv

# project xy coordinates
arcpy.MakeXYEventLayer_management(
     out_csv,
     'Brg_Lng',
     'Brg_Lat',
     'in_memory_xy_layer',
 )

# create a shapefile
arcpy.FeatureClassToFeatureClass_conversion(
     'in_memory_xy_layer',
     'C:/Users\Hector Hernandez/Documents/GitHub/pratt-savi-810-2018-10/students/hhernandez2783/Test',
     'brg.shp'
)

# loading shapefile in map document
# get the map document
mxd = arcpy.mapping.MapDocument(r"C:\Users\Hector Hernandez\Documents\GitHub\pratt-savi-810-2018-10\students\hhernandez2783\Test\ld.mxd")
# Set the workspace
arcpy.env.workspace = r"C:\Users\Hector Hernandez\Documents\GitHub\pratt-savi-810-2018-10\students\hhernandez2783\Test"
# get the data frame
df = arcpy.mapping.ListDataFrames(mxd,"*")[0]
# create a new layer
newlayer = arcpy.mapping.Layer(r"C:\Users\Hector Hernandez\Documents\GitHub\pratt-savi-810-2018-10\students\hhernandez2783\Test\brg.shp")
# add the layer to the map at the bottom of the TOC in data frame 0
arcpy.mapping.AddLayer(df, newlayer,"AUTO_ARRANGE")
# save the mxd file
mxd.save()


# adding labeling
layer = arcpy.mapping.ListLayers(mxd, "brg")[0] #Indexing list for 1st layer
if layer.supports("LABELCLASSES"):
    for lblclass in layer.labelClasses:
        lblclass.showClassLabels = True
layer.showLabels = True
arcpy.RefreshActiveView()
mxd.save()

# select features & zoom
nycbrg = arcpy.mapping.ListLayers(mxd, "brg", df)[0]
arcpy.SelectLayerByAttribute_management(nycbrg, "NEW_SELECTION", """ "brg" = 'Brooklyn Bridge' """)
df.zoomToSelectedFeatures()

# export map
arcpy.mapping.ExportToPNG(mxd, r'C:\Users\Hector Hernandez\Documents\GitHub\pratt-savi-810-2018-10\students\hhernandez2783\Test\expmap1.png')

1 Ответ

0 голосов
/ 17 ноября 2018

Я думаю, что объект слоя не определен правильно. Документация для ListLayers содержит 1 обязательный аргумент map_document_or_layer (это будет mxd в вашем коде) и 2 необязательных аргумента wildcard и data_frame (я не думаю, что они действительно нужны в вашем коде ).

Я бы попробовал это nycbrg = arcpy.mapping.ListLayers(mxd)[0]. Хотя вы уже определили слой с layer = arcpy.mapping.ListLayers(mxd, "brg")[0] #Indexing list for 1st layer, поэтому вам не нужно делать это дважды. Похоже, проблема в том, чтобы идентифицировать слой, на который ссылаются функции выбора и масштабирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...