Skip to content

Žemėlapio išklotinių generavimas

QCAD pateikiamas su dviem komandų eilutės įrankiais žemėlapio išklotinėms kurti, skirtoms naudoti su internetiniais žemėlapiais, tokiais kaip Leaflet. Leaflet yra JavaScript biblioteka, skirta darbui su interaktyviais žemėlapiais naršyklėje.

Paprasčiausias interneto žemėlapio naudojimo atvejis yra suteikti svetainės lankytojams interaktyvų, mastelį keičiantį brėžinio vaizdą.

Štai pavyzdys, kuris generuoja žemėlapio išklotines bet kuriam konkrečiam brėžinio failui:

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

Jungiklis -z nurodo generuojamus mastelio lygius, čia nuo mastelio lygio 0 iki mastelio lygio 6. Tai reiškia, kad pradedant nuo lygio 0 (viso brėžinio su automatiniu masteliu), naudotojas gali priartinti 6 kartus, kol pasiekiama riba. Kiekvieną kartą, kai naudotojas priartina, brėžinys padidinamas 2 kartus, todėl su 6 mastelio lygiais naudotojas gali priartinti 2^6 (=64) kartus. Daugiau mastelio lygių generavimas reikalauja daugiau laiko ir vietos diske. Kiekvienas papildomas mastelio lygis paprastai reikalauja keturis kartus daugiau laiko ir vietos diske sugeneruoti nei ankstesnis.

Išklotinės generuojamos nurodytame išvesties kataloge (-o) su standartine žemėlapio išklotinių katalogų struktūra ir failų pavadinimais (z/x/y.png).

Aukščiau pateiktame pavyzdyje norime, kad brėžinys būtų atvaizduotas baltame fone (-b white). Baltos linijos turėtų būti pataisytos į juodas, kad būtų užtikrinta, jog visos linijos yra matomos (-c).

Argumentas -hq-postfix=@2x nurodo dwg2maptiles generuoti aukštos kokybės (hq, didelės skiriamosios gebos, retina) išklotines 512x512px kartu su standartinės skiriamosios gebos išklotinėmis 256x256px.

Kokybei dar labiau padidinti taip pat naudojame jungiklį -a glotninimui (antialiasing).

Peržiūrėti pavyzdį su Leaflet internete

Georeferencuotų žemėlapio išklotinių generavimas

Section titled “Georeferencuotų žemėlapio išklotinių generavimas”

dwg2maptiles taip pat galima naudoti tiksliems pasaulio žemėlapių perdangoms generuoti. Tam brėžinys paprastai turi būti transformuotas iš vietinės koordinačių sistemos į Web Mercator koordinates, kaip įprastai naudojama internetiniuose žemėlapiuose.

QCAD Professional pateikiamas su atskiru komandų eilutės įrankiu brėžiniams transformuoti iš vienos koordinačių atskaitos sistemos (CRS) į kitą: dwgmapconvert.

dwgmapconvert paprastai naudojamas visoms nurodyto brėžinio failo koordinatėms konvertuoti iš žinomos vietinės koordinačių sistemos į EPSG:3857 koordinačių sistemą (kartais vadinamą „Web Mercator”). Tai koordinačių sistema, kurią naudoja dauguma internetinių žemėlapių, pavyzdžiui, Google Maps arba mapbox. Norint naudoti brėžinį kaip įvestį dwg2maptiles ir sukurti georeferencuotas žemėlapio išklotines, brėžinys turi būti EPSG:3857 koordinačių sistemoje.

EPSG:3857 koordinačių sistemoje visas pasaulio žemėlapis mastelio lygyje 0 telpa į 20037508.3427892m kvadratą. Jei brėžinys konvertuojamas į šią koordinačių sistemą, jis transformuojamas taip, kad tilptų į tą pasaulio kvadratą ir kad brėžinys būtų teisingose projektuotose pasaulio koordinatėse.

Pavyzdžiui, jei brėžinys buvo sukurtas EPSG:2056 (taip pat LV95, vietinė Šveicarijos koordinačių sistema), jį galima transformuoti į EPSG:3857 su dwgmapconvert taip:

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

Kadangi žemėlapių projekcijos paprastai yra netiesinės, kreives ir ilgesnes linijas reikia suskaidyti į mažus linijų segmentus, kuriuos tada galima projektuoti netiesiniu būdu. Jei pateiktas jungiklis -segment-length, dwgmapconvert atlieka šį segmentavimą automatiškai, naudodamas nurodytą segmento ilgį. Segmento ilgis nurodomas pradinio brėžinio brėžinio vienetais (čia metrais).

-crs-in naudojamas įvesties koordinačių sistemai nurodyti, čia EPSG:2056.

-crs-out naudojamas išvesties koordinačių sistemai nurodyti, kuri turi būti EPSG:3857, jei išvestis vėliau bus naudojama su dwg2maptiles.

dwgmapconvert pateikiamas su LV95 palaikymu kaip įvestimi ir WebMercator kaip išvestimi.

