Generera kartrutor
Introduktion
Section titled “Introduktion”QCAD levereras med två kommandoradsverktyg för att skapa kartrutor för användning med onlinekartvisningar som Leaflet. Leaflet är ett JavaScript-bibliotek för att arbeta med interaktiva kartor i en webbläsare.
Presentera en ritning online
Section titled “Presentera en ritning online”Det enklaste användningsfallet för en onlinekarta är att ge besökare på en webbplats en interaktiv, zoombar vy av en ritning.
Här är ett exempel som genererar kartrutorna för en given ritningsfil:
dwg2maptiles -z 0-6 -c -b white -hq-postfix=@2x -a -o path/to/output/directory drawing.dxfOmkopplaren -z anger de zoomnivåer som ska genereras, här från zoomnivå 0 till zoomnivå 6. Detta innebär att från nivå 0 (hela ritningen med autozoom) kan användaren zooma in 6 gånger tills gränsen nås. Varje gång användaren zoomar in förstoras ritningen med en faktor på 2, så med 6 zoomnivåer kan användaren zooma in med en faktor på 2^6 (=64). Att generera fler zoomnivåer kräver mer tid och diskutrymme. Varje ytterligare zoomnivå kräver vanligtvis fyra gånger mer tid och diskutrymme att generera än den föregående.
Rutorna genereras i den angivna utdatakatalogen (-o) med standardkatalogstrukturen och filnamnen för kartrutor (z/x/y.png).
I exemplet ovan vill vi att ritningen ska renderas på en vit bakgrund (-b white). Vita linjer bör korrigeras till svarta för att säkerställa att alla linjer är synliga (-c).
Argumentet -hq-postfix=@2x säger till dwg2maptiles att generera rutor av hög kvalitet (hq, högupplöst, retina) på 512x512px tillsammans med rutorna i standardupplösning på 256x256px.
För att ytterligare öka kvaliteten använder vi även omkopplaren -a för kantutjämning (antialiasing).
Visa exempel med Leaflet online
Generera georefererade kartrutor
Section titled “Generera georefererade kartrutor”dwg2maptiles kan också användas för att generera exakta överlägg för världskartor. För detta måste en ritning vanligtvis transformeras från ett lokalt koordinatsystem till Web Mercator-koordinater, som ofta används av onlinekartor.
QCAD Professional levereras med ett separat kommandoradsverktyg för att transformera ritningar från ett koordinatreferenssystem (CRS) till ett annat: dwgmapconvert.
dwgmapconvert används vanligtvis för att konvertera alla koordinater i en given ritningsfil från ett känt, lokalt koordinatsystem till koordinatsystemet EPSG:3857 (ibland kallat “Web Mercator”). Detta är det koordinatsystem som används av de flesta onlinekartor, till exempel Google Maps eller mapbox. För att använda en ritning som indata till dwg2maptiles och producera georefererade kartrutor måste ritningen vara i koordinatsystemet EPSG:3857.
I koordinatsystemet EPSG:3857 ryms hela världskartan i en 20037508.3427892m-kvadrat vid zoomnivå 0. Om en ritning konverteras till detta koordinatsystem transformeras ritningen på ett sådant sätt att den ryms i den världskvadraten och att ritningen är placerad vid de korrekta, projicerade världskoordinaterna.
Till exempel, om en ritning skapades i EPSG:2056 (även LV95, det lokala schweiziska koordinatsystemet), kan den transformeras till EPSG:3857 med dwgmapconvert enligt följande:
dwgmapconvert -segment-length=0.5 -crs-in=EPSG:2056 -crs-out=EPSG:3857 -f -o drawing_epsg3857.dxf drawing_epsg2056.dxfEftersom kartprojektioner vanligtvis är icke-linjära måste kurvor och längre linjer delas upp i små linjesegment som sedan kan projiceras på ett icke-linjärt sätt. Om omkopplaren -segment-length anges utför dwgmapconvert denna segmentering automatiskt med hjälp av den angivna segmentlängden. Segmentlängden anges i ritenheter för den ursprungliga ritningen (här meter).
-crs-in används för att ange indata-koordinatsystemet, här EPSG:2056.
-crs-out används för att ange utdata-koordinatsystemet, som måste vara EPSG:3857 om utdata senare ska användas med dwg2maptiles.
dwgmapconvert har stöd för LV95 som indata och WebMercator som utdata.
Andra koordinatsystem kommer att läggas till i framtida utgåvor eller kan läggas till av användaren.
För att lägga till stöd för ett nytt koordinatsystem måste två ekvationer tillhandahållas för att konvertera koordinaterna från det nya koordinatsystemet till WGS84 (longitud/latitud, som GPS-koordinater).
Nya koordinatsystem kan läggas till i en JSON-konfigurationsfil som heter CRS.json, placerad i “scripts”-mappen i den QCAD-installation som används. Här är en exempel-CRS.json-fil som konfigurerar koordinatsystemet LV95. För att kunna använda LV95 som indata till dwgmapconvert-verktyget måste vi tillhandahålla avsnittet “toWgs84” med ekvationer för konvertering av x- och y-koordinaterna. Här använder vi även två hjälpvariabler, x_ och y_, som måste initieras i x-ekvationen för att vara tillgängliga i båda ekvationerna.
Vi skulle också kunna tillhandahålla ett “fromWgs84”-avsnitt för att tillåta konvertering från andra koordinatsystem till LV95. Båda avsnitten är valfria, beroende på vilken konverteringsriktning du vill stödja.
{ "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" ] } ]}Generera kartrutor
Section titled “Generera kartrutor”När vi har konverterat ritningen till EPSG:3857-koordinater kan vi använda dwg2maptiles för att generera rutorna för överläggslagret i Leaflet:
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -b transparent -o path/to/output/directory drawing_epsg3857.dxfObservera att vi måste skicka omkopplaren -web-mercator till dwg2maptiles för att låta den veta att den inte ska utföra en autozoom utan generera ett kartöverlägg i exakta EPSG:3857-koordinater som de finns i filen.
-skip-empty säger till dwg2maptiles att inte generera rutor som inte innehåller någon del av ritningen. Utan denna omkopplare kommer 2^zoomLevel rutor att genereras per zoomnivå. Det skulle vara 4’194’304 rutor för zoomnivå 22. Eftersom en överläggsritning mycket troligt bara täcker en mycket liten del av världskartan bör denna omkopplare alltid användas när man skapar överläggskartor.
-b transparent ställer in bakgrunden till transparent, så att kartan kan användas som ett överlägg för en befintlig världskarta (t.ex. Google Map, mapbox osv.). För att styra färgen i vilken svarta eller vita linjer visas kan bakgrunden ställas in på svart transparent eller vit transparent med -b "#00ffffff" (vit transparent bakgrund, svarta linjer) respektive -b "#00000000" (svart transparent bakgrund, vita linjer). Se till att även skicka omkopplaren -c i detta fall för att framtvinga automatisk färgkorrigering.
Argumentet -hq-postfix=@2x kan användas för att generera högupplösta rutor (512px) utöver de normala 256px-rutorna. Värdet “@2x” rekommenderas och används i stor utsträckning för högupplösta rutor, även i Leaflet. Med denna omkopplare skapas för varje lågupplöst ruta “N.png” en högupplöst ruta “[email protected]”.
Använda flera processer (och CPU-kärnor)
Section titled “Använda flera processer (och CPU-kärnor)”Att generera kartrutor kan vara en CPU-intensiv uppgift, beroende på zoomnivåer, ritningskomplexitet och andra inställningar.
För att generera kartrutor snabbare kan du dela upp jobbet mellan flera tillgängliga CPU-kärnor. För denna funktion erbjuder dwg2maptiles omkopplaren -s för att endast generera en del av de nödvändiga rutorna. Omkopplaren -s förväntar sig två kommaseparerade parametrar: delen som ska genereras och det totala antalet använda delar. Till exempel skulle -s 1,4 generera den första delen av fyra delar totalt. För att generera alla rutor i exemplet ovan med fyra CPU-kärnor kan du köra:
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 &waitNaturligtvis kan du också dela upp uppgifter efter zoomnivåer eller använda delar endast för högre zoomnivåer och en enda process för alla lägre (billigare) zoomnivåer osv.
Exempel
Section titled “Exempel”Ett interaktivt exempel tillhandahåller två överläggslager till kartan över den schweiziska kantonen Zürich: det skyddade skogsområdet och viltkorridorerna. Ursprungsdata kom i EPSG:2056-koordinater (LV95) och transformerades till EPSG:3857 med hjälp av dwgmapconvert.