就餐 Simphony 3D GIS

Repast Simphony 3D GIS

我正在将 Repast Simphony 用于涉及空气的项目space,并希望代理在具有静态地面代理的 GIS 投影上方连续 3D space 移动。目前,我在同一上下文中有单独的 GeographyContinuousSpace 投影,并在两个投影中同时移动代理,但 GIS 显示在代理运动方面仅为二维。

我注意到用于在 Geography 中设置位置的 Geometry 对象有一个 Coordinate.z 字段,但是将 z 值设置为除 NaN 什么都不做。我没有在文档中找到任何关于此的内容。

我计划实现 Projection 接口并进行自己的投影,因为方法冲突,我无法在同一个 class 中实现 GeographyContinuousSpace签名('getAdder')。这似乎是一项相当艰巨的任务,所以我认为值得检查一下是否有更好的方法来解决这个问题?

您可以通过覆盖 repast.simphony.visualization.gis3D.style.MarkStyle() 方法

public double getElevation(T obj)

这会将点标记放置在 3D GIS 显示中以米为单位指定的高程处。 JTS Coordinate 对象可以按照您的指示存储 z 值,但是 Geotools 或 JTS 空间数学的 none 使用此值,因为 CRS 转换均基于 2D 地形。我相信样式中的 getElevation() 指定相对于地面的高度而不是海平面。您可以在您的代理中提供一种方法,为样式提供当前高度,然后只使用样式 return agent.getElevation().