Skip to content

Generarea dalelor de hartă

QCAD vine cu două instrumente de linie de comandă pentru crearea dalelor de hartă pentru utilizare cu afișaje de hărți online precum Leaflet. Leaflet este o bibliotecă JavaScript pentru a lucra cu hărți interactive într-un browser.

Cel mai simplu caz de utilizare a unei hărți online este să ofere vizitatorilor unui site web o vizualizare interactivă, cu posibilitate de zoom, a unui desen.

Iată un exemplu care generează dalele de hartă pentru orice fișier de desen dat:

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

Comutatorul -z specifică nivelurile de zoom care trebuie generate, aici de la nivelul de zoom 0 la nivelul de zoom 6. Aceasta înseamnă că, începând de la nivelul 0 (întregul desen cu zoom automat), utilizatorul poate mări de 6 ori până când se atinge limita. De fiecare dată când utilizatorul mărește, desenul este mărit cu un factor de 2, așa că, cu 6 niveluri de zoom, utilizatorul poate mări cu un factor de 2^6 (=64). Generarea mai multor niveluri de zoom necesită mai mult timp și spațiu pe disc. Fiecare nivel de zoom suplimentar necesită de obicei de patru ori mai mult timp și spațiu pe disc pentru a fi generat decât cel anterior.

Dalele sunt generate în directorul de ieșire dat (-o) cu structura standard de directoare și numele de fișiere pentru dalele de hartă (z/x/y.png).

În exemplul de mai sus, dorim ca desenul să fie redat pe un fundal alb (-b white). Liniile albe ar trebui corectate în negru pentru a se asigura că toate liniile sunt vizibile (-c).

Argumentul -hq-postfix=@2x îi spune lui dwg2maptiles să genereze dale de înaltă calitate (hq, rezoluție înaltă, retina) la 512x512px împreună cu dalele de rezoluție standard la 256x256px.

Pentru a crește și mai mult calitatea, folosim de asemenea comutatorul -a pentru antialiasing.

Vezi exemplul cu Leaflet online

Generarea dalelor de hartă georeferențiate

Section titled “Generarea dalelor de hartă georeferențiate”

dwg2maptiles poate fi folosit și pentru a genera suprapuneri exacte pentru hărțile lumii. Pentru aceasta, un desen trebuie de obicei transformat dintr-un sistem de coordonate local în coordonate Web Mercator, așa cum sunt utilizate în mod obișnuit de hărțile online.

QCAD Professional vine cu un instrument separat de linie de comandă pentru transformarea desenelor dintr-un sistem de referință al coordonatelor (CRS) în altul: dwgmapconvert.

dwgmapconvert este utilizat de obicei pentru a converti toate coordonatele dintr-un fișier de desen dat dintr-un sistem de coordonate local cunoscut în sistemul de coordonate EPSG:3857 (uneori numit „Web Mercator”). Acesta este sistemul de coordonate utilizat de majoritatea hărților online, de exemplu Google Maps sau mapbox. Pentru a folosi un desen ca intrare pentru dwg2maptiles și pentru a produce dale de hartă georeferențiate, desenul trebuie să fie în sistemul de coordonate EPSG:3857.

În sistemul de coordonate EPSG:3857, întreaga hartă a lumii se încadrează într-un pătrat de 20037508.3427892m la nivelul de zoom 0. Dacă un desen este convertit în acest sistem de coordonate, desenul este transformat în așa fel încât să se încadreze în acel pătrat al lumii și ca desenul să fie situat la coordonatele mondiale corecte, proiectate.

De exemplu, dacă un desen a fost creat în EPSG:2056 (de asemenea LV95, sistemul de coordonate local elvețian), acesta poate fi transformat în EPSG:3857 cu dwgmapconvert după cum urmează:

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

Deoarece proiecțiile cartografice sunt de obicei neliniare, curbele și liniile mai lungi trebuie împărțite în segmente mici de linie care pot fi apoi proiectate într-un mod neliniar. Dacă este furnizat comutatorul -segment-length, dwgmapconvert efectuează această segmentare automat, folosind lungimea de segment dată. Lungimea segmentului este specificată în unitățile de desen ale desenului original (aici metri).

-crs-in este utilizat pentru a specifica sistemul de coordonate de intrare, aici EPSG:2056.

-crs-out este utilizat pentru a specifica sistemul de coordonate de ieșire, care trebuie să fie EPSG:3857 dacă ieșirea urmează să fie utilizată ulterior cu dwg2maptiles.

dwgmapconvert vine cu suport pentru LV95 ca intrare și WebMercator ca ieșire.

