如何基于GIS地图为NetLogo中的海龟分配经纬度
NetLogo海龟坐标转GIS经纬度的正确做法
直接用NetLogo GIS扩展的gis:unproject函数就行,这就是gis:project-lat-lon的反向操作,专门用来把NetLogo世界坐标转成当前地图CRS的经纬度,比手动计算靠谱多了。
步骤说明
- 先确保完成基础操作:用
gis:load-dataset加载GIS地图,并且通过gis:set-world-envelope (gis:envelope-of 加载的地图变量)把地图范围设为NetLogo的世界范围——这是坐标转换的前提,没做的话转换结果肯定不准。 - 给海龟赋值经纬度的代码示例:
- 给单个海龟设置:
ask turtle 0 [ let geo-coords gis:unproject xcor ycor set long first geo-coords ; 先取经度 set lat last geo-coords ; 再取纬度 ] - 给所有海龟批量设置:
ask turtles [ let coords gis:unproject xcor ycor set long item 0 coords set lat item 1 coords ]
- 给单个海龟设置:
关键注意点
gis:unproject返回的是**[经度, 纬度]**的列表,别搞反赋值顺序。- 别再手动用
gis:envelope-of结合minimum-x/minimum-y计算了,很多GIS投影是非线性的,手动计算必然会有偏差,内置函数已经把投影的转换逻辑处理好了,直接用就行。
内容的提问来源于stack exchange,提问作者Pol
相关产品推荐
相关产品推荐

