我尝试按地理区域对AnyLogic GISRegions
的集合进行排序。所述区域使用GISRegion.area(units)
计算,这足够简单。但是,我使用的区域是城市规模,方法返回double
。这似乎会导致溢出问题:
我不认为我的代码出错了,所以这可能是AnyLogic的问题。为简洁起见,我已经包含了一条打印每个区域的区域而不是排序步骤:
// For each region of the Australian Capital Territory, print its area in km^2:
areas.forEach(next -> traceln(""+next.name+": " + next.gisRegion.area(SQ_KILOMETER)));
有没有人遇到过这个问题?你是怎么绕过它的?
对于非AnyLogic用户,我在每个地理位置都有所有的lat-long点。我如何使用这些点来计算面积?
答案 0 :(得分:1)
[不是一个完整的答案,但这些想法对于评论来说太长了。]
我假设您已经提出了AnyLogic支持请求,因为它似乎100%是一个错误。由于这只是一个基本的“计算区域”函数,除了你所建议的,从你所拥有的顶点纬度/长度以另一种方式计算它,我无法看到它的任何方式,并且可以通过{{ 1 {} getPoints()
。
由于这只是一个N边多边形,当然必须有标准的Java库可以计算出来,虽然这不允许进行GIS投影(不确定可能引入的错误级别);你期望开放的GIS库能够应对后者。由于GISRegion
有一个GISRegion
方法来创建OpenMap标准(?)格式图形,如果这是其他库可以使用的标准格式,这可能很有用。
glennon对this GIS StackOverflow question声称执行计算的答案有代码(或者你可以像在fmark的答案中那样挂钩到PostGIS)。