Harita Karoları Oluşturma
QCAD, Leaflet gibi çevrimiçi harita gösterimlerinde kullanılmak üzere harita karoları (map tiles) oluşturan iki komut satırı aracıyla birlikte gelir. Leaflet, bir tarayıcıda etkileşimli haritalarla çalışmak için kullanılan bir JavaScript kütüphanesidir.
Bir Çizimi Çevrimiçi Sunma
Section titled “Bir Çizimi Çevrimiçi Sunma”Çevrimiçi bir harita için en basit kullanım senaryosu, bir web sitesinin ziyaretçilerine bir çizimin etkileşimli ve yakınlaştırılabilir bir görünümünü sunmaktır.
İşte herhangi bir çizim dosyası için harita karoları oluşturan bir örnek:
dwg2maptiles -z 0-6 -c -b white -hq-postfix=@2x -a -o path/to/output/directory drawing.dxf-z anahtarı oluşturulacak yakınlaştırma düzeylerini belirtir; burada yakınlaştırma düzeyi 0’dan yakınlaştırma düzeyi 6’ya kadar. Bu, düzey 0’dan (tüm çizim veya otomatik yakınlaştırma) başlayarak kullanıcının sınıra ulaşana kadar 6 kez yakınlaştırabileceği anlamına gelir. Kullanıcı her yakınlaştırdığında çizim 2 katı büyütülür; dolayısıyla 6 yakınlaştırma düzeyiyle kullanıcı 2^6 (=64) katına kadar yakınlaştırabilir. Daha fazla yakınlaştırma düzeyi oluşturmak daha fazla zaman ve disk alanı gerektirir. Her ek yakınlaştırma düzeyi tipik olarak bir öncekinden dört kat daha fazla zaman ve disk alanı gerektirir.
Karolar, verilen çıktı dizininde (-o) harita karoları için standart dizin yapısı ve dosya adlarıyla (z/x/y.png) oluşturulur.
Yukarıdaki örnekte çizimin beyaz bir arka plan üzerinde işlenmesini istiyoruz (-b white). Tüm çizgilerin görünür olduğundan emin olmak için beyaz çizgiler siyaha düzeltilmelidir (-c).
-hq-postfix=@2x argümanı, dwg2maptiles’a standart çözünürlüklü 256x256 piksel karolarla birlikte yüksek kaliteli (hq, yüksek çözünürlüklü, retina) 512x512 piksel karolar oluşturmasını söyler.
Kaliteyi daha da artırmak için kenar yumuşatma (antialiasing) amacıyla -a anahtarını da kullanıyoruz.
Örneği Leaflet ile çevrimiçi görüntüle
Coğrafi Referanslı Harita Karoları Oluşturma
Section titled “Coğrafi Referanslı Harita Karoları Oluşturma”dwg2maptiles, dünya haritaları için tam bindirmeler (overlay) oluşturmak amacıyla da kullanılabilir. Bunun için genellikle bir çizimin yerel bir koordinat sisteminden, çevrimiçi haritalarda yaygın olarak kullanılan Web Mercator koordinatlarına dönüştürülmesi gerekir.
QCAD Professional, çizimleri bir koordinat referans sisteminden (CRS) diğerine dönüştürmek için ayrı bir komut satırı aracıyla birlikte gelir: dwgmapconvert.
dwgmapconvert genellikle belirli bir çizim dosyasındaki tüm koordinatları bilinen, yerel bir koordinat sisteminden EPSG:3857 (bazen “Web Mercator” olarak da adlandırılır) koordinat sistemine dönüştürmek için kullanılır. Bu, çoğu çevrimiçi haritanın, örneğin Google Haritalar veya mapbox’ın kullandığı koordinat sistemidir. Bir çizimi dwg2maptiles için girdi olarak kullanmak ve coğrafi referanslı harita karoları üretmek için çizimin EPSG:3857 koordinat sisteminde olması gerekir.
EPSG:3857 koordinat sisteminde tüm dünya haritası, yakınlaştırma düzeyi 0’da 20037508.3427892 metrelik bir kareye sığar. Bir çizim bu koordinat sistemine dönüştürülürse, çizim o dünya karesine sığacak ve doğru, projelendirilmiş dünya koordinatlarında konumlanacak şekilde dönüştürülür.
Örneğin, bir çizim EPSG:2056’da (aynı zamanda LV95, yerel İsviçre koordinat sistemi) oluşturulmuşsa, dwgmapconvert ile EPSG:3857’ye şu şekilde dönüştürülebilir:
dwgmapconvert -segment-length=0.5 -crs-in=EPSG:2056 -crs-out=EPSG:3857 -f -o drawing_epsg3857.dxf drawing_epsg2056.dxfHarita projeksiyonları genellikle doğrusal olmadığından, eğrilerin ve daha uzun çizgilerin küçük çizgi parçalarına bölünmesi gerekir; bunlar daha sonra doğrusal olmayan bir şekilde projelendirilebilir. -segment-length anahtarı verilirse, dwgmapconvert bu segmentlemeyi verilen segment uzunluğunu kullanarak otomatik olarak yapar. Segment uzunluğu, orijinal çizimin çizim birimlerinde (burada Metre) belirtilir.
-crs-in, girdi koordinat sistemini belirtmek için kullanılır; burada EPSG:2056.
-crs-out, çıktı koordinat sistemini belirtmek için kullanılır; çıktı daha sonra dwg2maptiles ile kullanılacaksa bu, EPSG:3857 olmalıdır.
dwgmapconvert, girdi olarak LV95 ve çıktı olarak WebMercator desteğiyle gelir.
Diğer koordinat sistemleri gelecekteki sürümlerde eklenecek veya kullanıcı tarafından eklenebilecektir.
Yeni bir koordinat sistemi desteği eklemek için, koordinatları yeni koordinat sisteminden WGS84’e (Boylam/Enlem, GPS koordinatları gibi) dönüştürmek üzere iki denklem sağlanmalıdır.
Yeni koordinat sistemleri, kullanılan QCAD kurulumunun “scripts” klasöründe bulunan CRS.json adlı bir JSON yapılandırma dosyasına eklenebilir. İşte LV95 koordinat sistemini yapılandıran örnek bir CRS.json dosyası. LV95’i dwgmapconvert aracı için girdi olarak kullanabilmek amacıyla, x ve y koordinat dönüşümü için denklemler içeren “toWgs84” bölümünü sağlamamız gerekir. Burada ayrıca, her iki denklemde de erişilebilir olması için x denkleminde başlatılması gereken x_ ve y_ adlı iki yardımcı değişken kullanıyoruz.
Diğer koordinat sistemlerinden LV95’e dönüşüme izin vermek için bir “fromWgs84” bölümü de sağlayabiliriz. Desteklemek istediğiniz dönüşüm yönüne bağlı olarak her iki bölüm de isteğe bağlıdır.
{ "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" ] } ]}Harita Karoları Oluşturma
Section titled “Harita Karoları Oluşturma”Çizimi EPSG:3857 koordinatlarına dönüştürdükten sonra, leaflet’teki bindirme katmanı için karoları oluşturmak üzere dwg2maptiles’ı kullanabiliriz:
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -b transparent -o path/to/output/directory drawing_epsg3857.dxfdwg2maptiles’a otomatik yakınlaştırma yapmaması, bunun yerine dosyada mevcut olan tam EPSG:3857 koordinatlarında bir harita bindirmesi oluşturması gerektiğini bildirmek için -web-mercator anahtarını iletmemiz gerektiğine dikkat edin.
-skip-empty, dwg2maptiles’a çizimin herhangi bir parçasını içermeyen karoları oluşturmamasını söyler. Bu anahtar olmadan yakınlaştırma düzeyi başına 2^yakınlaştırmaDüzeyi karo oluşturulur. Bu, yakınlaştırma düzeyi 22 için 4.194.304 karo olurdu. Bir bindirme çizimi büyük olasılıkla dünya haritasının yalnızca çok küçük bir kısmını kapsadığından, bindirme haritaları oluştururken bu anahtar her zaman kullanılmalıdır.
-b transparent, arka planı saydam olarak ayarlar; böylece harita mevcut bir dünya haritası (örneğin Google Harita, mapbox vb.) için bindirme olarak kullanılabilir. Siyah veya beyaz çizgilerin görüntüleneceği rengi kontrol etmek için, arka plan -b "#00ffffff" (beyaz saydam arka plan, siyah çizgiler) veya -b "#00000000" (siyah saydam arka plan, beyaz çizgiler) ile sırasıyla siyah saydam veya beyaz saydam olarak ayarlanabilir. Bu durumda otomatik renk düzeltmesini zorlamak için -c anahtarını da iletmeye dikkat edin.
-hq-postfix=@2x argümanı, normal 256 piksel karolara ek olarak yüksek çözünürlüklü (512 piksel) karolar oluşturmak için kullanılabilir. “@2x” değeri, yüksek çözünürlüklü karolar için önerilir ve leaflet dahil yaygın olarak kullanılır. Bu anahtarla, her düşük çözünürlüklü “N.png” karosu için bir yüksek çözünürlüklü “[email protected]” karosu oluşturulur.
Birden Fazla İşlem (ve CPU Çekirdeği) Kullanma
Section titled “Birden Fazla İşlem (ve CPU Çekirdeği) Kullanma”Harita karoları oluşturmak; yakınlaştırma düzeylerine, çizim karmaşıklığına ve diğer ayarlara bağlı olarak CPU açısından yoğun bir görev olabilir.
Harita karolarını daha hızlı oluşturmak için işi birden fazla mevcut CPU çekirdeği arasında bölebilirsiniz. Bu özellik için dwg2maptiles, gerekli karoların yalnızca bir dilimini oluşturmak üzere -s anahtarını sunar. -s anahtarı virgülle ayrılmış iki parametre bekler: oluşturulacak dilim ve kullanılan toplam dilim sayısı. Örneğin -s 1,4, toplam dört dilimin ilk dilimini oluşturur. Yukarıdaki örneğin tüm karolarını dört CPU çekirdeği kullanarak oluşturmak için şunları çalıştırabilirsiniz:
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 &waitElbette görevleri yakınlaştırma düzeylerine göre de bölebilir veya dilimleri yalnızca daha yüksek yakınlaştırma düzeyleri için kullanıp tüm daha düşük (daha ucuz) yakınlaştırma düzeyleri için tek bir işlem kullanabilirsiniz vb.
Etkileşimli bir örnek, İsviçre’nin Zürih kantonu haritasına iki bindirme katmanı sunar: korunan orman alanı ve yaban hayatı koridorları. Orijinal veriler EPSG:2056 (LV95) koordinatlarında geldi ve dwgmapconvert kullanılarak EPSG:3857’ye dönüştürüldü.