اوپن استریت مپ یا OSM یا openstreetmap پروژهای مشارکتی برای تولید نقشهای است که بهرایگان در اختیار همه قرار گیرد و در واقع یک opensource است. ازاینجهت آشنایی با OSM میتواند آگاهی زیادی برای استفاده از این دادهها ایجاد کند.
ایرادی که دادههای گوگل مپز دارند این است که اختصاصی بوده و دستیابی به آنها بهشدت دشوار است و معمولاً دسترسی به انواع دیگر دادهها با هزینههای زیادی همراه خواهد بود.
بنابراین، ما به چیزی احتیاج داشتیم که افراد از سرتاسر دنیا بتوانند آن را ویرایش کنند، و راهحل این مشکل OpenStreetMap میباشد که مشارکتکنندگان را تشویق به ویرایش این “نقشهٔ آزاد” بهصورت روزانه میکند.
ازاینرو که “آزاد” فلسفه کلیدی OpenStreetMap میباشد، این “آزاد” بودن برای دادهها نیز صدق میکند؛ بنابراین به شما نشان میدهیم که چگونه میتوانید دادههای OSM را دانلود کنید (البته که بدون هیچ هزینهای)
دانلود دادههای OpenStreetMap
OpenStreetMap مجموعهدادههایی است که شما به آن نیاز دارید و نمیدانستید که در دسترس عموم قرار دارد. این سرویس یکی از دقیقترین منابع اطلاعاتی است که از سیارهٔ ما در دسترس میباشد و به طور مداوم توسط افرادی مثل من و شما در حال بروز رسانی شدن است.
اتفاقاً راههای متعددی برای دانلود دادههای OpenStreetMap وجود دارد. حتی یک صفحهٔ ویکیپدیای مختص به دادههای OSM موجود است که کار شما را آسان کرده و تمامی دادههای OSM را در خود جایداده است.
پیشنهاد بنده Geofabric میباشد؛ زیرا باتوجهبه قاره، کشور و سپس استان یا ایالت دستهبندیشده است. فقط کافی است منطقه جغرافیایی موردنظر خود را پیدا کرده و دادههای OSM را دانلود کنید
http://download.geofabrik.de
راه اندازی نقشه OpenStreetMap با داکر
برای راه اندازی نقشه ابتدا داکر را نصب کرده و مراحل زیر را طی می کنیم
docker pull overv/openstreetmap-tile-server
سپس نقشه ایران را دانلود می کنیم:
http://download.geofabrik.de/asia/iran-latest.osm.pbf
در مرحله بعدی
docker volume create osm-data
گام بعدی
docker run -v C:\Users\rezalie\Downloads\iran-latest.osm.pbf:/data/region.osm.pbf -v osm-data:/data/database/ overv/openstreetmap-tile-server import
بعد از اجرای دستور بالای یکسری متن میادو میره مثل هکرها
در مرحله یکی مونده به آخر:
docker run -p 8080:80 -v osm-data:/data/database/ -d overv/openstreetmap-tile-server run
برای نمایش tileهای نقشه می تونید از کد زیر استفاده کنید:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" />
<style>
html, body {
height: 100%;
padding: 0;
margin: 0;
}
#map {
/* configure the size of the map */
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
// initialize Leaflet
var map = L.map('map').setView({lon: 0, lat: 0}, 2);
// add the OpenStreetMap tiles
L.tileLayer('http://localhost:8080/tile/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '© <a href="https://openstreetmap.org/copyright">OpenStreetMap contributors</a>'
}).addTo(map);
// show the scale bar on the lower left corner
L.control.scale({imperial: true, metric: true}).addTo(map);
// show a marker on the map
L.marker({lon: 0, lat: 0}).bindPopup('The center of the world').addTo(map);
</script>
</body>
</html>
پ ن :
به جای http://localhost:8080 میتوانید آدرس سروری که داخل آن نصب کرده اید وارد کنید
هورا موفق شدیم: