콘텐츠로 이동

지도 타일 생성

QCAD에는 Leaflet과 같은 온라인 지도 표시에 사용할 지도 타일을 만드는 두 가지 명령줄 도구가 함께 제공됩니다. Leaflet은 브라우저에서 대화형 지도를 다루기 위한 JavaScript 라이브러리입니다.

온라인 지도의 가장 간단한 사용 사례는 웹사이트 방문자에게 도면의 대화형 확대/축소 가능한 뷰를 제공하는 것입니다.

다음은 주어진 도면 파일에 대해 지도 타일을 생성하는 예입니다.

dwg2maptiles -z 0-6 -c -b white -hq-postfix=@2x -a -o path/to/output/directory drawing.dxf

-z 스위치는 생성할 확대/축소 수준을 지정하며, 여기서는 확대/축소 수준 0에서 수준 6까지입니다. 이는 수준 0(자동 확대/축소의 전체 도면)에서 시작하여 사용자가 한계에 도달할 때까지 6번 확대할 수 있음을 의미합니다. 사용자가 확대할 때마다 도면이 2배 확대되므로 6개의 확대/축소 수준에서 사용자는 2^6(=64)배 확대할 수 있습니다. 더 많은 확대/축소 수준을 생성하려면 더 많은 시간과 디스크 공간이 필요합니다. 각 추가 확대/축소 수준은 일반적으로 이전 수준보다 생성하는 데 4배 더 많은 시간과 디스크 공간이 필요합니다.

타일은 주어진 출력 디렉터리(-o)에 지도 타일의 표준 디렉터리 구조 및 파일 이름(z/x/y.png)으로 생성됩니다.

위 예에서는 도면이 흰색 배경(-b white)에 렌더링되기를 원합니다. 모든 선이 보이도록 하기 위해 흰색 선은 검은색으로 교정되어야 합니다(-c).

-hq-postfix=@2x 인수는 dwg2maptiles에 표준 해상도 256x256px 타일과 함께 512x512px의 고품질(hq, 고해상도, 레티나) 타일을 생성하도록 지시합니다.

품질을 더욱 높이기 위해 안티앨리어싱(antialiasing)을 위한 -a 스위치도 사용합니다.

Leaflet으로 온라인 예제 보기

dwg2maptiles는 세계 지도에 대한 정확한 오버레이를 생성하는 데에도 사용할 수 있습니다. 이를 위해 도면은 일반적으로 온라인 지도에서 흔히 사용하는 Web Mercator 좌표로 로컬 좌표계에서 변환되어야 합니다.

QCAD Professional에는 도면을 한 좌표 참조 시스템(CRS)에서 다른 시스템으로 변환하는 별도의 명령줄 도구인 dwgmapconvert가 함께 제공됩니다.

dwgmapconvert는 일반적으로 주어진 도면 파일의 모든 좌표를 알려진 로컬 좌표계에서 EPSG:3857(때때로 “Web Mercator”라고 함) 좌표계로 변환하는 데 사용됩니다. 이는 예를 들어 Google Maps나 mapbox와 같은 대부분의 온라인 지도에서 사용하는 좌표계입니다. dwg2maptiles의 입력으로 도면을 사용하고 지리 참조 지도 타일을 생성하려면 도면이 EPSG:3857 좌표계에 있어야 합니다.

EPSG:3857 좌표계에서는 확대/축소 수준 0에서 전체 세계 지도가 20037508.3427892m 정사각형에 맞습니다. 도면이 이 좌표계로 변환되면 도면이 해당 세계 정사각형에 맞고 도면이 올바른 투영 세계 좌표에 위치하도록 변환됩니다.

예를 들어 도면이 EPSG:2056(LV95, 로컬 스위스 좌표계라고도 함)에서 생성된 경우 dwgmapconvert를 사용하여 다음과 같이 EPSG:3857로 변환할 수 있습니다.

dwgmapconvert -segment-length=0.5 -crs-in=EPSG:2056 -crs-out=EPSG:3857 -f -o drawing_epsg3857.dxf drawing_epsg2056.dxf

지도 투영은 일반적으로 비선형이므로 곡선과 더 긴 선은 작은 선 세그먼트로 분할되어야 하며, 그런 다음 비선형 방식으로 투영될 수 있습니다. -segment-length 스위치가 제공되면 dwgmapconvert는 주어진 세그먼트 길이를 사용하여 이 세그먼트화를 자동으로 수행합니다. 세그먼트 길이는 원본 도면의 도면 단위(여기서는 미터)로 지정됩니다.

-crs-in은 입력 좌표계를 지정하는 데 사용되며, 여기서는 EPSG:2056입니다.

-crs-out은 출력 좌표계를 지정하는 데 사용되며, 출력을 나중에 dwg2maptiles와 함께 사용하려면 EPSG:3857이어야 합니다.

dwgmapconvert는 입력으로 LV95를, 출력으로 WebMercator를 지원합니다.

다른 좌표계는 향후 릴리스에서 추가되거나 사용자가 추가할 수 있습니다.

새 좌표계에 대한 지원을 추가하려면 새 좌표계에서 WGS84(GPS 좌표와 같은 경도/위도)로 좌표를 변환하는 두 개의 방정식을 제공해야 합니다.

