UMN 맵 서버에서 계층의 일부 클래스 만 표시하려면 어떻게해야합니까?


9

맵 서버에서 모양 레이어를 시각화합니다. 이제이 계층의 일부 클래스에 대해서만 요청하고 싶습니다. 예를 들어 물 등급 만 요청하고 나중에 나무 등급 만 요청하고 싶습니다. 맵 서버로 이것을 알 수 있습니까?

답변:


7

여기 또 다른 방법이 있습니다. 이 방법에는 각 클래스에서 표현식이있는 하나의 레이어를 사용하는 것이 포함됩니다. 논리적 표현이 포함되어 있기 때문에이 방법을 사용하는 것이 좀 더 비용이 많이 들지만 실제로 부하가 큰 상황에 도달하지 않으면 차이를 느끼지 못할 수 있습니다.

각 클래스는 두 부분으로 표현됩니다. 피처를 그리려면 표현식의 두 부분이 모두 참이어야합니다. 표현식의 첫 번째 부분은 셰이프 파일의 속성을 기반으로 해당 클래스에 포함되어야하는 기능을 선택합니다. 표현식의 두 번째 부분은 url을 통해 전달 된 변수의 값을 평가합니다. URL에서 변수의 이름을 지정하는 것은 중요하지 않으며 ( 'layer'와 같은 예약어를 사용하지 마십시오) 식의 변수 이름과 일치해야합니다.

샘플 레이어는 다음과 같습니다.

LAYER
  NAME "watersheds"
  STATUS DEFAULT
  DATA 'majclip'
  TYPE POLYGON
    CLASS
       NAME "water"
       EXPRESSION ([MAJOR] < 42 AND '%wanted%' = 'water')
       STYLE
          COLOR 0 0 255
       END
    END
    CLASS
       NAME "wood"
       EXPRESSION ([MAJOR] >= 42 AND '%wanted%' = 'wood')
       STYLE
          COLOR 0 255 0
       END
    END
END

물 기능 만 그리려면 다음과 같은 URL 요청을 사용합니다. http : //localhost/cgi-bin/mapserv.exe? map = / ms4w / apps / mymapfile.map & mode = map & wanted = wood

이것이 목표를 달성하는 세 번째 유효한 방법이므로 목표가 무엇인지 생각하고 싶을 것입니다. 데이터가 자주 변경되면이 옵션을 사용하십시오. 데이터가 자주 변경되지 않으면 개인적으로 두 개의 레이어를 사용합니다. 성능이 향상되면 토지 사용 유형별로 셰이프 파일을 여러 셰이프 파일로 분할 할 수도 있습니다. 레이어 필터는 매우 효율적이지 않을 수 있습니다. 웹 매핑을 사용하면 데이터를 사전 최적화할수록 좋습니다.


7

귀하의 경우에는 나무와 물을위한 두 개의 층이 있어야합니다. 동일한 shapefile을 사용하여 두 개의 레이어를 가질 수 있습니다.

그런 다음 LAYERS 매개 변수를 사용하여 요청에서 직접 시각화 할 레이어를 선택할 수 있습니다. 클래스는 데이터의 다른 부분 만 나타냅니다 (예 : 해당 레이어의 데이터를 렌더링하는 방법).


4

실제로 하나의 레이어에 모두 필요한 경우 명명 된 스타일을 사용하여이를 달성 할 수 있습니다. 자세한 내용은 여기 를 참조하십시오. 그러나 여러 계층에 대한 Peter의 제안은 여러 가지면에서 훨씬 간단한 접근법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.