웹 매핑 환경에서 범례 파싱을위한 FOSS 솔루션이 있습니까?


14

우리의 웹 매핑 요구 사항은 상당히 표준 적입니다. 일부 기본 쿼리 및 결과 맵을 인쇄하거나 이미지를 저장하는 기능입니다. 일반적으로 과거에 ESRI 제품을 사용했지만 (지금은 GeoCortex를 사용하고 있음) 범례 정보를 구문 분석하여지도에 실제로 표시된 것과 일치하는 방법의 문제를 여전히 해결할 수 없었습니다. 예를 들어,지도에 4 개의 다각형이 표시되면 다각형에 대해 범례 항목이 4 개만 있어야합니다. 이 문제에 대한 오픈 소스 솔루션이 있습니까?

편집 : 이것을 더 명확히 할 수 있는지 봅시다. 현재 33,000 개 이상의 다각형이있는 지질 레이어가 있습니다. 이 레이어의 범례는 단일 이미지이며 수백 개의 범례 항목을 포함합니다 (예 : JPEG / PNG에 저장된 전체 지질학 레이어의 범례).

일반적으로 사용자는 영역 (예 : 단일 NTS 맵 시트 또는 그보다 작은 영역)을 확대하여 지질 다각형의 하위 집합이 화면에 표시됩니다. 그런 다음 GeoCortex / ArcGIS Server에서 생성 한 인쇄 문서 (PDF 또는 이미지)로지도를 저장합니다. 인쇄 문서에는 머리글,지도 이미지 및 범례가 포함됩니다. 그러나 지질층의 범례 는지도에 실제로 표시되는 것이 아니라 전체 지질층 의 범례 가됩니다 (예 : 훨씬 작은 하위 집합).

그래서 인쇄 문서와 함께 화면상의 /지도상의 실제 항목을 반영하는 지질 범례의 하위 세트를 즉시 클립하거나 생성 할 수 있는 FOSS 솔루션 이 있는지 찾고 싶습니다. . 나는 그것이 명확하게되기를 바랍니다. 그렇지 않다면 사과드립니다!


1
안녕하세요 ollyoop- 원하는 결과를 구하는 데 어려움을 겪고 있습니다. 나쁜 전설의 예와 좋은 전설의 예를 포함시킬 수 있습니까? 본인이나 다른 사람이 답변을 제공하는 데 도움이 될 수 있다고 생각합니다. Thanks--
andytilia

이 기능은 Arcgis Server 10.1에 포함되어 있으며 ESRI 프레젠테이션 중에 보았습니다.
geogeek

흠, 우리는 그것이 실제로 어떻게 작동하는지 볼 것입니다. 그 동안 FOSS 솔루션이 있습니까?
ollyoop

1
FOSS 또는 ESRI 기반, 사용자 정의 코드가 필요한 것 같습니다.
Ragi Yaser Burhum

확실히 Latitude Geographics가이를 수행 할 수 있습니다. 이미 Geocortex Essentials에 있는지 또는 구현할 계획인지에 대해 그들과 이야기 했습니까?
채드 쿠퍼

답변:


3

