Το OpenStreetMap (OSM) είναι ένας δωρεάν παγκόσμιος χάρτης που δημιουργήθηκε από κοινού από ανθρώπους σε όλο τον κόσμο – ελεύθερο, ανοιχτό και ανεξάρτητο. Ενώ οι Χάρτες Google, ως ηγέτης της αγοράς, είναι συχνά η πρώτη επιλογή για ψηφιακούς χάρτες, το OSM βασίζεται σε μια εντελώς διαφορετική αρχή: μια συνεργατική κοινότητα που συλλέγει, βελτιώνει και καθιστά διαθέσιμα γεωγραφικά δεδομένα δωρεάν.
Γιατί είναι αυτό σημαντικό; Γιατί οι χάρτες είναι γνώση – και η γνώση πρέπει να είναι δωρεάν. Για μεμονωμένες εφαρμογές, μπορεί να είναι χρήσιμο να φιλοξενήσετε μόνοι σας δεδομένα OSM προκειμένου να αναπτύξετε προσαρμοσμένες λύσεις χαρτών και να διατηρήσετε τον έλεγχο των δεδομένων και της παρουσίασής τους. Η αυτο-φιλοξενία OSM προσφέρει πολλά πλεονεκτήματα:
- Ανεξαρτησία: Δεν εξαρτάστε από εξωτερικές υπηρεσίες και έχετε τον πλήρη έλεγχο των δεδομένων της κάρτας.
- Ικανότητα προσαρμογής: Μπορείτε να προσαρμόσετε το στυλ του χάρτη και τα δεδομένα που εμφανίζονται σύμφωνα με τις δικές σας ανάγκες.
- Προστασία δεδομένων: Όλα τα δεδομένα φιλοξενούνται τοπικά. Δεν καλούνται εξωτερικά API.
Υπάρχουν δύο βασικές μέθοδοι για την εμφάνιση χαρτών:
- Πλακάκια πλέγματος: Προκατασκευασμένα αρχεία εικόνας για διαφορετικά επίπεδα ζουμ. Είναι εύκολο να εφαρμοστούν, αλλά προσφέρουν λιγότερη ευελιξία στην προσαρμογή του στυλ χάρτη.
- Διανυσματικά πλακίδια: Περιέχει γεωγραφικά δεδομένα με τη μορφή διανυσμάτων (σημεία, γραμμές, πολύγωνα) που αποδίδονται από την πλευρά του πελάτη. Αυτό επιτρέπει ευέλικτες προσαρμογές του σχεδιασμού του χάρτη και ευκρινή απεικόνιση σε όλα τα επίπεδα ζουμ. Ωστόσο, η απόδοση απαιτεί περισσότερη υπολογιστική ισχύ στη συσκευή-πελάτη.
Τα διανυσματικά πλακίδια είναι ιδιαίτερα κατάλληλα για αυτο-φιλοξενία καθώς προσφέρουν περισσότερες επιλογές προσαρμογής και είναι πιο αποτελεσματικά. Για τοπικούς χάρτες με μικρότερες περιοχές, συχνά αρκεί ~1 GB χώρου στον σκληρό δίσκο. Είναι λογικό να χρησιμοποιείτε SSD επειδή προσφέρουν πλεονεκτήματα ταχύτητας κατά τη φόρτωση πλακιδίων. Τα στατικά διανυσματικά πλακίδια δεν απαιτούν διακομιστή χαρτών που λειτουργεί (π.χ. TileServer GL ή Mapnik), έχουν χαμηλότερες απαιτήσεις συντήρησης και μικρότερο φορτίο διακομιστή - είναι ιδανικά για μικρότερα έργα με σταθερές ενότητες χαρτών.
Το μικρό μου πακέτο osmhelper διευκολύνει τη διαδικασία δημιουργίας και ανάπτυξης διανυσματικών πλακιδίων από .osm.pbf
Αρχεία. Τα προσαρμοσμένα πλαίσια οριοθέτησης επιτρέπουν στους προγραμματιστές να εξάγουν συγκεκριμένες γεωγραφικές περιοχές και να δημιουργούν αντίστοιχα αρχεία boilerplate που μπορούν να φορτωθούν απευθείας σε έναν διακομιστή. Αυτό κάνει την ενσωμάτωση δεδομένων OSM σε έργα web πολύ πιο εύκολη. Για να χρησιμοποιήσετε το osmhelper, απαιτείται κάποια προετοιμασία. Η βιβλιοθήκη βασίζεται σε εργαλεία όπως π.χ ωσμίο, μπουτίλ και κεραμοποιός που πρέπει να εγκατασταθεί.
Εγκατάσταση οσμίου
Το osmium είναι ένα ισχυρό εργαλείο για την επεξεργασία δεδομένων OSM.
mkdir osmium
cd osmium
wget https://github.com/osmcode/osmium-tool/archive/refs/tags/v1.16.0.tar.gz
tar -xzf v1.16.0.tar.gz
cd osmium-tool-1.16.0
apt-get install libosmium2-dev libprotozero-dev nlohmann-json3-dev libboost-program-options-dev libbz2-dev zlib1g-dev liblz4-dev libexpat1-dev cmake pandoc
mkdir build
cd build
cmake ..
make
make install
cd ..
cd ..
rm -rf ./osmium
exec env -i HOME=$HOME bash -l
osmium --version
Τοποθέτηση butil
Το mbutil είναι ένα εργαλείο βασισμένο σε Python για εργασία με MBTiles.
git clone https://github.com/mapbox/mbutil.git
cd mbutil
python setup.py install
cd ..
rm -rf ./mbutil
exec env -i HOME=$HOME bash -l
mb-util --version
Εγκατάσταση κεραμοποιού
Το tilemaker είναι ένα εργαλείο ανοιχτού κώδικα που μετατρέπει τα δεδομένα OSM απευθείας σε διανυσματικά πλακίδια.
apt install build-essential libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev lua5.1 liblua5.1-0-dev libshp-dev libsqlite3-dev rapidjson-dev
git clone https://github.com/systemed/tilemaker.git
cd tilemaker
make
make install
cd ..
rm -rf ./tilemaker
exec env -i HOME=$HOME bash -l
tilemaker --help
Κατεβάστε το σενάριο μετατροπής
mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh
Χρησιμοποιώντας το osmhelper
Μετά την εγκατάσταση των απαιτούμενων εργαλείων, το osmhelper μπορεί να χρησιμοποιηθεί για τη δημιουργία διανυσματικών πλακιδίων και την προετοιμασία τους για φιλοξενία:
./convert.sh \
--url https://download.geofabrik.de/europe/germany-latest.osm.pbf \
--lat-min 47.27 \
--lon-min 8.97 \
--lat-max 50.57 \
--lon-max 13.84 \
--compress
Αυτή η διαδικασία καθιστά δυνατή την απόδοση προσαρμοσμένων τμημάτων χάρτη αποτελεσματικά και χωρίς την ανάγκη δυναμικού διακομιστή χαρτών. Η ενσωμάτωση δεδομένων OpenStreetMap στα δικά σας έργα μπορεί να είναι πολύπλοκη, ειδικά όταν πρόκειται για τη φιλοξενία και την ανάπτυξη. Δεδομένου ότι οι Χάρτες Google έχουν το μονοπώλιο στις λύσεις χαρτογράφησης, πολλοί προγραμματιστές αναζητούν εναλλακτικές λύσεις. Το osmhelper διευκολύνει την έναρξη της φιλοξενίας των δικών σας δεδομένων OpenStreetMap. Αυτό σας δίνει τον πλήρη έλεγχο των χαρτών σας, χωρίς περιορισμούς API και τη δυνατότητα να προσθέσετε τα δικά σας επίπεδα δεδομένων.
Οι περισσότεροι άνθρωποι γνωρίζουν τους Χάρτες Google ως την τυπική λύση για ψηφιακούς χάρτες. Αλλά λίγοι άνθρωποι γνωρίζουν ότι το OpenStreetMap είναι μια εξαιρετική εναλλακτική λύση – χωρίς εμπορικούς περιορισμούς ή κρυφό κόστος. Ενώ οι Χάρτες Google χρεώνουν τέλη χρήσης API και συλλέγουν δεδομένα χρηστών, το OSM είναι δωρεάν, ανοιχτό και υποστηρίζεται από μια παγκόσμια κοινότητα. Το OSM είναι η Wikipedia του κόσμου των χαρτών – ο καθένας μπορεί να συνεισφέρει, να προσθέσει δρόμους, μονοπάτια πεζοπορίας ή POI (σημεία ενδιαφέροντος) και έτσι να βελτιώσει τον ελεύθερο παγκόσμιο χάρτη.