我是java和repast的新手。我正在尝试创建一个gridcells类型的网格单元格(网格单元格)列表(值层单元格),但我不断收到错误“GridCell类型不是通用的;它不能用参数参数化”
我该如何解决这个问题?
package tester;
import java.util.List;
import repast.simphony.context.Context;
import repast.simphony.engine.environment.RunEnvironment;
import repast.simphony.engine.schedule.ScheduledMethod;
import repast.simphony.parameter.Parameters;
//import repast.simphony.query.space.grid.GridCell;
import repast.simphony.query.space.grid.GridCellNgh;
import repast.simphony.space.grid.Grid;
import repast.simphony.space.grid.GridPoint;
import repast.simphony.valueLayer.AbstractGridFunction;
import repast.simphony.valueLayer.BufferedGridValueLayer;
import repast.simphony.valueLayer.BufferedGridValueLayer.Buffer;
import repast.simphony.valueLayer.GridCell;
import repast.simphony.valueLayer.MaxGridFunction;
import repast.simphony.valueLayer.MinGridFunction;
private void Move() {
// TODO Auto-generated method stub
BufferedGridValueLayer heat = (BufferedGridValueLayer) context.getValueLayer("Heat Layer");
Grid <Object> grid = (Grid <Object>) context.getProjection("Insulation Grid");
//Get the Grid Location of this insulation unit.
GridPoint pt = grid.getLocation(this);
//Use the GridCellNgh to retrieve the list of of Gridcells (grid) contianing Gridcells (valueLayergrid).
GridCellNgh <GridCell> nghCreator = new GridCellNgh <GridCell> (grid, pt, GridCell.class, 1, 1);
List <GridCell <GridCell>> gridCells = nghCreator.getNeighborhood(true);
}
答案 0 :(得分:1)
由于Repast API中有两个GridCell类,因此存在一些混淆。
GridCellNgh.getNeighborhood(true)
返回类型repast.simphony.query.space.grid.GridCell<T>
,它是位于特定网格位置的代理的容器。 GridCellNgh
类用于根据代理类的类型检索这些类型的网格单元,不适用于ValueLayer repast.simphony.valueLayer.GridCell
对象。
GridCellNgh
可用于获取GridPoints列表,您可以通过GridCell
从中获取关联的GridCell.getPoint()
,但这假设所有周围的网格位置都填充了代理类传递给GridCellNgh
构造函数,这在Grid完全填充代理时才可用。
我建议您只需使用GridPoint pt = grid.getLocation(this)
来获取中心点,然后根据中心x,y访问值层,每个x +/- 1,y +/- 1组成摩尔附近。