Skip to content

Karttaruutujen luominen

QCADin mukana toimitetaan kaksi komentorivityökalua karttaruutujen luomiseen käytettäväksi verkkokartoissa kuten Leaflet. Leaflet on JavaScript-kirjasto interaktiivisten karttojen käsittelyyn selaimessa.

Yksinkertaisin käyttötapaus verkkokartalle on tarjota verkkosivuston kävijöille interaktiivinen, zoomattava näkymä piirustuksesta.

Tässä esimerkki, joka luo karttaruudut mille tahansa piirustustiedostolle:

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

Valitsin -z määrittää luotavat zoomaustasot, tässä zoomaustasosta 0 zoomaustasoon 6. Tämä tarkoittaa, että tasosta 0 (koko piirustus tai automaattinen zoomaus) alkaen käyttäjä voi zoomata sisään kuusi kertaa, kunnes raja saavutetaan. Aina kun käyttäjä zoomaa sisään, piirustus suurenee kertoimella 2, joten kuudella zoomaustasolla käyttäjä voi zoomata sisään kertoimella 2^6 (=64). Useampien zoomaustasojen luominen vaatii enemmän aikaa ja levytilaa. Jokainen ylimääräinen zoomaustaso vaatii tyypillisesti neljä kertaa enemmän aikaa ja levytilaa kuin edellinen.

Ruudut luodaan annettuun tulostushakemistoon (-o) käyttäen karttaruutujen vakiohakemistorakennetta ja tiedostonimiä (z/x/y.png).

Yllä olevassa esimerkissä haluamme, että piirustus renderöidään valkoiselle taustalle (-b white). Valkoiset viivat pitäisi korjata mustiksi, jotta kaikki viivat varmasti näkyvät (-c).

Argumentti -hq-postfix=@2x kertoo dwg2maptiles-työkalulle, että sen tulee luoda korkealaatuiset (hq, korkearesoluutioiset, retina) ruudut kooltaan 512x512px vakioresoluution 256x256px ruutujen lisäksi.

Laadun parantamiseksi entisestään käytämme myös valitsinta -a reunanpehmennystä varten.

Katso esimerkki verkossa Leafletillä

dwg2maptiles-työkalua voidaan käyttää myös tarkkojen peittokerrosten luomiseen maailmankartoille. Tätä varten piirustus on yleensä muunnettava paikallisesta koordinaatistosta Web Mercator -koordinaatteihin, joita verkkokartat yleisesti käyttävät.

QCAD Professionalin mukana toimitetaan erillinen komentorivityökalu piirustusten muuntamiseen yhdestä koordinaattijärjestelmästä (CRS) toiseen: dwgmapconvert.

dwgmapconvert-työkalua käytetään tyypillisesti muuntamaan kaikki annetun piirustustiedoston koordinaatit tunnetusta, paikallisesta koordinaatistosta EPSG:3857-koordinaatistoon (jota kutsutaan joskus nimellä “Web Mercator”). Tämä on useimpien verkkokarttojen käyttämä koordinaatisto, esimerkiksi Google Maps tai Mapbox. Jotta piirustusta voidaan käyttää dwg2maptiles-työkalun syötteenä ja tuottaa georeferoituja karttaruutuja, piirustuksen on oltava EPSG:3857-koordinaatistossa.

EPSG:3857-koordinaatistossa koko maailmankartta mahtuu zoomaustasolla 0 neliöön, jonka sivu on 20037508.3427892m. Kun piirustus muunnetaan tähän koordinaatistoon, piirustus transformoidaan siten, että se mahtuu tähän maailmanneliöön ja että piirustus sijaitsee oikeissa, projisoiduissa maailmankoordinaateissa.

Jos piirustus on esimerkiksi luotu EPSG:2056-koordinaatistossa (myös LV95, paikallinen sveitsiläinen koordinaatisto), se voidaan transformoida EPSG:3857-koordinaatistoon dwgmapconvert-työkalulla seuraavasti:

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

Koska karttaprojektiot ovat yleensä epälineaarisia, käyrät ja pidemmät viivat on jaettava pieniin viivasegmentteihin, jotka voidaan sitten projisoida epälineaarisella tavalla. Jos valitsin -segment-length on annettu, dwgmapconvert tekee tämän segmentoinnin automaattisesti käyttäen annettua segmentin pituutta. Segmentin pituus määritetään alkuperäisen piirustuksen piirustusyksiköissä (tässä metreissä).

-crs-in -valitsinta käytetään syötekoordinaatiston määrittämiseen, tässä EPSG:2056.

-crs-out -valitsinta käytetään tuloskoordinaatiston määrittämiseen, jonka on oltava EPSG:3857, jos tulostetta halutaan myöhemmin käyttää dwg2maptiles-työkalun kanssa.

dwgmapconvert tukee LV95:tä syötteenä ja WebMercatoria tulosteena.

Muita koordinaatistoja lisätään tulevissa julkaisuissa, tai käyttäjä voi lisätä niitä itse.

