2017-05-18 4 views
0

AnyLogic GISRegions 컬렉션을 지역별로 정렬하려고합니다. 상기 면적은 GISRegion.area(units)을 사용하여 계산되며, 이는 간단하다. 그러나 사용하고있는 영역은 도시 규모이며 메서드는 double을 반환합니다. 이 오버 플로우 문제를 일으킬 나타납니다AnyLogic : GISRegion.area()에서 이중 오버플로를 보상합니다.

enter image description here

나는 그래서 아마 이것은 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이 아닌 사용자의 경우 각 geoshape에 모든 위도 - 경도 점이 있습니다. 이 포인트를 사용하여 지역을 어떻게 계산합니까?

답변

1

[전체 답변은 아니지만 의견이 너무 길어서 의견이 없습니다.]

AnyLogic 지원 요청은 100 % 버그로 보인다고 가정합니다. 이 함수는 단지 기본적인 '계산 영역'함수이기 때문에 여러분이 제안한 버텍스 위도/경도에서 다른 방법으로 그것을 계산하고 getPoints()을 통해 얻을 수있는 것 이외에 어떤 방식 으로든 볼 수는 없습니다. GISRegion.

이것은 N면 다각형이기 때문에 GIS 투영을 허용하지는 않지만 표준 Java 라이브러리가 있어야합니다 (도입 할 수있는 오류 수준은 확실하지 않음). 당신은 오픈 GIS 라이브러리가 후자에 대응할 것으로 기대한다. GISRegion에는 OpenMap 표준 (?) 형식 그래픽을 만드는 방법이 createOMGraphicObject()이므로 다른 라이브러리와 함께 사용할 수있는 표준 형식 인 경우 유용 할 수 있습니다.

계산을 수행한다고 주장하는 this GIS StackOverflow question에 대한 glennon의 답변에는 코드가 있습니다 (또는 fmark의 대답과 같이 PostGIS에 연결할 수 있음).

+0

내가 할 수있을만큼 좋게 보인다 - 고마워! –