Skip to content

Генериране на картни плочки

QCAD се доставя с два инструмента за команден ред за създаване на картни плочки за използване с онлайн карти като Leaflet. Leaflet е библиотека на JavaScript за работа с интерактивни карти в браузър.

Представяне на чертеж онлайн

Section titled “Представяне на чертеж онлайн”

Най-простият случай на употреба на онлайн карта е да се предостави на посетителите на уебсайт интерактивен изглед на чертеж с възможност за мащабиране.

Ето пример, който генерира картните плочки за даден файл с чертеж:

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

Ключът -z задава нивата на мащабиране, които да се генерират, тук от ниво 0 до ниво 6. Това означава, че започвайки от ниво 0 (целия чертеж при автоматично мащабиране), потребителят може да увеличава 6 пъти, докато се достигне границата. Всеки път, когато потребителят увеличава, чертежът се уголемява с коефициент 2, така че при 6 нива на мащабиране потребителят може да увеличи с коефициент 2^6 (=64). Генерирането на повече нива на мащабиране изисква повече време и дисково пространство. Всяко допълнително ниво на мащабиране обикновено изисква четири пъти повече време и дисково пространство за генериране от предишното.

Плочките се генерират в зададената изходна директория (-o) със стандартната структура на директориите и имена на файлове за картни плочки (z/x/y.png).

В горния пример искаме чертежът да се изобрази на бял фон (-b white). Белите линии трябва да се коригират в черни, за да се гарантира, че всички линии са видими (-c).

Аргументът -hq-postfix=@2x казва на dwg2maptiles да генерира висококачествени (hq, висока резолюция, ретина) плочки при 512x512px наред със стандартните плочки с резолюция 256x256px.

За допълнително повишаване на качеството използваме и ключа -a за заглаждане (antialiasing).

Вижте примера с Leaflet онлайн

Генериране на геореферирани картни плочки

Section titled “Генериране на геореферирани картни плочки”

dwg2maptiles може да се използва и за генериране на точни наслагвания за световни карти. За целта чертежът обикновено трябва да бъде трансформиран от локална координатна система в координати Web Mercator, каквито обикновено се използват от онлайн картите.

QCAD Professional се доставя с отделен инструмент за команден ред за трансформиране на чертежи от една координатна отправна система (CRS) в друга: dwgmapconvert.

dwgmapconvert обикновено се използва за преобразуване на всички координати в даден файл с чертеж от известна локална координатна система в координатната система EPSG:3857 (понякога наричана „Web Mercator”). Това е координатната система, използвана от повечето онлайн карти, например Google Maps или mapbox. За да се използва чертеж като входни данни за dwg2maptiles и да се създадат геореферирани картни плочки, чертежът трябва да бъде в координатната система EPSG:3857.

В координатната система EPSG:3857 цялата световна карта се побира в квадрат от 20037508.3427892m при ниво на мащабиране 0. Ако чертеж бъде преобразуван в тази координатна система, той се трансформира по такъв начин, че да се побере в този световен квадрат и чертежът да е разположен на правилните проектирани световни координати.

Например, ако чертеж е създаден в EPSG:2056 (също LV95, локалната швейцарска координатна система), той може да бъде трансформиран в EPSG:3857 с dwgmapconvert по следния начин:

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

Тъй като картографските проекции обикновено са нелинейни, кривите и по-дългите линии трябва да се разделят на малки линейни сегменти, които след това могат да бъдат проектирани по нелинеен начин. Ако е зададен ключът -segment-length, dwgmapconvert извършва това сегментиране автоматично, използвайки зададената дължина на сегмента. Дължината на сегмента се задава в единиците на чертежа на оригиналния чертеж (тук метри).

-crs-in се използва за задаване на входната координатна система, тук EPSG:2056.

-crs-out се използва за задаване на изходната координатна система, която трябва да бъде EPSG:3857, ако изходът по-късно ще се използва с dwg2maptiles.

dwgmapconvert идва с поддръжка за LV95 като вход и WebMercator като изход.

Други координатни системи ще бъдат добавени в бъдещи издания или могат да бъдат добавени от потребителя.

