اوپن استریت مپ یا OSM یا openstreetmap پروژه‌ای مشارکتی برای تولید نقشه‌ای است که به‌رایگان در اختیار همه قرار گیرد و در واقع یک opensource است. ازاین‌جهت آشنایی با OSM می‌تواند آگاهی زیادی برای استفاده از این داده‌ها ایجاد کند.
ایرادی که داده‌های گوگل مپز دارند این است که اختصاصی بوده و دستیابی به آن‌ها به‌شدت دشوار است و معمولاً دسترسی به انواع دیگر داده‌ها با هزینه‌های زیادی همراه خواهد بود.
بنابراین، ما به چیزی احتیاج داشتیم که افراد از سرتاسر دنیا بتوانند آن را ویرایش کنند، و راه‌حل این مشکل OpenStreetMap می‌باشد که مشارکت‌کنندگان را تشویق به ویرایش این “نقشهٔ آزاد” به‌صورت روزانه می‌کند.
ازاین‌رو که “آزاد” فلسفه کلیدی OpenStreetMap می‌باشد، این “آزاد” بودن برای داده‌ها نیز صدق می‌کند؛ بنابراین به شما نشان می‌دهیم که چگونه می‌توانید داده‌های OSM را دانلود کنید (البته که بدون هیچ هزینه‌ای)

دانلود داده‌های OpenStreetMap 

OpenStreetMap مجموعه‌داده‌هایی است که شما به آن نیاز دارید و نمی‌دانستید که در دسترس عموم قرار دارد. این سرویس یکی از دقیق‌ترین منابع اطلاعاتی است که از سیارهٔ ما در دسترس می‌باشد و به طور مداوم توسط افرادی مثل من و شما در حال بروز رسانی شدن است.

اتفاقاً راه‌های متعددی برای دانلود داده‌های OpenStreetMap وجود دارد. حتی یک صفحهٔ ویکی‌پدیای مختص به داده‌های OSM موجود است که کار شما را آسان کرده و تمامی داده‌های OSM را در خود جای‌داده است.

پیشنهاد بنده Geofabric می‌باشد؛ زیرا باتوجه‌به قاره، کشور و سپس استان یا ایالت دسته‌بندی‌شده است. فقط کافی است منطقه جغرافیایی موردنظر خود را پیدا کرده و داده‌های OSM را دانلود کنید

http://download.geofabrik.de
openstreetmap ایران

openstreetmap ایران

راه اندازی نقشه 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 command

docker command

در مرحله یکی مونده به آخر:

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 میتوانید آدرس سروری که داخل آن نصب کرده اید وارد کنید

هورا موفق شدیم:

iran

iran

 

successful

successful