Tạo ô bản đồ
Giới thiệu
Section titled “Giới thiệu”QCAD đi kèm với hai công cụ dòng lệnh để tạo ô bản đồ để sử dụng với các trình hiển thị bản đồ trực tuyến như Leaflet. Leaflet là một thư viện JavaScript để làm việc với các bản đồ tương tác trong trình duyệt.
Trình bày bản vẽ trực tuyến
Section titled “Trình bày bản vẽ trực tuyến”Trường hợp sử dụng đơn giản nhất của bản đồ trực tuyến là cung cấp cho khách truy cập một trang web một chế độ xem bản vẽ tương tác, có thể thu phóng.
Đây là một ví dụ tạo các ô bản đồ cho bất kỳ tệp bản vẽ nào:
dwg2maptiles -z 0-6 -c -b white -hq-postfix=@2x -a -o path/to/output/directory drawing.dxfCông tắc -z chỉ định các mức thu phóng cần tạo, ở đây từ mức thu phóng 0 đến mức thu phóng 6. Điều này nghĩa là bắt đầu từ mức 0 (toàn bộ bản vẽ với thu phóng tự động), người dùng có thể phóng to 6 lần cho đến khi đạt giới hạn. Mỗi lần người dùng phóng to, bản vẽ được phóng đại với hệ số 2, vì vậy với 6 mức thu phóng, người dùng có thể phóng to với hệ số 2^6 (=64). Việc tạo nhiều mức thu phóng hơn đòi hỏi nhiều thời gian và dung lượng đĩa hơn. Mỗi mức thu phóng bổ sung thường đòi hỏi thời gian và dung lượng đĩa để tạo nhiều gấp bốn lần so với mức trước đó.
Các ô được tạo trong thư mục đầu ra đã cho (-o) với cấu trúc thư mục và tên tệp tiêu chuẩn cho ô bản đồ (z/x/y.png).
Trong ví dụ trên, chúng ta muốn bản vẽ được hiển thị trên nền trắng (-b white). Các đường màu trắng nên được sửa thành màu đen để đảm bảo rằng tất cả các đường đều hiển thị (-c).
Đối số -hq-postfix=@2x cho dwg2maptiles biết cần tạo các ô chất lượng cao (hq, độ phân giải cao, retina) ở 512x512px cùng với các ô độ phân giải tiêu chuẩn ở 256x256px.
Để tăng chất lượng hơn nữa, chúng ta cũng sử dụng công tắc -a để khử răng cưa (antialiasing).
Xem ví dụ với Leaflet trực tuyến
Tạo ô bản đồ được tham chiếu địa lý
Section titled “Tạo ô bản đồ được tham chiếu địa lý”dwg2maptiles cũng có thể được sử dụng để tạo các lớp phủ chính xác cho bản đồ thế giới. Đối với điều này, một bản vẽ thường phải được biến đổi từ hệ tọa độ cục bộ sang tọa độ Web Mercator như thường được sử dụng bởi các bản đồ trực tuyến.
QCAD Professional đi kèm với một công cụ dòng lệnh riêng để biến đổi bản vẽ từ hệ quy chiếu tọa độ (CRS) này sang hệ khác: dwgmapconvert.
dwgmapconvert thường được sử dụng để chuyển đổi tất cả tọa độ trong một tệp bản vẽ nhất định từ hệ tọa độ cục bộ đã biết sang hệ tọa độ EPSG:3857 (đôi khi được gọi là “Web Mercator”). Đây là hệ tọa độ được sử dụng bởi hầu hết các bản đồ trực tuyến, ví dụ Google Maps hoặc mapbox. Để sử dụng một bản vẽ làm đầu vào cho dwg2maptiles và tạo ra các ô bản đồ được tham chiếu địa lý, bản vẽ cần phải ở trong hệ tọa độ EPSG:3857.
Trong hệ tọa độ EPSG:3857, toàn bộ bản đồ thế giới vừa với một hình vuông 20037508.3427892m ở mức thu phóng 0. Nếu một bản vẽ được chuyển đổi sang hệ tọa độ này, bản vẽ được biến đổi theo cách mà nó vừa với hình vuông thế giới đó và bản vẽ nằm ở tọa độ thế giới được chiếu chính xác.
Ví dụ, nếu một bản vẽ được tạo trong EPSG:2056 (còn gọi là LV95, hệ tọa độ Thụy Sĩ cục bộ), nó có thể được biến đổi sang EPSG:3857 với dwgmapconvert như sau:
dwgmapconvert -segment-length=0.5 -crs-in=EPSG:2056 -crs-out=EPSG:3857 -f -o drawing_epsg3857.dxf drawing_epsg2056.dxfVì các phép chiếu bản đồ thường là phi tuyến, các đường cong và đường dài hơn cần được chia thành các đoạn đường nhỏ, sau đó có thể được chiếu theo cách phi tuyến. Nếu công tắc -segment-length được cung cấp, dwgmapconvert thực hiện việc phân đoạn này tự động, sử dụng độ dài đoạn đã cho. Độ dài đoạn được chỉ định theo đơn vị bản vẽ của bản vẽ gốc (ở đây là mét).
-crs-in được sử dụng để chỉ định hệ tọa độ đầu vào, ở đây là EPSG:2056.
-crs-out được sử dụng để chỉ định hệ tọa độ đầu ra, phải là EPSG:3857 nếu đầu ra sau này sẽ được sử dụng với dwg2maptiles.
dwgmapconvert đi kèm với hỗ trợ cho LV95 làm đầu vào và WebMercator làm đầu ra.
Các hệ tọa độ khác sẽ được thêm vào trong các bản phát hành tương lai hoặc có thể được người dùng thêm vào.
Để thêm hỗ trợ cho một hệ tọa độ mới, phải cung cấp hai phương trình để chuyển đổi tọa độ từ hệ tọa độ mới sang WGS84 (Kinh độ/Vĩ độ, như tọa độ GPS).
Các hệ tọa độ mới có thể được thêm vào một tệp cấu hình JSON có tên CRS.json, nằm trong thư mục “scripts” của bản cài đặt QCAD được sử dụng. Đây là một tệp CRS.json ví dụ cấu hình hệ tọa độ LV95. Để có thể sử dụng LV95 làm đầu vào cho công cụ dwgmapconvert, chúng ta cần cung cấp phần “toWgs84” với các phương trình chuyển đổi tọa độ x và y. Ở đây, chúng ta cũng sử dụng hai biến phụ, x_ và y_, phải được khởi tạo trong phương trình x để có thể truy cập được trong cả hai phương trình.
Chúng ta cũng có thể cung cấp phần “fromWgs84” để cho phép chuyển đổi từ các hệ tọa độ khác sang LV95. Cả hai phần đều là tùy chọn, tùy thuộc vào hướng chuyển đổi mà bạn muốn hỗ trợ.
{ "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" ] } ]}Tạo ô bản đồ
Section titled “Tạo ô bản đồ”Sau khi đã chuyển đổi bản vẽ sang tọa độ EPSG:3857, chúng ta có thể sử dụng dwg2maptiles để tạo các ô cho lớp phủ trong Leaflet:
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -b transparent -o path/to/output/directory drawing_epsg3857.dxfLưu ý rằng chúng ta cần truyền công tắc -web-mercator cho dwg2maptiles để cho nó biết rằng nó không nên thực hiện thu phóng tự động mà tạo một lớp phủ bản đồ ở tọa độ EPSG:3857 chính xác như có trong tệp.
-skip-empty cho dwg2maptiles biết không tạo các ô không chứa bất kỳ phần nào của bản vẽ. Không có công tắc này, 2^zoomLevel ô sẽ được tạo cho mỗi mức thu phóng. Đó sẽ là 4’194’304 ô cho mức thu phóng 22. Vì một bản vẽ lớp phủ rất có thể chỉ bao phủ một phần rất nhỏ của bản đồ thế giới, công tắc này nên luôn được sử dụng khi tạo bản đồ lớp phủ.
-b transparent đặt nền thành trong suốt, để bản đồ có thể được sử dụng làm lớp phủ cho một bản đồ thế giới hiện có (ví dụ Google Map, mapbox, v.v.). Để kiểm soát màu mà các đường màu đen hoặc trắng được hiển thị, nền có thể được đặt thành đen trong suốt hoặc trắng trong suốt với -b "#00ffffff" (nền trắng trong suốt, đường màu đen) hoặc -b "#00000000" (nền đen trong suốt, đường màu trắng) tương ứng. Trong trường hợp này, hãy đảm bảo cũng truyền công tắc -c để buộc hiệu chỉnh màu tự động.
Đối số -hq-postfix=@2x có thể được sử dụng để tạo các ô độ phân giải cao (512px) ngoài các ô 256px thông thường. Giá trị “@2x” được khuyến nghị và sử dụng rộng rãi cho các ô độ phân giải cao, cũng trong Leaflet. Với công tắc này, đối với mỗi ô độ phân giải thấp “N.png”, một ô độ phân giải cao “[email protected]” được tạo.
Sử dụng nhiều tiến trình (và lõi CPU)
Section titled “Sử dụng nhiều tiến trình (và lõi CPU)”Việc tạo ô bản đồ có thể là một tác vụ chuyên sâu về CPU, tùy thuộc vào các mức thu phóng, độ phức tạp của bản vẽ và các cài đặt khác.
Để tạo ô bản đồ nhanh hơn, bạn có thể chia công việc giữa nhiều lõi CPU khả dụng. Đối với tính năng này, dwg2maptiles cung cấp công tắc -s để chỉ tạo một phần của các ô cần thiết. Công tắc -s yêu cầu hai tham số được phân tách bằng dấu phẩy: phần cần tạo và tổng số phần được sử dụng. Ví dụ -s 1,4 sẽ tạo phần đầu tiên trong tổng số bốn phần. Để tạo tất cả các ô của ví dụ trên bằng bốn lõi CPU, bạn có thể chạy:
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 &waitTất nhiên bạn cũng có thể chia tác vụ theo các mức thu phóng hoặc chỉ sử dụng các phần cho các mức thu phóng cao hơn và một tiến trình duy nhất cho tất cả các mức thu phóng thấp hơn (rẻ hơn), v.v.
Một ví dụ tương tác cung cấp hai lớp phủ cho bản đồ bang Zurich của Thụy Sĩ: khu rừng được bảo vệ và các hành lang động vật hoang dã. Dữ liệu gốc ở tọa độ EPSG:2056 (LV95) và được biến đổi sang EPSG:3857 bằng dwgmapconvert.