Nunca he usado la viewshed herramienta, así que no puedo hablar con los detalles de uso de dicha herramienta, sin embargo en lo que respecta a su propuesta, en esta pregunta voy a añadir aquí una respuesta para construir en KHibma de la solución.
La primera cosa que tenemos que abordar es el formato de la consulta SQL: "[OID] = count"
. Tal y como está, esta consulta se producirá un error ya que "la cuenta", como se representa aquí, es una cadena de caracteres y cadenas de caracteres deben ser rodeado por comillas simples: "[OID] = 'count'"
. Ahora, la segunda razón por la que esta consulta no es que OID
es un campo entero y, como tal, no habrá OID
valor igual a "count"
. Aquí es donde el formato de cadena entra en juego: '"OID" = {}'.format(i)
o '"OID" = {0}'.format(i)
para aquellos que utilizan Python 2.6.x (Utilice comillas para delimitar el campo de nombre cuando se utiliza un archivo shapefile. Consulte la ayuda de ArcGIS.).
Para evitar ciertas dificultades para hacer consultas sobre el OBJECTID
de campo, podemos anidar el bucle en un cursor para asegurarse de que sólo estamos consultando OID
valores que existen:
arcpy.MakeFeatureLayer_management ("C:/data/pts.shp", "pts")
with arcpy.da.SearchCursor('pts',['OID']) as cursor:
for row in cursor:
oid = row.OID # or whatever your OBJECTID field is called
arcpy.SelectLayerByAttribute_management ("pts", "NEW_SELECTION", '"OID" = {}'.format(oid))
outViewshed = Viewshed("elevation","pts",2,"CURVED_EARTH",0.15)
outViewshed.save("C:/sapyexamples/output/outvwshd"+oid)