작은 웹 매핑 / 맵 타일링 서비스 만들기


26

하나 이상의 다각형 셰이프 파일을 온라인으로 제공하는 소규모의 쉬운 방법을 찾고 있습니다 (기존의 맵 서버 인프라가없는 시립 웹 사이트에서). 지금은 QGIS에서 모든 작업을 수행하고 있으며 모든 오픈 소스를 유지하는 것을 선호합니다 (큰 소프트웨어 투자에는 예산이 남아 있지 않습니다).

이 주제를 연구 한 결과, 가능한 많은 접근 방식이 생겨나 고 혼란 스러웠습니다. 내가 찾고있는 것은

  • 주제별지도에 분류 된 다각형을 표시 할 수 있음 (-가능한 경우 팝업을 얻거나 속성 정보를 검색 할 수는 있지만 매우 선택적임)
  • QGIS에서 대부분의 작업 (스타일링 등)을 선호합니다
  • 기본 맵으로서의 OSM은 완벽하게 괜찮을 것입니다

지금까지 OSM 기본 맵의 사용자 지정 맵 타일은 내가 찾고있는 것 같습니다 (또는 더 나은 솔루션이 있습니까)? 이 타일을 만드는 가장 좋은 방법은 무엇입니까?


2
래스터 기반 (웹 타일) 솔루션이어야합니까? 벡터 솔루션으로도 괜찮을까요?
Mapperz

아뇨, 전혀 아닙니다. 방금 가장 쉬운 방법이라고 생각했습니다 (타일 만들기, index.htm 또는 코드 블록을 만들어 기존 웹 페이지에 붙여 넣고 서버 디렉토리에 복사). 개인 프로젝트에서 한 번 GMapCreator와 함께 작업했으며 작업을 수행하는 매우 빠른 방법이었습니다.
SAnderka

쉐이프 파일에 다각형이 몇 개 있습니까? 1000 미만이라면 벡터 솔루션에 대한 @Mapperz의 의견이 갈 길입니다. 가장 간단한 해결책은 Google Maps API를 사용하여 다각형을 그리고 정보 팝업 창을 만드는 것입니다. 비 대화식 타일 이미지를 만들고 저장할 필요가 없습니다. 지도의 타일 이미지는 위성 이미지, 도로 또는 센서스 경계를 ​​표시하는 등 밀도가 높은 정보에 가장 적합합니다.
b_dev

답변:


13

QGIS로 시작하는 간단한 방법으로 일반적인 QGIS 인터페이스를 사용하여 디자인 한 맵을 제공 할 수있는 QGIS Mapserver 를 사용할 수 있습니다. 또는 Java 기반이며 설치가 쉬운 GeoServer를 사용 하는 것이 좋습니다. 하나의 프로그램으로 시작하여 나중에 전환해야하는 경우 두 프로그램 모두 공개 표준을 사용하여 맵을 제공하므로 클라이언트를 변경할 필요가 없습니다.

WMS 맵을 제공하도록 시스템을 설정 한 후에는 클라이언트 프런트 엔드가 필요합니다. 시작하기가 쉽고 간단하게 확장 할 수 있으므로 OpenLayers 를 추천 합니다. 문제없이 WMS, WMST 및 OSM 타일을 처리합니다.

궁극적으로 WMS 계층의 타일로 이동해야 할 수도 있습니다 (예 : 합리적인 하드웨어에서 분당 50-100 개 이상의 요청을 받기 시작 함). 맵 서버 앞에 타일 캐시를 배치하는 것이 좋습니다. GeoServer를 사용했다면 내장 된 GeoWebCache를 사용하거나 TileCache를 사용할 수 있습니다 .


내 문제는 현재 지방 자치 단체에서 프리랜서 고문으로 일하고 있다는 것입니다. 지역의 IT 직원은 매우 열악하고 모든 종류의 "의심스러운"오픈 소스를 자신의 컴퓨터에서 유지하려고합니다 (QGIS와의 오랜 전투에 참전했습니다). 따라서 나는 지방 자치 단체의 웹 공간에 "소프트웨어"로 설치 해야하는 솔루션을 피하고 싶습니다.
SAnderka