Alte sisteme de coordonate vor fi adăugate în versiunile viitoare sau pot fi adăugate de utilizator.

Pentru a adăuga suport pentru un nou sistem de coordonate, trebuie furnizate două ecuații pentru a converti coordonatele din noul sistem de coordonate în WGS84 (longitudine/latitudine, precum coordonatele GPS).

Sisteme noi de coordonate pot fi adăugate într-un fișier de configurare JSON numit CRS.json, situat în folderul „scripts” al instalării QCAD utilizate. Iată un exemplu de fișier CRS.json care configurează sistemul de coordonate LV95. Pentru a putea folosi LV95 ca intrare pentru instrumentul dwgmapconvert, trebuie să furnizăm secțiunea „toWgs84” cu ecuații pentru conversia coordonatelor x și y. Aici, folosim de asemenea două variabile auxiliare, x_ și y_, care trebuie inițializate în ecuația x pentru a fi accesibile în ambele ecuații.

Am putea furniza de asemenea o secțiune „fromWgs84” pentru a permite conversia din alte sisteme de coordonate în LV95. Ambele secțiuni sunt opționale, în funcție de direcția de conversie pe care doriți să o susțineți.

{
"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" ]
}
]
}

Odată ce am convertit desenul în coordonate EPSG:3857, putem folosi dwg2maptiles pentru a genera dalele pentru stratul de suprapunere în Leaflet:

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

Rețineți că trebuie să transmitem comutatorul -web-mercator lui dwg2maptiles pentru a-i comunica că nu ar trebui să efectueze un zoom automat, ci să genereze o suprapunere de hartă în coordonate exacte EPSG:3857, așa cum sunt prezente în fișier.

-skip-empty îi spune lui dwg2maptiles să nu genereze dale care nu conțin nicio parte a desenului. Fără acest comutator, vor fi generate 2^zoomLevel dale per nivel de zoom. Acestea ar fi 4’194’304 dale pentru nivelul de zoom 22. Deoarece un desen de suprapunere acoperă foarte probabil doar o parte foarte mică a hărții lumii, acest comutator ar trebui folosit întotdeauna la crearea hărților de suprapunere.

-b transparent setează fundalul ca transparent, astfel încât harta poate fi utilizată ca suprapunere pentru o hartă a lumii existentă (de ex. Google Map, mapbox etc.). Pentru a controla culoarea în care sunt afișate liniile negre sau albe, fundalul poate fi setat la negru transparent sau alb transparent cu -b "#00ffffff" (fundal alb transparent, linii negre) sau respectiv -b "#00000000" (fundal negru transparent, linii albe). Asigurați-vă că transmiteți de asemenea comutatorul -c în acest caz pentru a forța corecția automată a culorilor.

Argumentul -hq-postfix=@2x poate fi folosit pentru a genera dale de rezoluție înaltă (512px) în plus față de dalele normale de 256px. Valoarea „@2x” este recomandată și utilizată pe scară largă pentru dalele de rezoluție înaltă, de asemenea în Leaflet. Cu acest comutator, pentru fiecare dală de rezoluție joasă „N.png” se creează o dală de rezoluție înaltă „[email protected]”.

Utilizarea mai multor procese (și nuclee CPU)

Section titled “Utilizarea mai multor procese (și nuclee CPU)”

Generarea dalelor de hartă poate fi o sarcină intensivă pentru CPU, în funcție de nivelurile de zoom, complexitatea desenului și alte setări.

Pentru a genera dalele de hartă mai rapid, puteți împărți sarcina între mai multe nuclee CPU disponibile. Pentru această funcție, dwg2maptiles oferă comutatorul -s pentru a genera doar o parte din dalele necesare. Comutatorul -s așteaptă doi parametri separați prin virgulă: partea de generat și numărul total de părți utilizate. De exemplu, -s 1,4 ar genera prima parte din patru părți în total. Pentru a genera toate dalele din exemplul de mai sus folosind patru nuclee CPU, ați putea rula:

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

Desigur, ați putea de asemenea împărți sarcinile pe niveluri de zoom sau folosi părți doar pentru nivelurile de zoom mai mari și un singur proces pentru toate nivelurile de zoom mai mici (mai ieftine) etc.

Un exemplu interactiv oferă două straturi de suprapunere hărții cantonului elvețian Zürich: zona forestieră protejată și coridoarele faunei sălbatice. Datele originale au venit în coordonate EPSG:2056 (LV95) și au fost transformate în EPSG:3857 folosind dwgmapconvert.

Vezi exemplul cu Leaflet online