c语言中if循环语句,c语言if循环用法

  c语言中if循环语句,c语言if循环用法

  此代码用于附加了网格像素数的多边形数据。例如,如果格网是土地覆被,则每种土地覆被类型都有一列,每个面中都有相应数量的像素。这个输出来自地理建模环境,因为选项卡网格破坏了我使用的大形状文件。最后我要的是面积值而不是单元格个数,用下面的代码就可以实现。

  因此,代码将遍历shapefile属性,提取原始计数字段,然后根据用户输入创建一个新字段。使用用户输入名称网格值在AddField中循环,以获取新的字段名称。然后遍历原始字段的值,并计算新字段的用户指定的面积值。本质上,我试图自动化“添加字段”和“计算字段”模型,它们通常由模型开发人员进行批处理。

  我费了好大劲才弄清楚计算新字段的正确逻辑。正如我刚刚写的,我使用for循环来获取原始字段,但是最后只使用了最后一个原始字段值,并且只输入了最后一个新字段。您必须循环获取第一个原始字段,并将其放在适当的新字段中。示例:

  If origFields=(NLCDV1 , NLCDV2 。)和addedFields=(KM2_LC1 , KM2_LC2 。),addField计算以适当的值结束。km2 NLCDV1!*单位(KM2_LC2=)=换算(换算(!NLCDV2!*单位),同样,对于所有可能的值。

  # user inputs desired final units,loopthrough to find the desired units and calculates the new fields .

  unit=arcpy . getparameterastext(7)#必须是:平方米,平方公里,英亩,公顷,平方英里或平方英尺.

  # usermustnoworiginalunitsofraster,必须以米或英尺为单位!

  对于原始字段中的字段:

  如果rastunit==米:

  # tomakesquaremetersfinalareaunit .

  if unit==SqMeter :

  arcpy . calculate field _ management(输入池,添加字段,变换, PYTHON_9.3 ))

  # to convertssquaremetersintosquarekilometers .

  elif unit==SqKm :

  arcpy . calculate field _ management(输入池,addField,转换sqmsqkm, PYTHON_9.3 ))

  # to convertssquaremetersintoacres .

  elif单位==英亩:

  arcpy . calculate field _ management(输入池,addField,转换sqmac, PYTHON_9.3 ))

  # to convertssquaremetersintohectares .

  elif单位==公顷:

  arcpy . calculate field _ management(输入池,addField,转换sqmhec, PYTHON_9.3 ))

  # to convertpsquaremetersintosquaremiles .

  elif unit==SqMi :

  arcpy . calculate field _ management(输入池,addField,转换sqmsqmi, PYTHON_9.3 ))

  # to convertssquaremetersintosquarefeet .

  elif unit==SqFt :

  arcpy . calculate field _ management(输入池,添加字段,转换sqmsqft, PYTHON_9.3 ))

  否则:

  printarcpy.add警告( ineligibleunitprovided。)

  elif rastunit==Foot_US :

  #以平方英尺作为最终面积单位.

  if unit==SqFt :

  arcpy . calculate field _ management(输入池,添加字段,变换, PYTHON_9.3 ))

  否则:

  print thirasterhasteshe下列单位: rast单位。如果没有,请重新投影光栅。

  只需解释如何让相应的原始字段与新添加的字段相匹配。我们正在考虑使用定向字段(zip)、添加字段、调用(calcs)等。我这样做,它给我以下输出:

  (uNLCDV1 , KM2_LC1 ,!NLCDV1!* 900.0 )

  (uNLCDV2 , KM2_LC2 ,!NLCDV2!* 900.0 )

  (uNLCDV3 , KM2_LC3 ,!NLCDV3!* 900.0 )

  (uNLCDV4 , KM2_LC4 ,!NLCDV4!* 900.0 )

  (uNLCDV5 , KM2_LC5 ,!NLCDV5!* 900.0 )

  (uNLCDV7 , KM2_LC7 ,!NLCDV7!* 900.0 )

  (uNLCDV8 , KM2_LC8 ,!NLCDV8!* 900.0 )

  (uNLCDV9 , KM2_LC9 ,!NLCDV9!* 900.0 )

  这些行是我需要的,但我不知道这样的输出是否可以用于输入字段。就算能用,也不知道是python还是zip,所以不知道怎么用。

  感谢逻辑支持。欢迎您对清洁/分类提出建议。就像我说的,当这一切结束后,我还是个初学者。如果能顺理成章,我会很开心!谢谢你的确认。如果我的代码太复杂,我很抱歉(在这种情况下,请不要感到惊讶)。

  解决办法

  我不知道我是否还理解你的要求,但它可能是有用的:

  Origfields=(uNLCdv1 ,uNLCDV2 ,uNLCDV3 ))

  addedFields=(KM2_LC1 , KM2_LC2 , KM2_LC3 )

  calcs=()!NLCDV1!* 900.0 ,!NLCDV2!* 900.0 ,!NLCDV3!* 900.0 )

  对于orig、added、calcinzip(Origfields、addedFields、calcs):

  打印“{ 0!r}、{!r}、{!r}”。格式(原始,添加,计算).

  输出:

   uNLCDV1 , KM2_LC1 ,!NLCDV1!* 900.0

  uNLCDV2 , KM2_LC2 ,!NLCDV2!* 900.0

   uNLCDV3 , KM2_LC3 ,!NLCDV3!* 900.0

c语言中if循环语句,c语言if循环用法