내 꿈의 해결책은 내가 스스로 준비하고 웹 공간에 복사하고 html / JS 코드에 삽입하고 완료 할 수있는 것입니다. 래스터인지 벡터 데이터인지 여부는 실제로 계산에 포함되지 않습니다. 저는 어쨌든 기술적 인 차이를 이해하는 유일한 사람입니다 ... 그리고 다른 모든 사람들이 관심있는 모든 사람들은 우리 시민들을위한 우리의 데이터를 훌륭하고 쉽게 표현합니다.
SAnderka

1
웹 매핑은 소프트웨어없이 쉽게 할 수있는 것이 아니라고 설명하면됩니다. 물론 웹 서버에 간단한 타일을 넣을 수는 있지만 모든 규모에서 좋아 보이지는 않습니다. 시장이 더 원할 때 유지 관리가 어렵고 기능을 추가하기가 어렵습니다.
Ian Turton

그래서 저는 Open Geo Suite 패키지의 일부인 Geoserver를 살펴 보았는데 꽤 좋아 보입니다. 모양 파일을 가져 와서 스타일을 지정하고 로컬 호스트에서 미리보기를 실행했습니다. 하지만 웹 사이트에서이지도를 온라인으로 얻으려면 어떻게해야합니까? 뭔가 빠졌습니까? 북마크는 로컬 하드 드라이브를 참조하기 때문에 분명히 작동하지 않습니다. 가능한 모든 자습서와 방법을 살펴 보았지만 그 주제에 대해 논의한 적이없는 것 같습니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?
SAnderka

GeoServer를 웹 서버에 놓고 로컬 머신에서 원격 머신으로 데이터 디렉토리를 복사합니다.
Ian Turton

8

주제별지도에 분류 된 다각형을 표시 할 수 있음 (-가능한 경우 팝업을 얻거나 속성 정보를 검색 할 수는 있지만 매우 선택적임)

QGIS에서 대부분의 작업 (스타일링 등)을 선호합니다

기본 맵으로서의 OSM은 완벽하게 괜찮을 것입니다

이 모든 것은 QGIS와 ogr2layers플러그인 내에서 수행 할 수 있습니다 . 워크 플로우는 간단합니다 :

  1. QGIS에서 데이터 스타일을 지정하십시오. 플러그인을 New Symbology사용할 때 문제가 있었으므로 이전 심볼을 사용하십시오 ogr2layers.

  2. ogr2layers플러그인을 시작하고 열린 레이어 설정 (예 :지도 크기,지도 컨트롤,베이스 맵 등)을 정의하십시오. 그러면 파일 index.html로 변환 된 데이터 레이어가 포함 된 디렉토리가 생성 됩니다 geojson.

  3. 웹 서버에 디렉토리를 업로드하십시오.

이것은 간단한 웹맵 전용입니다. 사용자 정의베이스 맵 및 기타 웹 매핑 기능을 만들려면 iant 및 Peter의 답변을 확인하십시오.


1
간단한 웹맵은 여전히 ​​확대 / 축소 가능하고 스크롤 가능하다는 것을 의미합니다. 사무실로 돌아올 때 살펴 봐야 할 것 같습니다.
SAnderka


6

또 다른 옵션은 TileMill 그것은라는 프로토 CSS 언어 스타일의 정의를 포함, 사용하는 웹 기반 인터페이스에 쉬운 상호 작용과지도 제작, 바둑판 지원 - cascadenik . TileMill를 사용하면 척척 수 mbtiles의 같은과 소비 할 수있는 파일 TileStream을 . 즉, 매핑 된 출력을 배포하는 데 여전히 몇 가지 트릭이 있지만 고품질 타일을 생성하기위한 좋은 플랫폼을 제공합니다.