За да се добави поддръжка за нова координатна система, трябва да се предоставят две уравнения за преобразуване на координатите от новата координатна система в WGS84 (дължина/ширина, като GPS координати).

Нови координатни системи могат да се добавят към конфигурационен файл в JSON формат, наречен CRS.json, разположен в папката „scripts” на използваната инсталация на QCAD. Ето пример за файл CRS.json, който конфигурира координатната система LV95. За да можем да използваме LV95 като вход за инструмента dwgmapconvert, трябва да предоставим секцията „toWgs84” с уравнения за преобразуване на координатите x и y. Тук използваме и две спомагателни променливи, x_ и y_, които трябва да бъдат инициализирани в уравнението за x, за да са достъпни в двете уравнения.

Бихме могли също да предоставим секция „fromWgs84”, за да позволим преобразуване от други координатни системи в LV95. И двете секции са незадължителни, в зависимост от посоката на преобразуване, която искате да поддържате.

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

Генериране на картни плочки

Section titled “Генериране на картни плочки”

След като преобразуваме чертежа в координати EPSG:3857, можем да използваме dwg2maptiles, за да генерираме плочките за слоя на наслагване в Leaflet:

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

Обърнете внимание, че трябва да подадем ключа -web-mercator на dwg2maptiles, за да му дадем да разбере, че не трябва да извършва автоматично мащабиране, а да генерира наслагване на карта в точни координати EPSG:3857, каквито присъстват във файла.

-skip-empty казва на dwg2maptiles да не генерира плочки, които не съдържат никаква част от чертежа. Без този ключ ще бъдат генерирани 2^zoomLevel плочки на ниво на мащабиране. Това биха били 4’194’304 плочки за ниво на мащабиране 22. Тъй като чертеж за наслагване най-вероятно покрива само много малка част от световната карта, този ключ винаги трябва да се използва при създаване на наслагвани карти.

-b transparent задава прозрачен фон, така че картата да може да се използва като наслагване върху съществуваща световна карта (напр. Google Map, mapbox и т.н.). За да контролирате цвета, в който се показват черните или белите линии, фонът може да бъде зададен на черен прозрачен или бял прозрачен с -b "#00ffffff" (бял прозрачен фон, черни линии) или -b "#00000000" (черен прозрачен фон, бели линии) съответно. В този случай не забравяйте да подадете и ключа -c, за да наложите автоматична корекция на цветовете.

Аргументът -hq-postfix=@2x може да се използва за генериране на плочки с висока резолюция (512px) в допълнение към нормалните плочки от 256px. Стойността „@2x” се препоръчва и се използва широко за плочки с висока резолюция, също и в Leaflet. С този ключ за всяка плочка с ниска резолюция „N.png” се създава плочка с висока резолюция „[email protected]”.

Използване на множество процеси (и ядра на процесора)

Section titled “Използване на множество процеси (и ядра на процесора)”

Генерирането на картни плочки може да е задача, интензивна за процесора, в зависимост от нивата на мащабиране, сложността на чертежа и други настройки.

За да генерирате картни плочки по-бързо, можете да разделите задачата между няколко налични ядра на процесора. За тази функция dwg2maptiles предлага ключа -s за генериране само на част от необходимите плочки. Ключът -s очаква два параметъра, разделени със запетая: частта за генериране и общия брой използвани части. Например -s 1,4 би генерирал първата част от общо четири части. За да генерирате всички плочки от горния пример, използвайки четири ядра на процесора, можете да изпълните:

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

Разбира се, бихте могли също да разделите задачите по нива на мащабиране или да използвате части само за по-високите нива на мащабиране и един процес за всички по-ниски (по-евтини) нива на мащабиране и т.н.

Интерактивен пример предоставя два слоя на наслагване към картата на швейцарския кантон Цюрих: защитената горска зона и коридорите за дивата природа. Оригиналните данни бяха в координати EPSG:2056 (LV95) и бяха трансформирани в EPSG:3857 с помощта на dwgmapconvert.

Вижте примера с Leaflet онлайн