我在ArcGIS中有一个流网络 - 即一系列折线,并且沿着每个流部分我添加了点。对于每个点,我从底层栅格中提取了高度和流量,并且还从交叉折线中提取了数据,包括折线的最小值,平均值和最大高度,HydroID和nextdownID。积分也有自己的ID,但我注意到这些不符合规定。
我想要的是将stepID添加到每个点,其中在每个河段的开始处(每条折线),第一个点是步骤1,然后向上递增直到到达范围的末尾。因此,如果折线上有10个点,则第一个点的stepID值为1,最后一个点的stepID值为10.
这听起来很简单,但不知道该怎么做。任何帮助都会很棒。
答案 0 :(得分:0)
您可以使用构造点工具/函数以特定间隔沿着线构建点。
单击“编辑器”工具栏上的“编辑”工具“编辑工具”。 单击要生成点的线要素。 单击“编辑器”菜单,然后单击“构造点”。
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001t00000029000000.htm
为了使编号自动化,您可能会考虑翻转线条以使所有尾部指向一个方向 - 向上或向下。双击一行,然后右键单击以查看“翻转”命令。如果您使用从上面的方法设置的点,它可能从尾部到头部排序。
另一种选择是为stepID创建自己的字段。创建属性连接到流段,并为每个连接的记录提供唯一的编号。通过你的记录选择每组十个,然后按FID排序(检查这些是按顺序)然后计算stepID = FID的值 - x 其中x =流段的stepID中的最低FID。这个想法可能会帮助你弄清楚如何正确地哄骗数字。
答案 1 :(得分:0)
我以前有这个问题,并以此方式解决过。这不是一个很好的解决方案。很想听听是否有更优雅的方法 。 为了清楚起见,我将其称为pointdataset,您将其称为“输入点”。
步骤1:以正确的顺序获取积分
为您的行指定一个唯一的行号,并将其加入最接近的输入点要素
沿线生成点:使用折线并在其上添加很多点。我将此数据集称为辅助点。填写一个小于两个输入点之间最小距离的距离。 确保折线具有正确的“方向”。您可以使用带有箭头的符号系统来检查它,并在需要时使用翻转编辑工具对其进行纠正。
第2步:生成StepID
rec=0
oldid = -1
def autoIncrement(lineid):
global rec
global oldid
pStart = 1
pInterval = 1
if rec == 0 or lineid!= oldid :
rec = pStart
else:
rec += pInterval
oldid = lineid
return int(rec)
表达式:autoIncrement( !lineID! )
表达式类型:Python
如果线条彼此之间非常接近,或者末端出现怪异的卷发,它可能仍然会混乱。但对于其余部分,它应该起作用!