Meu problema: usando o ArcPy, quero fazer um loop sobre buffers e selecionar geometry_features dentro de cada buffer e fazer algo (atualizar) apenas os objetos encontrados nesse buffer específico. O código abaixo explica o que eu quero fazer (mais ou menos):
def _update_connections_inside_buffers(self):
buffers = arcpy.SearchCursor(self.__buffer_class_name)
in_layer = "connections"
for i_buffer in buffers:
shape = i_buffer.shape
# can not use a geometry to do a selection.. very inconvenient!!
connections = arcpy.SelectLayerByLocation_management(in_layer, "WITHIN", shape)
self._update_connections(connections)
No entanto: isso não funcionará porque SelectLayerByLocation_management () não aceita uma geometria, "forma" como argumento, mas espera um feature_class_name (nome da camada). Existe um método arcpy que pode fazer uma pesquisa usando um predicado espacial. Não consegui encontrar como fazer isso no manual da ESRI.
Encontrei a solução para o problema. Eu tive que fornecer uma feature_layer como primeiro argumento em vez de string referindo-se à class_layer. "
fonte