특정 조건에 따라 원하는 것을 할 수 있습니다. 몇 년 전에 개발 한이 Flex 앱 ( http://india-wris.nrsc.gov.in/LULCApp.html)을 살펴보십시오 .

범례와 통계는 현재 범위에서 볼 수있는 데이터에 따라 변경됩니다. 알고리즘을 사용하려면 각 클래스마다 고유 한 색상이 있어야합니다. Flex 어플리케이션은 클래스와 색상을 알고 있습니다. 익스텐트가 변경 될 때마다 현재 맵 익스텐트를 비트 맵으로 변환 한 다음 그 색상을 찾습니다. 이를 사용하여 현재 보이는 색상 또는 클래스를 찾을 수 있습니다. 이 정보를 기반으로 범례가 동적으로 생성됩니다.

당시 Flex를 사용했지만 HTML5에서 Canvas를 사용하여 가능합니다. 또는 서버 측 코드를 사용하여 맵 이미지와 동일한 작업을 수행하여 동적으로 생성 된 범례를 얻을 수 있습니다.


바로 그거야! 실제로 예제를 보는 것이 좋습니다. 매우 감사!!!
ollyoop

5

FOSS4G 또는 ESRI의 AFAIK에서는이 계층을 생성하기 위해 사용자 지정 코드를 작성해야합니다.

그것은 아닌 어려운,하지만 몇 줄의 코드보다 더 당신을 데려 갈 것이다.

ArcMap의 경우 이는 Custom Element를 사용하여 수행됩니다 . ESRI 도움말 사이트는 오래된 예제새로운 예제로 채워져 있습니다 .

과거에는 Pagelayout Frame Elements를 사용하여 설명한 것과 비슷한 것을 수행했습니다 .

ArcObjects를 수행 한 적이 없지만 프로그래밍 한 경우에는 그리기 코드가 약간 까다로울 수 있지만 일반적으로 해당 "aha!"에 도달하려면 하나가 필요합니다. 순간.

알고리즘은 간단합니다.

  • (1) 범례를 생성하기 위해 참조로 사용하려는 PageLayoutMap 객체 가져 오기 ... Pagelayout에 다른 Map 객체가 여러 개 포함될 수 있으므로 원하는 맵에 도달하려면 여러 프레임을 처리해야 할 수도 있습니다 사용자 정의 ArcMap Pagelayout 프로그래밍을 수행하지 않은 경우 (좀 더 작은 삽입 맵에 대해 생각하십시오) 익스텐트는 조금 드문 경우입니다.

  • (2) 원하는 맵의 ActiveView 표시 범위 를 가져옵니다.

  • 당신 같은 것을 (3)를 사용하여 쿼리 필터의 구조 및 루프 검색 을 통해 모든 레이어 지도한다.

  • 레이어가 반환하는 경우 (4) 모든 기록을, 당신은 내가 전에 준 예와 같이 그것을 그릴 수 있습니다.

더 쉬운 솔루션을 제공 할 수는 없지만 적어도이 방법으로 원하는 모양을 만들 수 있지만 코딩 만하면됩니다.

최신 정보:

웹 응용 프로그램의 컨텍스트 에서이 작업을 수행하려고했기 때문에 설명서를 확인했으며 비슷한 알고리즘을 사용하여 여러 가지 방법으로 문서를 작성할 수 있습니다.

이 중 하나는 ArcGIS Server Object Extension을 통하는 것 입니다. (1)을 제외한 모든 단계를 수행합니다 (이 문맥에서 Pagelayout에 대해 걱정할 필요가 없습니다). REST를 사용하여 결과를 노출하십시오.

여기에는 Flex 또는 Javascript를 사용하려는 경우에 따라 여러 옵션이 있지만 아이디어는 동일합니다. 페이지 새로 고침에서 작성한 REST 웹 서비스를 호출하고 범례를 그립니다.

제안 된 다른 방법과 달리이 방법의 장점은 기능과 함께 모든 기호를 사용할 수 있다는 것입니다 (특징의 기호에 대해 다른 색상으로 제한되지 않음). 클라이언트 측 코드에 선호하는 웹 언어를 사용할 수 있습니다. 범례에 대해 생성 한 심볼은 맵에서 자동으로 생성 할 수 있습니다.

단점은 Server Object Extension을 작성해야한다는 것입니다! 운 좋게도 이미 필요한 것의 75 %를 수행 하는 ESRI 샘플 이 있으며 위에서 언급 한 의견을 계속하는 방법에 대한 명확한 아이디어를 제공해야합니다.

업데이트 2 : 이에 대한 FOSS4G 솔루션의 경우 API가 약간 다르지만 동일한 접근 방식이 모든 FOSS 서버에서도 작동합니다.


1
답변 주셔서 감사합니다! ArcGIS 환경에서 이미이를 수행하는 Legend Limiter라는 도구가 있습니다. 내가 찾고있는 것은 웹 매핑 세계에 그 능력을 이식하는 것입니다.
ollyoop

@ollyoop 적어도 9.3까지는 동일한 방법이 ArcGIS Server에서 완벽하게 작동했을 것입니다. 9.3 이후 서버 렌더링 아키텍처에 중대한 변화가 있었음을 알았으며 그 사실을 지키지 못했습니다. 그래도 커스텀 요소가 10.1에서 빠져 나간 경우 놀랍습니다.
Ragi Yaser Burhum

는 ArcGIS Server와 함께 일하는 것이 접근 추가 @ollyoop
라기 Yaser Burhum

3

Geocortex Essentials를 사용하여 PDF로 내 보내면 인쇄 템플릿의 하위 보고서에 의해 범례가 생성됩니다. 이 하위 보고서에는 맵 이미지를 만드는 데 사용 된 모든 보이는 레이어와 ArcGIS Server에서 생성 된 모든 범례 견본이 수신됩니다. 범례의 레이어가 인쇄 된 영역의 범위에서 실제로 그려 지는지 확인하기 위해 공간 쿼리를 발행하지 않습니다.

따라서 범례의 동작을 변경하려면 범례 하위 보고서를 사용자 정의하거나 하위 보고서 대신 이미지를 사용하여 범례를 인쇄 템플릿에 넣을 수 있습니다. 뷰어에서 사용하기 위해 어떻게 든 범례 이미지를 생성하는 경우 인쇄 엔진에서 해당 서비스를 재사용 할 수 있어야합니다.

범례에는 견본이 레이어인지 또는 레이어의 클래스인지에 따라 범례 텍스트의 서식을 전환하는 내장 인라인 코드가 이미 포함되어 있습니다. 보고서 디자이너에서 "스크립트"탭으로 전환 할 때 인라인 코드를 볼 수 있습니다.

(저는 Latitude Geographics에서 일합니다)


1

전체 "FOSS 솔루션"을 사용한 "웹 매핑"정보 ... 고려 사항 :

  • "FOSS 솔루션"은 안전하고 안정적으로 작동하기 위해 "인기"(큰 조직적 커뮤니티를 보유) 여야합니다.
  • FOSS 및 GIS의 핵심 개념은 표준화입니다 . 최상의 솔루션은 OGC 표준과 같은 표준을 채택 합니다.
  • 오늘날 인기있는 "웹 솔루션"은 OpenLayers, Mapserver, GeoServer, PostGIS 등입니다. 모두 OGC 호환 코어가 있습니다. "GeoCortex / ArcGIS Server"솔루션은 FOSS가 아니라 OGC를 준수합니다.

기술적 고려 사항 : "커버리지"(?)를 사용하고 있으므로 공간 정보를 검색하기위한 OGC 표준이 WMS 입니다.


문제에 대한 OGC 호환 간단한 솔루션 은 표준 범례 설명을 XML 파일로 반환하고 범례가있는 이미지를 반환하는 WMS GetCapabilitiesGetLegendGraphic 서비스 를 사용하는 것 입니다.

참고 : 일부 GIS / FOSS 솔루션에 대해 생각할 때는 먼저 표준으로 생각하면 문제가 "잘 알려진 LEGO 조각 문제"로 줄어들고 모든 공급 업체에서 나옵니다.

ArcGIS 10+ 에는 GetLegendGraphic 이 있지만 범례 하위 집합 만 표시하도록 BBOX를 지정할 수 있는지 확인하십시오.


legend 를 사용하여 의 레이아웃을 빌드하려면 이 "FOSS LEGO 솔루션"의 다른 부분이 있습니다.

MapServer (및 ESRI 솔루션도 마찬가지)와 같은 FOSS 맵 서버는 JPEG 이미지를 WMS (바둑판식이 아닌) 맵 요청으로 제공 할 수 있습니다 ( WMS의 GetMap 서비스 참조) .

추신 : 표준은 아니지만 서버가 MapServer와 같은 템플릿 도구를 통해 legend with legend 를 제공하도록 구성 할 수 있습니다 .

"전설이있는 맵"의 레이아웃을 빌드하려면 Javascript, PHP 또는 지도 및 범례에 대한 (REST) ​​웹 서비스 요청을 수행하는 다른 언어를 사용하여 HTML (또는 "PDF 파일")을 생성 할 수 있습니다 .

HTML에서 PDF를 생성하는 것을 선호합니다. HTML-PDF 변환을위한 FOSS 솔루션 인 wkHtmlToPdf 를 사용할 수 있습니다 . "on fly JPEG layout"을 사용하여 열악한 레이아웃을 생성하려면 서버에서 imagemagick 와 같은 표준 FOSS 툴킷을 사용할 수 있습니다 .

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