Uuden koordinaatiston tuen lisäämiseksi on annettava kaksi yhtälöä koordinaattien muuntamiseksi uudesta koordinaatistosta WGS84:ään (pituus-/leveysaste, kuten GPS-koordinaatit).

Uusia koordinaatistoja voidaan lisätä CRS.json-nimiseen JSON-määritystiedostoon, joka sijaitsee käytettävän QCAD-asennuksen “scripts”-kansiossa. Tässä esimerkki CRS.json-tiedostosta, joka määrittää LV95-koordinaatiston. Jotta LV95:tä voidaan käyttää dwgmapconvert-työkalun syötteenä, meidän on annettava “toWgs84”-osio yhtälöineen x- ja y-koordinaattien muuntamista varten. Käytämme tässä myös kahta apumuuttujaa, x_ ja y_, jotka on alustettava x-yhtälössä, jotta ne ovat käytettävissä molemmissa yhtälöissä.

Voisimme myös antaa “fromWgs84”-osion, joka mahdollistaa muuntamisen muista koordinaatistoista LV95:een. Molemmat osiot ovat valinnaisia riippuen siitä, mitä muunnossuuntaa haluat tukea.

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

Kun olemme muuntaneet piirustuksen EPSG:3857-koordinaatteihin, voimme käyttää dwg2maptiles-työkalua luomaan ruudut peittokerrosta varten Leafletissä:

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

Huomaa, että meidän on välitettävä valitsin -web-mercator dwg2maptiles-työkalulle kertoaksemme sille, ettei sen tule suorittaa automaattista zoomausta vaan luoda karttapeittokerros tarkoissa EPSG:3857-koordinaateissa, sellaisina kuin ne ovat tiedostossa.

-skip-empty kertoo dwg2maptiles-työkalulle, ettei se luo ruutuja, jotka eivät sisällä mitään osaa piirustuksesta. Ilman tätä valitsinta luodaan 2^zoomLevel ruutua zoomaustasoa kohden. Se olisi 4’194’304 ruutua zoomaustasolla 22. Koska peittokerrospiirustus todennäköisesti kattaa vain hyvin pienen osan maailmankartasta, tätä valitsinta tulisi aina käyttää peittokerroskarttoja luotaessa.

-b transparent asettaa taustan läpinäkyväksi, jotta karttaa voidaan käyttää peittokerroksena olemassa olevalle maailmankartalle (esim. Google Map, Mapbox jne.). Sen värin hallitsemiseksi, jolla mustat tai valkoiset viivat näytetään, tausta voidaan asettaa mustaksi läpinäkyväksi tai valkoiseksi läpinäkyväksi valitsimilla -b "#00ffffff" (valkoinen läpinäkyvä tausta, mustat viivat) tai -b "#00000000" (musta läpinäkyvä tausta, valkoiset viivat). Muista tässä tapauksessa välittää myös valitsin -c, joka pakottaa automaattisen värinkorjauksen.

Argumentilla -hq-postfix=@2x voidaan luoda korkearesoluutioisia ruutuja (512px) normaalien 256px ruutujen lisäksi. Arvoa “@2x” suositellaan korkearesoluutioisille ruuduille, ja se on laajalti käytössä, myös Leafletissä. Tällä valitsimella luodaan jokaiselle matalaresoluutioiselle ruudulle “N.png” korkearesoluutioinen ruutu “[email protected]”.

Useiden prosessien (ja suoritinytimien) käyttö

Section titled “Useiden prosessien (ja suoritinytimien) käyttö”

Karttaruutujen luominen voi olla suorittinta kuormittava tehtävä riippuen zoomaustasoista, piirustuksen monimutkaisuudesta ja muista asetuksista.

Karttaruutujen luomiseksi nopeammin voit jakaa työn useiden käytettävissä olevien suoritinytimien kesken. Tätä ominaisuutta varten dwg2maptiles tarjoaa valitsimen -s, jolla luodaan vain viipale (slice) tarvittavista ruuduista. Valitsin -s odottaa kahta pilkulla erotettua parametria: luotavaa viipaletta ja käytettävien viipaleiden kokonaismäärää. Esimerkiksi -s 1,4 luo ensimmäisen neljästä viipaleesta. Luodaksesi kaikki yllä olevan esimerkin ruudut neljällä suoritinytimellä voisit ajaa:

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

Voit tietysti myös jakaa tehtävät zoomaustasojen mukaan tai käyttää viipaleita vain korkeammille zoomaustasoille ja yhtä prosessia kaikille matalammille (halvemmille) zoomaustasoille jne.

Interaktiivinen esimerkki tarjoaa kaksi peittokerrosta Sveitsin Zürichin kantonin kartalle: suojellun metsäalueen ja luonnonvaraisten eläinten kulkukäytävät. Alkuperäiset tiedot olivat EPSG:2056-koordinaateissa (LV95) ja ne transformoitiin EPSG:3857-koordinaatteihin dwgmapconvert-työkalulla.

Katso esimerkki verkossa Leafletillä