첫 페이지에서 데모 비디오를 시청하십시오. 매우 인상적입니다!
joshdoe

6

타 일드 맵 서비스를 위해 어떤 방식으로 갔는지에 대한 정보를 제공하기로 결정했습니다. 순수한 JavaScript와 GeoJSON은 해결책이 아니 었습니다. 왜냐하면 대략 40k 다각형과 33k 포인트를 처리해야하기 때문입니다. 그래서 나는 바둑판 식으로 갔다. 아, 여전히 루트 서버에 액세스 할 수 없으므로 GeoServer 또는 이와 유사한 것을 설정할 수 없습니다 (현재 단일 클라이언트에게는 경제적으로 가능하지 않음)

조사하고 읽은 후에 마침내 OpenLayers에 정착했습니다 (일부 GMaps를 선보인 후). Eric Hazzard의 훌륭한 저서 "OpenLayers 2.10"(Packt Publishing, 2011)은 JavaScript의 기본 사항과 디버깅 팁도 다루므로 정말 도움이되었습니다.

물론 모든 벡터 데이터 작업을 QGIS에서 수행했습니다. 물론 저와 같은 작은 프리랜서를 찾아 갈 수있는 방법입니다 (대학의 ArcGIS도 알고 있지만 QGIS는 지금까지 필요한 모든 것을 제공했습니다).

맵의 스타일을 지정하고 타일을 만드는 것이 더 큰 도전이었습니다. 먼저 CASA의 " GMapCreator " 와 함께 갔지만 여러 셰이프 파일을 계층화하는 것은 지루한 것으로 판명되었습니다 (다각형에 점 데이터를 제공 한 다음 모든 것을 포함하는 도시 경계선을 제공해야 함). GMapsCreator에서이 작업을 수행하는 것이 절대적으로 가능하지만 (쇼케이스 단계에서 수행했습니다), 3 번의 전체 렌더링주기가 필요합니다 (먼저 타일을 생성 한 다음 기존 타일이 이후 기능으로 "오버 페인 드"됩니다-올바른 순서로 렌더링 중요합니다!), 스타일 메뉴는 약간 부피가 크고 혼란 스럽습니다. 맵을 저장하고 나중에 편집하는 것도 복잡한 문제입니다.

TileMill은 매우 유망한 것으로 보 였으며 특히 CSS와 같은 스타일이 좋았습니다. 불행히도, 그것은 Mac 또는 Linux 전용이므로 일부 사람들을 놀라게 할 수 있습니다. 나는 내가 본 것을 정말 좋아해서 하드 드라이브에 Ubuntu 파티션을 설정하고 다운로드하여 맵 스타일을 지정했습니다. 스타일링 구문에 대한 문서는 때때로 조금 드물지만 데모 비디오 (주 사이트에 링크 됨)를 보는 것이 거의 모든 것에 응답합니다. 중첩 및 / 또는 조건부 스타일을 사용하여 흥미로운 작업을 수행 할 수 있으며 기본 CSS에 대한 이해를 통해 원하는 곳으로 이동할 수 있습니다.

결국 TileMill은 멋진 단일 * .mbtiles 파일을 렌더링합니다. OpenLayers에 직접 표시하는 방법이 없다고 생각합니다 (적어도 찾을 수 없습니까?) . 다른 도구 인 mbutil 을 사용해야 했습니다 . 이 도구는 mbtiles-File을 선택된 확대 / 축소 레벨에서 내 데이터의 타일 된 png가 포함 된 일반 폴더 구조로 "압축 해제"합니다.

마지막으로 모든 파일을 FTP 서버에 업로드하고 OL을 많이 읽고 웹 맵을 작성하고 진행했습니다 (생성 된 타일을 TMS 레이어로 추가하지만 올바른 소스 URL과 레이어 이름을 추측하는 데 시간이 오래 걸렸습니다. 인터넷 검색)에 이어 기본적인 html / CSS 문제로 몇 시간을 허비했습니다. 고객 "회사"(이것은 지방 자치 단체) ID 지침에 따라 떠 다니는 범례가있는 100 % 너비 / 높이 맵을 원했습니다.

