【问题标题】:Developing Geoprocessing Tool in ArcPy在 ArcPy 中开发地理处理工具
【发布时间】:2015-08-06 18:02:07
【问题描述】:

我正在尝试将其制作成可在 ArcMap 中重复使用的地理处理工具,但我收到以下错误。我格式化 where_query 变量的方式似乎存在问题,但我似乎无法正确处理。

Traceback (most recent call last):
  File "C:\ArcPy\mean_center_drift.py", line 19, in <module>
    arcpy.Select_analysis(in_feature, year_out_name, where_query)
  File "c:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\analysis.py", line 84, in Select
    raise e
ExecuteError: ERROR 000358: Invalid expression 1
Failed to execute (Select).

这是当前形式的代码。

import os
import arcpy

in_feature  = arcpy.GetParameterAsText(0)
out_features  = arcpy.GetParameterAsText(1)
origin_year = arcpy.GetParameterAsText(2)
field_name = arcpy.GetParameterAsText(3)

for x in range(10, 140, 10):
    year_range = int(origin_year) + x
    where_query = 'field_name' <= "{0}.format(year_range)"

    year_out_name = os.path.join(out_features, "Years_{0}".format(x))
    mean_out_name = os.path.join(out_features, "Mean_{0}".format(x))

    arcpy.Select_analysis(in_feature, year_out_name, where_query)

    arcpy.MeanCenter_stats(year_out_name, mean_out_name, "#", "#", "#")

您能提供的任何帮助将不胜感激!

【问题讨论】:

标签: python gis arcpy


【解决方案1】:

where_query构造错误的。

>>> where_query = 'field_name' <= "{0}.format(year_range)"
>>> where_query
True
>>> year_range = 2010
>>> where_query = "'field_name' <= {0}".format(year_range)
>>> where_query
"'field_name' <= 2010"
>>> 

我不熟悉 arcpy 如果不需要 field_name 周围的单引号,请将它们删除。

如果你没有使用带语法高亮的编辑器,你应该考虑一下。

print 语句/函数是检查可疑变量的快捷方式。

【讨论】:

    【解决方案2】:

    Someone in the GIS StackExchange 能够帮助我使用以下解决方案。

    import os
    import arcpy
    
    in_feature  = arcpy.GetParameterAsText(0)
    out_features  = arcpy.GetParameterAsText(1)
    origin_year = arcpy.GetParameterAsText(2)
    field_name = arcpy.GetParameterAsText(3)
    
    path = arcpy.Describe(in_feature).path
    new_field_name = arcpy.AddFieldDelimiters(path, field_name)
    
    for x in range(10, 140, 10):
        year_range = int(origin_year) + x
        where_query = """{0} <= {1}""".format(new_field_name, year_range)
    
        year_out_name = os.path.join(out_features, "Years_{0}".format(x))
        mean_out_name = os.path.join(out_features, "Mean_{0}".format(x))
    
        arcpy.Select_analysis(in_feature, year_out_name, where_query)
    
        arcpy.MeanCenter_stats(year_out_name, mean_out_name, "#", "#", "#")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2020-08-08
      • 2014-10-10
      相关资源
      最近更新 更多