문제

다각형 모음과 다른 벡터 객체를 포함하는 파일 (*.shp)이 있습니다 (그러나 다각형은 나에게 가장 중요합니다). 인쇄 할 수없는 물체를 제거해야합니다.

어떤 기준이 선택했는지 모르겠습니다. 테두리 길이가 작은 물체를 제거하는 것이 더 좋을 것이라고 생각합니다. 작은 영역으로 물체를 제거하는 것입니다 (따라서 긴 물체가 줄이 줄어 듭니다). 그러나 아마도 그것에 대한 특별한 알고리즘이 있습니까?

즉, 주어진 줌 레벨에서 볼 수있는 객체 만 찾고 싶습니다.

도움이 되었습니까?

해결책

아주 간단합니다. 언어는 언급하지 않으므로 다음 의사 코드를 고려하십시오.

drawRect = myDevice.GetDrawRect();
for(oneShape in allShapes)
{
    shapeRect = oneShape.GetRect()
    if(! drawRect.Contains(shapeRect))
         oneShape.MarkAsInvisible(); 
    else
         oneShape.Draw();
}

contins () 함수는 y- 값이 맨 아래로 증가한다고 가정 할 때 다음과 같이 보입니다.

bool Rect::Contains(OtherRect)

{
    if(left   <=  OtherRect.right  &&
       right  >=  OtherRect.left   &&
       top    >=  OtherRect.bottom &&
       bottom <=  OtherRect.top)
       return true

    return false;
}

다른 팁

제거해야 할 다각형은 생성하려는 이미지의 DPI에 따라 다릅니다. 선이 하나의 픽셀 만 채우려면 제거하거나 포인트 표현으로 교체해야합니다. 물론 이것은 선의 너비에 의해 영향을받을 것입니다. 이러한 종류의 문제는 다음과 같은 전용 매핑 라이브러리를 사용하여 해결됩니다. mapnik.org

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top