새 좌표계는 사용 중인 QCAD 설치의 “scripts” 폴더에 있는 CRS.json이라는 JSON 구성 파일에 추가할 수 있습니다. 다음은 LV95 좌표계를 구성하는 CRS.json 파일의 예입니다. dwgmapconvert 도구의 입력으로 LV95를 사용할 수 있으려면 x 및 y 좌표 변환 방정식이 포함된 “toWgs84” 섹션을 제공해야 합니다. 여기서는 두 방정식 모두에서 접근할 수 있도록 x 방정식에서 초기화해야 하는 두 개의 보조 변수 x_ 및 y_도 사용합니다.

다른 좌표계에서 LV95로의 변환을 허용하기 위해 “fromWgs84” 섹션도 제공할 수 있습니다. 두 섹션 모두 지원하려는 변환 방향에 따라 선택 사항입니다.

{
"CRS" : [
{
"id" : "EPSG:2056 CH1903+ / LV95",
"toWgs84" : {
"x": "x_ = (y-1200000)/1000000; y_ = (x-2600000)/1000000; (2.6779094 + 4.728982*y_ + 0.791484*y_*x_ + 0.1306*y_*x_*x_ - 0.0436*y_*y_*y_) * 100 / 3",
"y": "(16.9023892 + 3.238272*x_ - 0.270978*y_*y_ - 0.002528*x_*x_ - 0.0447*y_*y_*x_ - 0.0140*x_*x_*x_) * 100 / 36"
},
"aliases" : [ "LV95", "Swiss" ]
}
]
}

도면을 EPSG:3857 좌표로 변환한 후에는 dwg2maptiles를 사용하여 Leaflet의 오버레이 레이어에 대한 타일을 생성할 수 있습니다.

dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -b transparent -o path/to/output/directory drawing_epsg3857.dxf

dwg2maptiles가 자동 확대/축소를 수행하지 않고 파일에 존재하는 정확한 EPSG:3857 좌표로 지도 오버레이를 생성해야 한다는 것을 알리기 위해 -web-mercator 스위치를 dwg2maptiles에 전달해야 한다는 점에 유의하세요.

-skip-empty는 dwg2maptiles에 도면의 어떤 부분도 포함하지 않는 타일을 생성하지 않도록 지시합니다. 이 스위치가 없으면 확대/축소 수준당 2^zoomLevel 타일이 생성됩니다. 이는 확대/축소 수준 22의 경우 4’194’304 타일이 됩니다. 오버레이 도면은 세계 지도의 매우 작은 부분만 다룰 가능성이 매우 높으므로 오버레이 지도를 만들 때는 항상 이 스위치를 사용해야 합니다.

-b transparent는 배경을 투명하게 설정하여 지도를 기존 세계 지도(예: Google Map, mapbox 등)의 오버레이로 사용할 수 있습니다. 검은색 또는 흰색 선이 표시되는 색상을 제어하려면 배경을 각각 -b "#00ffffff"(흰색 투명 배경, 검은색 선) 또는 -b "#00000000"(검은색 투명 배경, 흰색 선)로 검은색 투명 또는 흰색 투명으로 설정할 수 있습니다. 이 경우 자동 색상 교정을 강제하기 위해 -c 스위치도 전달해야 합니다.

-hq-postfix=@2x 인수는 일반 256px 타일 외에 고해상도 타일(512px)을 생성하는 데 사용할 수 있습니다. “@2x” 값은 Leaflet에서도 고해상도 타일에 권장되며 널리 사용됩니다. 이 스위치를 사용하면 모든 저해상도 타일 “N.png”에 대해 고해상도 타일 “[email protected]”가 생성됩니다.

여러 프로세스(및 CPU 코어) 사용

섹션 제목: “여러 프로세스(및 CPU 코어) 사용”

지도 타일 생성은 확대/축소 수준, 도면 복잡성 및 기타 설정에 따라 CPU 집약적인 작업일 수 있습니다.

지도 타일을 더 빠르게 생성하려면 사용 가능한 여러 CPU 코어 간에 작업을 나눌 수 있습니다. 이 기능을 위해 dwg2maptiles는 필요한 타일의 일부만 생성하는 -s 스위치를 제공합니다. -s 스위치는 쉼표로 구분된 두 개의 매개변수를 기대합니다. 생성할 조각과 사용된 총 조각 수입니다. 예를 들어 -s 1,4는 총 4개 조각 중 첫 번째 조각을 생성합니다. 위 예의 모든 타일을 4개의 CPU 코어를 사용하여 생성하려면 다음을 실행할 수 있습니다.

dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 1,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 2,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 3,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 4,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
wait

물론 확대/축소 수준별로 작업을 나누거나 더 높은 확대/축소 수준에만 조각을 사용하고 모든 낮은(더 저렴한) 확대/축소 수준에는 단일 프로세스를 사용하는 등의 방법도 있습니다.

대화형 예제는 스위스 취리히 주의 지도에 두 개의 오버레이 레이어인 보호 산림 구역과 야생동물 통로를 제공합니다. 원본 데이터는 EPSG:2056(LV95) 좌표로 제공되었으며 dwgmapconvert를 사용하여 EPSG:3857로 변환되었습니다.

Leaflet으로 온라인 예제 보기