아, 지금까지 Google지도를 기본 레이어로 사용하지만 WMS를 통해 제공되는 일부 맞춤형 항공 사진 (나가 제공하지 않고 주 측량 및 지리 데이터 관리)으로 곧 대체 될 수 있습니다.

중요한 점은 잊어 버리지 않았 으면 좋았 으면 자유롭게 물어보십시오! 이 스레드를 가끔 확인하겠습니다.


Windows에서도 Tilemill을 사용할 수 있습니다. Openlayers Users 메일 링리스트 에는 mbtile을 데이터 소스로 사용 하는 방법에 대한 스레드 가 비교적 최근 에 있습니다 (시도하지는 않았습니다).
매트 윌키

아, 고마워요. 확실히 그것을 시험해보아야 만, win7과 우분투 사이를 전환하는 것은 약간 성가신 일이었습니다.
SAnderka

3

다각형이 1000 개 미만인 경우 벡터 솔루션에 대한 @Mapperz의 의견을 고려하십시오. 다수의 다각형 만있는 경우 비대화 형 타일 ​​이미지 를 만들고 저장할 필요가 없습니다 .

바둑판 식 이미지는 위성 이미지, 도로 또는 50,000 인구 조사 다각형을 표시하는 등 밀도가 높은 정보에 적합합니다.

소수의 다각형에 대한 가장 간단한 해결책은 모양 파일을 KML로 변환하여 Google 내지도에 업로드하는 것입니다.

Javascript로 코딩하는 경우 가장 대화식 ​​솔루션은 다각형을 그리고 정보 팝업 창을 만드는 Google Maps API (또는 OpenLayers)입니다. GDAL 라이브러리를 사용하여 shapefile 다각형을 geoJSON 파일 (지리 정보를 저장하는 Javascript 방식)로 변환하여 시작할 수 있습니다.

또는 타일 경로를 사용하는 경우 사내 번거 로움없이 Amazon 또는 Google 클라우드에 타일을 저장할 수 있습니다.

이 주제별 매핑 블로그 항목 에는 고려중인 타일 방식에 비해 벡터 방식의 장점이 요약되어 있습니다.

행운을 빕니다!


단일 뷰에서 벡터로 취급되는 약 500 점이 점을 크롤링하는 속도를 늦추는 것으로 나타났습니다. 우리는 500 점 이상의 모든 것을 타일링합니다.
Michalis Avraam

1

나는 같은 결론을 내릴 때까지 천천히 노력하고 있기 때문에 당신은 배우자라고 생각합니다. QGIS를 배운 후 quantamnik과 mapnik을 시도했습니다. 그러나 qgis 스타일링은 편도 여행이며 스타일링 시스템은 1로 1이 아니므로 mapnik 스타일링을 알아야합니다. qgis mapserver 내보내기 기능에도 동일하게 적용됩니다. 맵 서버에서 기술을 익히는 "쉬운 방법"이없는 것 같습니다.

Mapnik, geoserver, mapserver, 각각의 헌신자가있는 것처럼 보이지만 mapserver는 중간 도로 인 것 같습니다.

내가 찾은 바로 가기가 하나 있으며 qgis는 qgis 맵을 선택한 해상도 및 범위로 래스터 화하는 명령 행 옵션이 있으며 월드 파일을 만듭니다. 이를 통해 maptiler 또는 gdal2tiles를 사용하여 한 번에 하나의 레이어를 타일링 할 수 있습니다. 분명히 20 줌 레벨에는 좋지 않으며 최대 png 크기 제한이 무엇인지 알지 못합니다.


2
QGIS MapServer는 MapServer와 다릅니다.
Ian Turton

2
이러한 혼동 가능성 때문에 QGIS 서버라고합니다.
underdark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.