Generere kortfliser
Introduktion
Sektion kaldt “Introduktion”QCAD leveres med to kommandolinjeværktøjer til at oprette kortfliser til brug med online kortvisninger som Leaflet. Leaflet er et JavaScript-bibliotek til at arbejde med interaktive kort i en browser.
Præsentere en tegning online
Sektion kaldt “Præsentere en tegning online”Den enkleste anvendelse af et online kort er at give besøgende på et websted en interaktiv, zoombar visning af en tegning.
Her er et eksempel, der genererer kortfliserne for en given tegningsfil:
dwg2maptiles -z 0-6 -c -b white -hq-postfix=@2x -a -o path/to/output/directory drawing.dxfKontakten -z angiver de zoomniveauer, der skal genereres, her fra zoomniveau 0 til zoomniveau 6. Dette betyder, at brugeren fra niveau 0 (hele tegningen ved autozoom) kan zoome ind 6 gange, indtil grænsen er nået. Hver gang brugeren zoomer ind, forstørres tegningen med en faktor på 2, så med 6 zoomniveauer kan brugeren zoome ind med en faktor på 2^6 (=64). At generere flere zoomniveauer kræver mere tid og diskplads. Hvert ekstra zoomniveau kræver typisk fire gange mere tid og diskplads at generere end det foregående.
Fliserne genereres i den angivne outputmappe (-o) med standardmappestrukturen og filnavnene til kortfliser (z/x/y.png).
I eksemplet ovenfor ønsker vi, at tegningen skal gengives på en hvid baggrund (-b white). Hvide linjer bør korrigeres til sorte for at sikre, at alle linjer er synlige (-c).
Argumentet -hq-postfix=@2x fortæller dwg2maptiles at generere fliser af høj kvalitet (hq, høj opløsning, retina) på 512x512px sammen med fliserne i standardopløsning på 256x256px.
For yderligere at øge kvaliteten bruger vi også kontakten -a til kantudjævning (antialiasing).
Se eksempel med Leaflet online
Generere georefererede kortfliser
Sektion kaldt “Generere georefererede kortfliser”dwg2maptiles kan også bruges til at generere præcise overlejringer til verdenskort. Til dette skal en tegning normalt transformeres fra et lokalt koordinatsystem til Web Mercator-koordinater, som ofte bruges af online kort.
QCAD Professional leveres med et separat kommandolinjeværktøj til at transformere tegninger fra ét koordinatreferencesystem (CRS) til et andet: dwgmapconvert.
dwgmapconvert bruges typisk til at konvertere alle koordinater i en given tegningsfil fra et kendt, lokalt koordinatsystem til koordinatsystemet EPSG:3857 (undertiden kaldet “Web Mercator”). Dette er det koordinatsystem, der bruges af de fleste online kort, for eksempel Google Maps eller mapbox. For at bruge en tegning som input til dwg2maptiles og producere georefererede kortfliser skal tegningen være i koordinatsystemet EPSG:3857.
I koordinatsystemet EPSG:3857 passer hele verdenskortet ind i et kvadrat på 20037508.3427892m ved zoomniveau 0. Hvis en tegning konverteres til dette koordinatsystem, transformeres tegningen på en sådan måde, at den passer ind i dette verdenskvadrat, og at tegningen er placeret på de korrekte, projicerede verdenskoordinater.
For eksempel, hvis en tegning blev oprettet i EPSG:2056 (også LV95, det lokale schweiziske koordinatsystem), 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.dxfDa kortprojektioner normalt er ikke-lineære, skal kurver og længere linjer opdeles i små linjesegmenter, som derefter kan projiceres på en ikke-lineær måde. Hvis kontakten -segment-length angives, udfører dwgmapconvert denne segmentering automatisk ved hjælp af den angivne segmentlængde. Segmentlængden angives i tegneenheder af den oprindelige tegning (her meter).
-crs-in bruges til at angive inputkoordinatsystemet, her EPSG:2056.
-crs-out bruges til at angive outputkoordinatsystemet, som skal være EPSG:3857, hvis outputtet senere skal bruges med dwg2maptiles.
dwgmapconvert leveres med understøttelse af LV95 som input og WebMercator som output.
Andre koordinatsystemer vil blive tilføjet i fremtidige udgivelser eller kan tilføjes af brugeren.
For at tilføje understøttelse af et nyt koordinatsystem skal der angives to ligninger til at konvertere koordinaterne fra det nye koordinatsystem til WGS84 (længdegrad/breddegrad, som GPS-koordinater).
Nye koordinatsystemer kan tilføjes til en JSON-konfigurationsfil kaldet CRS.json, der er placeret i “scripts”-mappen i den QCAD-installation, der bruges. Her er et eksempel på en CRS.json-fil, der konfigurerer koordinatsystemet LV95. For at kunne bruge LV95 som input til dwgmapconvert-værktøjet skal vi angive sektionen “toWgs84” med ligninger til konvertering af x- og y-koordinaterne. Her bruger vi også to hjælpevariabler, x_ og y_, som skal initialiseres i x-ligningen for at være tilgængelige i begge ligninger.
Vi kunne også angive en “fromWgs84”-sektion for at tillade konvertering fra andre koordinatsystemer til LV95. Begge sektioner er valgfri, afhængigt af den konverteringsretning, du ønsker at understø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 kortfliser
Sektion kaldt “Generere kortfliser”Når vi har konverteret tegningen til EPSG:3857-koordinater, kan vi bruge dwg2maptiles til at generere fliserne til overlejringslaget i Leaflet:
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -b transparent -o path/to/output/directory drawing_epsg3857.dxfBemærk, at vi skal videregive kontakten -web-mercator til dwg2maptiles for at lade den vide, at den ikke skal udføre en autozoom, men generere en kortoverlejring i præcise EPSG:3857-koordinater, som de er til stede i filen.
-skip-empty fortæller dwg2maptiles ikke at generere fliser, der ikke indeholder nogen del af tegningen. Uden denne kontakt vil der blive genereret 2^zoomLevel fliser pr. zoomniveau. Det ville være 4’194’304 fliser for zoomniveau 22. Da en overlejringstegning meget sandsynligt kun dækker en meget lille del af verdenskortet, bør denne kontakt altid bruges ved oprettelse af overlejringskort.
-b transparent indstiller baggrunden til gennemsigtig, så kortet kan bruges som en overlejring for et eksisterende verdenskort (f.eks. Google Map, mapbox osv.). For at styre farven, hvori sorte eller hvide linjer vises, kan baggrunden indstilles til sort gennemsigtig eller hvid gennemsigtig med henholdsvis -b "#00ffffff" (hvid gennemsigtig baggrund, sorte linjer) eller -b "#00000000" (sort gennemsigtig baggrund, hvide linjer). Sørg for også at videregive kontakten -c i dette tilfælde for at gennemtvinge automatisk farvekorrektion.
Argumentet -hq-postfix=@2x kan bruges til at generere fliser i høj opløsning (512px) ud over de normale 256px-fliser. Værdien “@2x” anbefales og bruges bredt til fliser i høj opløsning, også i Leaflet. Med denne kontakt oprettes der for hver flise i lav opløsning “N.png” en flise i høj opløsning “[email protected]”.
Brug af flere processer (og CPU-kerner)
Sektion kaldt “Brug af flere processer (og CPU-kerner)”Generering af kortfliser kan være en CPU-intensiv opgave, afhængigt af zoomniveauer, tegningskompleksitet og andre indstillinger.
For at generere kortfliser hurtigere kan du opdele jobbet mellem flere tilgængelige CPU-kerner. Til denne funktion tilbyder dwg2maptiles kontakten -s til kun at generere en del af de nødvendige fliser. Kontakten -s forventer to kommaseparerede parametre: den del, der skal genereres, og det samlede antal anvendte dele. For eksempel ville -s 1,4 generere den første del ud af fire dele i alt. For at generere alle fliser i eksemplet ovenfor ved hjælp af fire CPU-kerner kunne du kø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 kunne du også opdele opgaver efter zoomniveauer eller bruge dele kun til højere zoomniveauer og en enkelt proces til alle de lavere (billigere) zoomniveauer osv.
Eksempel
Sektion kaldt “Eksempel”Et interaktivt eksempel giver to overlejringslag til kortet over den schweiziske kanton Zürich: det beskyttede skovområde og vildtkorridorerne. De oprindelige data kom i EPSG:2056-koordinater (LV95) og blev transformeret til EPSG:3857 ved hjælp af dwgmapconvert.