使用gis:set-world-envelope-ds报错,如何为范围添加缓冲区?
解决NetGIS中世界范围缓冲区设置问题
要解决海龟移动超出世界边缘的报错,你可以通过给shapefile的范围添加缓冲区来扩大世界边界,具体操作步骤如下:
加载Shapefile并获取原始边界
先加载目标shapefile,然后提取它的原始外接范围:gis:load-dataset "your-shapefile.shp" let original-shape gis:feature-of "your-shapefile.shp" ; 若为多要素数据集,可直接引用数据集变量 let original-envelope gis:envelope-of original-shape创建带缓冲区的几何对象
使用gis:buffer函数为shapefile要素添加缓冲区,参数中的距离需与shapefile的坐标系单位一致(比如地理坐标系用度,投影坐标系用米):; 示例:添加100米缓冲区(适用于投影坐标系),地理坐标系可改为0.01度这类小数值 let buffered-shape gis:buffer original-shape 100提取缓冲区的外接范围并设置世界边界
从缓冲区几何对象中提取新的外接范围,再用它设置世界边界:let buffered-envelope gis:envelope-of buffered-shape gis:set-world-envelope-ds buffered-envelope
注意事项
- 缓冲区距离的选择要匹配模型需求:如果海龟移动范围较大,可适当增大距离;反之则减小,避免不必要的世界空间浪费。
- 若shapefile包含多个要素,
gis:buffer会自动为每个要素添加缓冲区,gis:envelope-of会取所有缓冲区的最小外接矩形,确保覆盖所有可能的海龟移动区域。
内容的提问来源于stack exchange,提问作者DeMelkbroer
相关产品推荐
相关产品推荐