Kitos koordinačių sistemos bus pridėtos būsimuose leidimuose arba jas gali pridėti naudotojas.

Norint pridėti naujos koordinačių sistemos palaikymą, reikia pateikti dvi lygtis koordinatėms konvertuoti iš naujos koordinačių sistemos į WGS84 (ilgumą/platumą, kaip GPS koordinatės).

Naujas koordinačių sistemas galima pridėti prie JSON konfigūracijos failo, pavadinto CRS.json, esančio naudojamo QCAD diegimo aplanke „scripts”. Štai pavyzdinis CRS.json failas, konfigūruojantis koordinačių sistemą LV95. Kad galėtume naudoti LV95 kaip įvestį dwgmapconvert įrankiui, turime pateikti skiltį „toWgs84” su x ir y koordinačių konvertavimo lygtimis. Čia taip pat naudojame du pagalbinius kintamuosius, x_ ir y_, kurie turi būti inicijuoti x lygtyje, kad būtų pasiekiami abiejose lygtyse.

Taip pat galėtume pateikti skiltį „fromWgs84”, kad leistume konvertuoti iš kitų koordinačių sistemų į LV95. Abi skiltys yra neprivalomos, priklausomai nuo konvertavimo krypties, kurią norite palaikyti.

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

Kai brėžinį konvertavome į EPSG:3857 koordinates, galime naudoti dwg2maptiles, kad sugeneruotume išklotines Leaflet perdangos sluoksniui:

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

Atkreipkite dėmesį, kad dwg2maptiles turime perduoti jungiklį -web-mercator, kad jam praneštume, jog jis neturėtų atlikti automatinio mastelio keitimo, o generuoti žemėlapio perdangą tiksliomis EPSG:3857 koordinatėmis, esančiomis faile.

-skip-empty nurodo dwg2maptiles negeneruoti išklotinių, kuriose nėra jokios brėžinio dalies. Be šio jungiklio, kiekvienam mastelio lygiui bus sugeneruota 2^zoomLevel išklotinių. Tai būtų 4’194’304 išklotinės mastelio lygiui 22. Kadangi perdangos brėžinys labai tikėtina apima tik labai mažą pasaulio žemėlapio dalį, šis jungiklis visada turėtų būti naudojamas kuriant perdangos žemėlapius.

-b transparent nustato foną kaip skaidrų, todėl žemėlapį galima naudoti kaip perdangą esamam pasaulio žemėlapiui (pvz., Google Map, mapbox ir kt.). Norėdami valdyti spalvą, kuria rodomos juodos ar baltos linijos, foną galima nustatyti kaip juodą skaidrų arba baltą skaidrų atitinkamai su -b "#00ffffff" (baltas skaidrus fonas, juodos linijos) arba -b "#00000000" (juodas skaidrus fonas, baltos linijos). Šiuo atveju būtinai taip pat perduokite jungiklį -c, kad priverstumėte automatinį spalvų koregavimą.

Argumentą -hq-postfix=@2x galima naudoti didelės skiriamosios gebos išklotinėms (512px) generuoti be įprastų 256px išklotinių. Reikšmė „@2x” rekomenduojama ir plačiai naudojama didelės skiriamosios gebos išklotinėms, taip pat ir Leaflet. Su šiuo jungikliu kiekvienai mažos skiriamosios gebos išklotinei „N.png” sukuriama didelės skiriamosios gebos išklotinė „[email protected]”.

Kelių procesų (ir procesoriaus branduolių) naudojimas

Section titled “Kelių procesų (ir procesoriaus branduolių) naudojimas”

Žemėlapio išklotinių generavimas gali būti procesoriui imli užduotis, priklausomai nuo mastelio lygių, brėžinio sudėtingumo ir kitų nustatymų.

Kad greičiau generuotumėte žemėlapio išklotines, galite padalyti darbą tarp kelių prieinamų procesoriaus branduolių. Šiai funkcijai dwg2maptiles siūlo jungiklį -s, kad sugeneruotų tik dalį reikalingų išklotinių. Jungiklis -s tikisi dviejų kableliu atskirtų parametrų: generuojamos dalies ir bendro naudojamų dalių skaičiaus. Pavyzdžiui, -s 1,4 sugeneruotų pirmąją dalį iš keturių dalių iš viso. Norėdami sugeneruoti visas aukščiau pateikto pavyzdžio išklotines naudodami keturis procesoriaus branduolius, galite paleisti:

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

Žinoma, taip pat galėtumėte padalyti užduotis pagal mastelio lygius arba naudoti dalis tik aukštesniems mastelio lygiams ir vieną procesą visiems žemesniems (pigesniems) mastelio lygiams ir t. t.

Interaktyvus pavyzdys pateikia du perdangos sluoksnius Šveicarijos Ciuricho kantono žemėlapiui: saugomą miško plotą ir laukinės gamtos koridorius. Pradiniai duomenys buvo pateikti EPSG:2056 (LV95) koordinatėmis ir buvo transformuoti į EPSG:3857 naudojant dwgmapconvert.

Peržiūrėti pavyzdį su Leaflet internete