UpdateCursor中的SQL语句无效或使用ArcPy

2024-09-24 02:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用更新光标确定不同大小城市(小、中、大)的定性距离(非常近、近和远),并不断收到以下错误消息:

Traceback (most recent call last):
  File "<string>", line 34, in <module>
RuntimeError: An invalid SQL statement was used. [SELECT NEAR_DIST, MedCities, OBJECTID_1 FROM popPlaces WHERE EST_POP>500ANDEST_POP<=10000]

我使用的代码如下:

#Task 7: Provide a qualitative classification of distance to hospitals for different size cities
#Create qualitative fields
arcpy.management.AddFields('popPlaces', [['SmallCities','TEXT'],['MedCities','TEXT'],['LargeCities','TEXT']])
#Assign qualitiative city size variabes to new fields
small=popCol+"<="+"500"
medium=popCol+">"+"500"+ "AND" +popCol+"<="+"10000"
large=popCol+">10000"
print('small', 'medium', 'large')

#Create an Update Cursor separately for the different size cities that assigns a qualitative class to each record based on distance to hospital.
#For SmallCities
with arcpy.da.UpdateCursor(popPlaces,(Dist,"SmallCities"),small) as cursor:
 for i in cursor:
  if i[0] <= 1000:
   i[1] = "Very Close"
  elif i[0] > 1000 and i[0] < 10000:
   i[1] = 'Close'
  else:
   i[1] = 'Far'
  cursor.updateRow(i)

#For LargeCities
with arcpy.da.UpdateCursor(popPlaces,(Dist,"LargeCities"),large) as cursor:
 for i in cursor:
  if i[0] <= 1000:
   i[1] = "Very Close"
  elif i[0] > 1000 and i[0] < 10000:
   i[1] = 'Close'
  else:
   i[1] = 'Far'
  cursor.updateRow(i)

#For MedCities
with arcpy.da.UpdateCursor(popPlaces,(Dist,"MedCities"),medium) as cursor:
 for i in cursor:
  if i[0] <= 1000:
   i[1] = "Very Close"
  elif i[0] > 1000 and i[0] < 10000:
   i[1] = 'Close'
  else:
   i[1] = 'Far'
  cursor.updateRow(i)

光标适用于大小城市,但不适用于中等城市,我不确定哪里出了问题。谢谢你的帮助


Tags: totextinforclosesizecursorsmall
1条回答
网友
1楼 · 发布于 2024-09-24 02:16:37

在中的AND周围缺少空格

EST_POP>500ANDEST_POP<=10000

改变

medium=popCol+">"+"500"+ "AND" +popCol+"<="+"10000"

medium=popCol+">"+"500"+ " AND " +popCol+"<="+"10000"

相关问题 更多 >