Generere kartefliser
Innledning
Section titled “Innledning”QCAD leveres med to kommandolinjeverktøy for å opprette kartefliser for bruk med nettbaserte kartvisninger som Leaflet. Leaflet er et JavaScript-bibliotek for å arbeide med interaktive kart i en nettleser.
Presentere en tegning på nettet
Section titled “Presentere en tegning på nettet”Det enkleste bruksområdet for et nettkart er å gi besøkende på et nettsted en interaktiv, zoombar visning av en tegning.
Her er et eksempel som genererer kartefliser for en gitt tegningsfil:
dwg2maptiles -z 0-6 -c -b white -hq-postfix=@2x -a -o path/to/output/directory drawing.dxfBryteren -z angir zoomnivåene som skal genereres, her fra zoomnivå 0 til zoomnivå 6. Dette betyr at fra nivå 0 (hele tegningen med autozoom) kan brukeren zoome inn 6 ganger til grensen er nådd. Hver gang brukeren zoomer inn, forstørres tegningen med en faktor på 2, så med 6 zoomnivåer kan brukeren zoome inn med en faktor på 2^6 (=64). Å generere flere zoomnivåer krever mer tid og diskplass. Hvert ekstra zoomnivå krever vanligvis fire ganger mer tid og diskplass å generere enn det forrige.
Flisene genereres i den angitte utdatamappen (-o) med standard mappestruktur og filnavn for kartefliser (z/x/y.png).
I eksempelet ovenfor ønsker vi at tegningen skal gjengis på en hvit bakgrunn (-b white). Hvite linjer bør korrigeres til svarte for å sikre at alle linjer er synlige (-c).
Argumentet -hq-postfix=@2x forteller dwg2maptiles å generere fliser av høy kvalitet (hq, høyoppløselig, retina) på 512x512px sammen med flisene i standardoppløsning på 256x256px.
For å øke kvaliteten ytterligere bruker vi også bryteren -a for kantutjevning (antialiasing).
Se eksempel med Leaflet online
Generere georefererte kartefliser
Section titled “Generere georefererte kartefliser”dwg2maptiles kan også brukes til å generere nøyaktige overlegg for verdenskart. For dette må en tegning vanligvis transformeres fra et lokalt koordinatsystem til Web Mercator-koordinater, slik det vanligvis brukes av nettkart.
QCAD Professional leveres med et separat kommandolinjeverktøy for å transformere tegninger fra ett koordinatreferansesystem (CRS) til et annet: dwgmapconvert.
dwgmapconvert brukes vanligvis til å konvertere alle koordinater i en gitt tegningsfil fra et kjent, lokalt koordinatsystem til koordinatsystemet EPSG:3857 (noen ganger kalt “Web Mercator”). Dette er koordinatsystemet som brukes av de fleste nettkart, for eksempel Google Maps eller mapbox. For å bruke en tegning som inndata til dwg2maptiles og produsere georefererte kartefliser, må tegningen være i koordinatsystemet EPSG:3857.
I koordinatsystemet EPSG:3857 passer hele verdenskartet inn i et 20037508.3427892m kvadrat på zoomnivå 0. Hvis en tegning konverteres til dette koordinatsystemet, transformeres tegningen på en slik måte at den passer inn i det verdenskvadratet, og at tegningen er plassert på de riktige, projiserte verdenskoordinatene.
For eksempel, hvis en tegning ble opprettet i EPSG:2056 (også LV95, det lokale sveitsiske koordinatsystemet), kan den transformeres til EPSG:3857 med dwgmapconvert som følger:
dwgmapconvert -segment-length=0.5 -crs-in=EPSG:2056 -crs-out=EPSG:3857 -f -o drawing_epsg3857.dxf drawing_epsg2056.dxfSiden kartprojeksjoner vanligvis er ikke-lineære, må kurver og lengre linjer deles opp i små linjesegmenter som deretter kan projiseres på en ikke-lineær måte. Hvis bryteren -segment-length angis, utfører dwgmapconvert denne segmenteringen automatisk ved hjelp av den angitte segmentlengden. Segmentlengden angis i tegneenheter for den opprinnelige tegningen (her meter).
-crs-in brukes til å angi inndata-koordinatsystemet, her EPSG:2056.
-crs-out brukes til å angi utdata-koordinatsystemet, som må være EPSG:3857 hvis utdataene senere skal brukes med dwg2maptiles.
dwgmapconvert leveres med støtte for LV95 som inndata og WebMercator som utdata.
Andre koordinatsystemer vil bli lagt til i fremtidige utgivelser eller kan legges til av brukeren.
For å legge til støtte for et nytt koordinatsystem må det angis to ligninger for å konvertere koordinatene fra det nye koordinatsystemet til WGS84 (lengdegrad/breddegrad, som GPS-koordinater).
Nye koordinatsystemer kan legges til i en JSON-konfigurasjonsfil kalt CRS.json, som ligger i “scripts”-mappen til QCAD-installasjonen som brukes. Her er et eksempel på en CRS.json-fil som konfigurerer koordinatsystemet LV95. For å kunne bruke LV95 som inndata til dwgmapconvert-verktøyet må vi angi “toWgs84”-seksjonen med ligninger for konvertering av x- og y-koordinatene. Her bruker vi også to hjelpevariabler, x_ og y_, som må initialiseres i x-ligningen for å være tilgjengelige i begge ligningene.
Vi kunne også angi en “fromWgs84”-seksjon for å tillate konvertering fra andre koordinatsystemer til LV95. Begge seksjonene er valgfrie, avhengig av konverteringsretningen du ønsker å støtte.
{ "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" ] } ]}Generere kartefliser
Section titled “Generere kartefliser”Når vi har konvertert tegningen til EPSG:3857-koordinater, kan vi bruke dwg2maptiles til å generere flisene for overleggslaget i Leaflet:
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -b transparent -o path/to/output/directory drawing_epsg3857.dxfMerk at vi må sende bryteren -web-mercator til dwg2maptiles for å la den vite at den ikke skal utføre en autozoom, men generere et kartoverlegg i nøyaktige EPSG:3857-koordinater slik de er til stede i filen.
-skip-empty forteller dwg2maptiles å ikke generere fliser som ikke inneholder noen del av tegningen. Uten denne bryteren vil det bli generert 2^zoomLevel fliser per zoomnivå. Det ville være 4’194’304 fliser for zoomnivå 22. Siden en overleggstegning svært sannsynlig bare dekker en veldig liten del av verdenskartet, bør denne bryteren alltid brukes når man oppretter overleggskart.
-b transparent setter bakgrunnen til gjennomsiktig, slik at kartet kan brukes som et overlegg for et eksisterende verdenskart (f.eks. Google Map, mapbox osv.). For å kontrollere fargen som svarte eller hvite linjer vises i, kan bakgrunnen settes til svart gjennomsiktig eller hvit gjennomsiktig med henholdsvis -b "#00ffffff" (hvit gjennomsiktig bakgrunn, svarte linjer) eller -b "#00000000" (svart gjennomsiktig bakgrunn, hvite linjer). Sørg for også å sende bryteren -c i dette tilfellet for å tvinge automatisk fargekorrigering.
Argumentet -hq-postfix=@2x kan brukes til å generere høyoppløselige fliser (512px) i tillegg til de normale 256px-flisene. Verdien “@2x” anbefales og brukes mye for høyoppløselige fliser, også i Leaflet. Med denne bryteren opprettes det for hver lavoppløselig flis “N.png” en høyoppløselig flis “[email protected]”.
Bruke flere prosesser (og CPU-kjerner)
Section titled “Bruke flere prosesser (og CPU-kjerner)”Å generere kartefliser kan være en CPU-intensiv oppgave, avhengig av zoomnivåer, tegningskompleksitet og andre innstillinger.
For å generere kartefliser raskere kan du dele jobben mellom flere tilgjengelige CPU-kjerner. For denne funksjonen tilbyr dwg2maptiles bryteren -s for å generere bare en del av de nødvendige flisene. Bryteren -s forventer to kommaseparerte parametere: delen som skal genereres, og det totale antallet deler som brukes. For eksempel ville -s 1,4 generere den første delen av fire deler totalt. For å generere alle flisene i eksempelet ovenfor ved hjelp av fire CPU-kjerner kan du kjøre:
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 &waitSelvfølgelig kan du også dele opp oppgaver etter zoomnivåer eller bruke deler kun for høyere zoomnivåer og en enkelt prosess for alle de lavere (billigere) zoomnivåene osv.
Eksempel
Section titled “Eksempel”Et interaktivt eksempel gir to overleggslag til kartet over den sveitsiske kantonen Zürich: det vernede skogområdet og viltkorridorene. De opprinnelige dataene kom i EPSG:2056-koordinater (LV95) og ble transformert til EPSG:3857 ved hjelp av dwgmapconvert.