Μετάβαση στο περιεχόμενο

Δημιουργία πλακιδίων χάρτη

Το QCAD διαθέτει δύο εργαλεία γραμμής εντολών για τη δημιουργία πλακιδίων χάρτη προς χρήση με διαδικτυακές προβολές χαρτών όπως το Leaflet. Το Leaflet είναι μια βιβλιοθήκη JavaScript για την εργασία με διαδραστικούς χάρτες σε ένα πρόγραμμα περιήγησης.

Η απλούστερη περίπτωση χρήσης ενός διαδικτυακού χάρτη είναι να παρέχει στους επισκέπτες ενός ιστότοπου μια διαδραστική προβολή ενός σχεδίου με δυνατότητα εστίασης.

Ακολουθεί ένα παράδειγμα που δημιουργεί τα πλακίδια χάρτη για οποιοδήποτε δεδομένο αρχείο σχεδίου:

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, υψηλής ανάλυσης, retina) σε 512x512px μαζί με τα πλακίδια τυπικής ανάλυσης 256x256px.

Για περαιτέρω αύξηση της ποιότητας, χρησιμοποιούμε επίσης τον διακόπτη -a για εξομάλυνση (antialiasing).

Δείτε το παράδειγμα με το Leaflet online

Δημιουργία γεωαναφερμένων πλακιδίων χάρτη

Ενότητα με τίτλο «Δημιουργία γεωαναφερμένων πλακιδίων χάρτη»

Το 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" ]
}
]
}

Αφού μετατρέψουμε το σχέδιο σε συντεταγμένες 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]”.

Χρήση πολλαπλών διεργασιών (και πυρήνων CPU)

Ενότητα με τίτλο «Χρήση πολλαπλών διεργασιών (και πυρήνων CPU)»

Η δημιουργία πλακιδίων χάρτη μπορεί να είναι μια εργασία εντατική για τον CPU, ανάλογα με τα επίπεδα εστίασης, την πολυπλοκότητα του σχεδίου και άλλες ρυθμίσεις.

Για να δημιουργήσετε πλακίδια χάρτη ταχύτερα, μπορείτε να διαιρέσετε την εργασία μεταξύ πολλών διαθέσιμων πυρήνων CPU. Για αυτήν τη λειτουργία, το dwg2maptiles προσφέρει τον διακόπτη -s για τη δημιουργία μόνο ενός τμήματος των απαιτούμενων πλακιδίων. Ο διακόπτης -s αναμένει δύο παραμέτρους διαχωρισμένες με κόμμα: το τμήμα προς δημιουργία και τον συνολικό αριθμό των χρησιμοποιούμενων τμημάτων. Για παράδειγμα, το -s 1,4 θα δημιουργούσε το πρώτο τμήμα από τέσσερα τμήματα συνολικά. Για να δημιουργήσετε όλα τα πλακίδια του παραπάνω παραδείγματος χρησιμοποιώντας τέσσερις πυρήνες CPU, θα μπορούσατε να εκτελέσετε:

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 online