NetLogo GIS扩展gis:vertex-lists-of报错及正确用法咨询
问题分析与解决
报错原因
gis:vertex-lists-of函数要求传入单个矢量要素(VectorFeature),但你直接传入了整个矢量数据集(VectorDataset,也就是cities-dataset),这就触发了"not a VectorFeature"的报错。
正确用法
不管是处理线要素还是点要素,都需要先遍历数据集中的每个要素,再对单个要素调用对应函数:
处理线要素(提取所有顶点)
如果是线要素数据集,正确代码结构如下:
to draw-cities gis:set-drawing-color red gis:draw cities-dataset 1 ; 遍历数据集中的每个单个要素 foreach gis:features-of cities-dataset [ feature -> ; 对单个线要素调用gis:vertex-lists-of获取所有顶点列表 foreach gis:vertex-lists-of feature [ vertices -> ; 遍历每个顶点,提取坐标做后续操作 foreach vertices [ coord -> let x gis:point-x coord let y gis:point-y coord ; 示例:输出坐标或创建海龟 ] ] ] end
处理点要素(获取点坐标)
你当前用的是点集Shapefile,点要素的顶点列表仅包含自身坐标,用gis:vertex-list-of(单数形式,针对单个要素的唯一顶点组)更简洁:
to draw-cities gis:set-drawing-color red gis:draw cities-dataset 1 foreach gis:features-of cities-dataset [ feature -> ; 获取点要素的坐标组 let point-coord first gis:vertex-list-of feature let x gis:point-x point-coord let y gis:point-y point-coord ; 示例:在对应位置创建可视化海龟 create-turtles 1 [ setxy x y set color red ] ] end
关键函数区分
gis:features-of dataset:返回数据集中的所有单个矢量要素gis:vertex-lists-of feature:返回单个线/面要素的多组顶点列表gis:vertex-list-of feature:返回单个要素的第一组顶点列表(适合点要素)
内容的提问来源于stack exchange,提问作者Ll Nu
相关产品推荐
相关产品推荐

