إنشاء خرائط نقطية ومتجهية دون اتصال بالإنترنت
OsmAndMapCreator
يمكن استخدام OsmAndMapCreator لإنشاء أي خرائط يدعمها OsmAnd بنفسك. يمكنك تنزيل أحدث إصدار من الموقع الإلكتروني. يتمتع OsmAndMapCreator بقدرات واجهة المستخدم لإنشاء خرائط نقطية ومتجهية. لإنشاء خريطة متجهية، ستحتاج إلى ملف OSM (*.pbf, *.osm.gz, *.osm.bz2)، ولإنشاء ملف خريطة sqlite عبر الإنترنت، ستحتاج إلى عنوان URL للبلاط الأساسي.
الخرائط النقطية (بسيطة)
بمجرد تحديد البلاط الذي تريد إنشاء خريطة منه في قائمة مصدر البلاط وتم تحميله بنجاح إلى OsmAndMapCreator، يمكنك النقر بزر الماوس الأيمن على المنطقة التي تريد تحميلها مسبقًا. بعد ذلك، يمكنك إنشاء ملف .sqlitedb في مصدر البلاط ← إنشاء قاعدة بيانات sqlite.
لإنشاء خريطة متجهية، ستحتاج إلى ملف OSM (*.pbf, *.osm.gz, *.osm.bz2)، ولإنشاء خريطة sqlite عبر الإنترنت، ستحتاج إلى عنوان URL للبلاط الأساسي.
الخرائط المتجهية (بسيطة)
خطوات إنشاء خريطة متجهية عبر واجهة مستخدم OsmAndMapCreator:
- ملف OSM
- قم بتنزيله من Geofabrik أو تصدير صغير من OpenStreetMap
- تحويل Shapefile إلى OSM
- قم بإنشاء OSM XML بنفسك باستخدام أي أدوات برمجية، يمكنك المتابعة بتحويله إلى تنسيق OBF الذي يمكن لـ OsmAnd فهمه
- حدد مربعات الاختيار سواء كنت تريد إنتاج خرائط تتضمن معلومات العنوان / التوجيه / النقل / بيانات الخريطة
- حدد في ملف ← إنشاء .obf من ملف.
- بمجرد اكتمال العملية، سيكون لديك ملف
.obfفي دليل العمل.
يمكن تحديد المزيد من المعلمات حول كيفية إنشاء الخرائط المتجهية في shell utilities.sh.
الخرائط المتجهية (برنامج نصي shell)
الطريقة الأكثر شيوعًا والأكثر قوة لإنشاء الخرائط التي يستخدمها المطورون هي عبر برنامج shell النصي utilities.sh المضمن في OsmAndMapCreator. كما يحتوي على العديد من طرق الأدوات المساعدة الأخرى لإنشاء بعض الخرائط المخصصة مثل الخريطة الأساسية أو الخريطة بأسماء المناطق وحدودها (regions.ocbf).
مثال على البرنامج النصي:
wget -N http://download.osmand.net/latest-night-build/OsmAndMapCreator-main.zip
wget https://creator.osmand.net/osm-extract/albania_europe/albania_europe.pbf
unzip OsmAndMapCreator-main.zip -d OsmAndMapCreator
OsmAndMapCreator/utilities.sh generate-poi albania_europe.pbf --chars-build-poi-nameindex=3
يستغرق برنامج الإنشاء النصي ملف OSM واحدًا فقط للمعالجة في كل مرة (.pbf, .osm.gz, osm.bz2, .osm) والعديد من المعلمات الاختيارية المحددة كـ --xxxxxx.
| الأمر الرئيسي | الوصف |
|---|---|
generate-obf | ينشئ ملف obf كاملًا بمعلومات الخريطة والعنوان ونقاط الاهتمام والنقل والتوجيه |
generate-obf-no-address | ينشئ ملف obf كاملًا ولكن بدون معلومات العنوان |
generate-address | ينشئ خريطة بمعلومات العنوان فقط |
generate-poi | ينشئ خريطة بمعلومات نقاط الاهتمام فقط |
generate-map | ينشئ خريطة بمعلومات عرض الخريطة فقط |
generate-roads | ينشئ خريطة بمعلومات التوجيه فقط |
يمكن العثور على جميع المعلمات الإضافية في الكود في حال عدم توثيقها بشكل صحيح الأدوات الرئيسية. جميع المعلمات اختيارية!
| المعلمات | الوصف |
|---|---|
--add-region-tags | يبطئ عملية إنشاء الخريطة عن طريق إضافة علامة اسم المنطقة إلى كل طريق حيث تمت معالجته. هذا مطلوب فقط للخريطة الأساسية العالمية أو عند معالجة مناطق متعددة الجنسيات، في جميع الحالات الأخرى من الأسهل أن يكون لديك اسم مناسب لملفك، أي germany_...، us_.... إذا لم يكن لديك هذه المعلمة ولم تحدد هذه المعلمة، فمن المحتمل أن ترى شارات طرق / نقل عام غير مترجمة في OsmAnd. |
--keep-only-sea-objects | يزيل الكائنات التي ليست جزءًا من المحيط / البحر، ويستخدم لإنتاج خريطة بحرية |
--ram-process | يحدد أن الإنشاء سيستخدم قاعدة بيانات RAM SQlite بدلاً من القرص - مزيد من المعلومات. |
--srtm=<FOLDER> | يحدد المجلد الذي يحتوي على صور TIF-DEM، بحيث يتم ترميز معلومات الارتفاع والانحدار في الطرق |
--rendering-types=<FILE> | موقع rendering_types.xml مع القواعد وعلامات OSM التي تحتاج إلى ترميزها في OBF - مزيد من المعلومات. |
--poi-types=<FILE> | موقع poi_types.xml مع القواعد وعلامات OSM التي تحتاج إلى ترميزها في OBF لنقاط الاهتمام - مزيد من المعلومات. |
--extra-relations=<FILE> | ملف OSM يحتوي على مضلعات مثل مناطق الانبعاثات المنخفضة التي يجب نشر علاماتها على الطرق. |
ملاحظة: إنشاء الخرائط باستخدام batch.xml قديم، يرجى استخدام طرق shell المذكورة أعلاه والجمع مع التنزيلات / دورات for باستخدام قدرات برنامج shell النصي القياسي.
ذاكرة الوصول العشوائي لمعالجة الخرائط
يتطلب إنشاء الخرائط الكثير من الذاكرة وكثافة في الإدخال/الإخراج. بعبارة أخرى: يستغرق وقتًا طويلاً جدًا وقد ينفد من الذاكرة! يرجى التحقق من الإنشاء على الخرائط الصغيرة أولاً. لإعطاء المزيد من الذاكرة لـ JVM، يمكنك الإعلان عن متغير البيئة JAVA_OPTS.
export JAVA_OPTS="-Xms256M -Xmx6400M"
OsmAndMapCreator/utilities.sh generate-obf ....
ما الذي يمكنك فعله لتحسين الأداء:
- استخدم أقراص SSD.
- استخدم أقراص متعددة.
- استخدم المعالجة "في الذاكرة".
إذا كنت ترغب في تجنب استخدام مساحة القرص واستخدام ذاكرة الوصول العشوائي فقط لتسريع العملية - حدد معلمة
--ram-process. ستسرع هذه المعالجة "في الذاكرة" من إنشاء الخريطة بنسبة 10-50%، ولكنها تتطلب الكثير من الذاكرة. تعتمد نسبة 10% إلى 50% على حجم الخريطة. تستفيد الخرائط الأصغر حجمًا بشكل أقل من المعالجة في الذاكرة مقارنة بالخرائط الأكبر حجمًا، حيث يلعب الوصول إلى القرص للقراءة الأولية وكتابة الخريطة النهائية دورًا أكبر، بينما تتطلب الخرائط الأكبر حجمًا "حسابات" أكثر.
في المعالجة العادية "على القرص"، يتم إنشاء ملف nodes.tmp.odb من ملف .osm أو .osm.pbf. ملف nodes.tmp.odb هذا هو ملف قاعدة بيانات sqlite وهو أكبر بحوالي 15 إلى 25 مرة من ملف .osm.pbf الأصلي الذي قمت بتنزيله من geofabrik.de. لذا إذا كان ملف .osm.pbf الأصلي الخاص بك 300 ميجابايت، فسيكون ملف nodes.tmp.odb الخاص بك من 5 جيجابايت إلى 6 جيجابايت! لاحظ أن الخرائط الأصغر ستكون حوالي 15 ضعفًا بينما ستنتهي الخرائط الكبيرة (>350 ميجابايت) بزيادة مساحة تتراوح من 20 ضعفًا إلى 25 ضعفًا.
مع المعالجة "في الذاكرة"، سيتم إنشاء ملف nodes.tmp.odb هذا في ذاكرة العمل الخاصة بك. ستحتاج إلى "حجم nodes.tmp.odb" + 20-25%. يرجى ملاحظة أنك لا تحتاج إلى زيادة معلمة -Xmx لأن SQLite في الذاكرة لن يشغل ذاكرة JVM وسيستخدم ذاكرة التشغيل الأصلية فقط.
مثال: لملف .osm.pbf بحجم 250 ميجابايت، سيتم إنشاء ملف nodes.tmp.odb بحجم ~4.5 جيجابايت.
خريطة متجهية مخصصة (علامات)
يعتمد عرض OsmAnd والبحث عن نقاط الاهتمام على المعلومات المكتوبة في OBF. لها بنية مختلفة عن تنسيقات OSM الأخرى ومُحسّنة للاستخدام على الأجهزة المحمولة. يمكنك فحص المحتويات باستخدام مفتش ثنائي. أهم 3 أجزاء من ملف OBF هي:
- قسم الخريطة المستخدم لعرض الخريطة والمحدد بواسطة أنواع العرض
- قسم نقاط الاهتمام المستخدم للبحث عن نقاط الاهتمام ومعلومات الكائن والمحدد بواسطة أنواع نقاط الاهتمام
- قسم التوجيه المستخدم للتوجيه والمحدد بواسطة أنواع التوجيه - نفس الملف مثل أنواع العرض ولكن له قسم خاص به
<category name="routing"> - routing_type.
يمكن تجاوز rendering_types.xml و poi_types.xml أثناء عملية إنشاء الخريطة في إعدادات واجهة مستخدم OsmAndMapCreator أو كمعلمات سطر الأوامر --rendering-types=<path>، --poi-types==<path> إلى utilities.sh generate-obf (المضمنة مع OsmAndMapCreator).
- يتم تسجيل نوع كائن الخريطة الرئيسي (
<type tag="abandoned:highway" value="track" minzoom="13"/>) لكل كيان OSM (عقدة أو طريق أو مضلع متعدد). يمكن أن يكون هناك العديد من الأنواع الرئيسية المسجلة لكل كيان واحد (مثل الطريق + الترام + مسار الحافلة)، وستقوم علامةorderبفرز الأنواع داخل الكيان. - نوع كائن الخريطة الإضافي (
<type tag="service" value="driveway" minzoom="13" additional="true"/>) هو معلومات إضافية مرفقة لكيان OSM، لذلك في حالة عدم تسجيل كيان OSM بنوع رئيسي، فلن يتم تخزينه داخل OBF. عادةً ما يخزن معلومات لعرض ميزات إضافية مثل اللون والنعومة. - نوع كائن خريطة النص (
<type tag="int_ref" additional="text" minzoom="1" order="32"/>)، يخزن معلومات نصية حول الكائن بحيث يمكن عرضها لاحقًا على الخريطة. - تمثل
entity_convertنصوص تحويل علامات بسيطة (<entity_convert pattern="tag_transform" from_tag="bridge" if_tag1="highway" if_value1="proposed" routing="no"/>). غالبًا ما تستخدم لدمج العلامات في أنواع محددة، بحيث يكون من الأسهل عرضها بنمط عرض مخصص. كما يسمح بإجراء تحويل علامات خاص بالمنطقة ويسمح بعرض ميزات مختلفة لكل بلد. - نشر علامة العلاقة. لا يقوم OsmAnd بفهرسة كائنات العلاقة (باستثناء المضلعات المتعددة - المخزنة ككائنات منطقة) ولكنه يسمح بنشر العلامات من العلاقة إلى الأعضاء. من الواضح أن عضوًا واحدًا يمكن أن يكون له علاقات أصل متعددة وقد تحدث تعارضات في العلامات. يدعم OsmAnd 3 طرق للتعامل مع التعارضات:
- دمج جميع العلامات كسطر طويل مفصول بفاصلات (جيد لعرض أسماء مسارات الحافلات كسلسلة طويلة على الطريق -
nameTags،namePrefix). - فرز القيم والاحتفاظ بأعلى قيمة (جيد لعرض المسارات المحلية مقابل الدولية -
relationGroupSort،additionalTags،additionalNamePrefix). - ينشئ علامات فريدة لكل علاقة (غير مستخدمة حاليًا ولكنها تخزن المعلومات دون فقدان -
relationGroupNameTags،relationGroupAdditionalTags،relationGroupPrefix). مزيد من المعلومات يمكنك العثور عليها في أنواع العرض.
- دمج جميع العلامات كسطر طويل مفصول بفاصلات (جيد لعرض أسماء مسارات الحافلات كسلسلة طويلة على الطريق -
اقرأ المزيد: عادةً ما يتم دمج الخرائط المتجهية المخصصة مع نمط عرض مخصص.
الخرائط النقطية (متقدمة)
OSM هي قاعدة بيانات كبيرة للخرائط، ولكنها لا تحتوي دائمًا على المعلومات التي تحتاجها (على سبيل المثال، حول الصحاري). أحيانًا يمكنك الحصول على المعلومات التي تحتاجها من مصادر أخرى، مثل الخرائط الورقية أو صور الأقمار الصناعية.
هناك برامج خاصة لإعداد وتحويل ومعايرة أي خرائط مصدر (خرائط بتنسيق صور، تنسيق pdf، خرائط نقطية عبر الإنترنت) إلى خرائط OsmAnd عبر الإنترنت.
حول بعضها أدناه.
موباك
Mobile Atlas Creator (MOBAC) هو برنامج مفتوح المصدر (GPL) لإنشاء أطالس غير متصلة بالإنترنت. يمكن لـ Mobile Atlas Creator استخدام عدد كبير من الخرائط المختلفة عبر الإنترنت، مثل OpenStreetMap ومقدمي الخرائط الآخرين، كمصدر لإنشاء أطلس غير متصل بالإنترنت.
ما عليك سوى تنزيل البرنامج، ثم تشغيله.
في مربع حوار اختيار التنسيق، اختر OsmAnd SQLite أو OsmAnd tile storage. SQLite هو ملف واحد يحتوي على المنطقة المحددة بينما البلاط هو قطع منفصلة من الخريطة مجمعة على جهازك. غالبًا ما يكون SQLite أكثر ملاءمة لأنه يتم تخزينه في مكان واحد ويشغل مساحة تخزين أقل.
اختر مصدر الخريطة ومستويات التكبير/التصغير والميزات الأخرى. حدد منطقة، ثم اختر القائمة تحديد -> إضافة تحديد.
بعد ذلك، يمكنك إنشاء ملف SQLite الخاص بك: "أطلس" -> "إنشاء أطلس".
MAPC2MAPC
MAPC2MAPC هو برنامج يعمل بنظام Windows لمعالجة الخرائط الرقمية وتحويلها بين المنصات والبرامج المختلفة.
على سبيل المثال، يمكنك تحويل ومعايرة أي تنسيق صورة وخرائط PDF إلى خريطة OsmAnd عبر الإنترنت.
فيديو تعليمي لاستخدام البرنامج.
SASPlanet
SASPlanet هو برنامج مجاني ومفتوح المصدر للملاحة مع القدرة على عرض وتنزيل الخرائط وصور الأقمار الصناعية للأرض من خدمات متنوعة عبر الإنترنت إلى خريطة OsmAnd عبر الإنترنت.
تنزيل البرنامج، دليل باللغة الإنجليزية.
ملفات PDF أو TIFF ذات الموقع الجغرافي
كيفية تحويل ملفات pdf/tif/tiff ذات الموقع الجغرافي إلى OsmAnd SQLitedb في Windows. يمكن إجراء تحديد الموقع الجغرافي لملفات tif/tiff و pdf بسهولة تامة في QGIS.
- تثبيت وتشغيل OSGeo4W
OSGeo4W هو توزيع ثنائي لمجموعة واسعة من برامج نظم المعلومات الجغرافية مفتوحة المصدر لنظام Windows. يتضمن QGIS و GDAL/OGR و GRASS بالإضافة إلى العديد من الحزم الأخرى (أكثر من 150). قم بتنزيل وتشغيل OSGeo4W مثبت الشبكة.
الآن، من قائمة ابدأ، قم بتشغيل OSGeo4W Shell. يجب أن يبدأ في الدليل الافتراضي C:\OSGeo4W. إما انتقل إلى مجلد العمل الخاص بك (أو يمكنك فقط استخدام C:\OSGeo4W لهذا الغرض).
- تحويل tif/pdf إلى mbtiles
لتحويل tif/pdf إلى mbtiles قم بتشغيل (استبدال أسماء ملفات tif/pdf و mbtiles عند الضرورة):
gdal_translate -co "ZLEVEL=9" -of mbtiles map_1.tif map_1.mbtiles --config gdal_pdf_dpi 600
gdaladdo -r nearest map_1.mbtiles
يسمح الأمر الأول لـ GDAL بتحديد أقصى تكبير يمكنه إنشاؤه بناءً على دقة الصورة. ويقوم بتحويل ملف tif/pdf إلى mbtiles بدقة DPI محددة. لا تتردد في اللعب بهذا الإعداد، ولكن كن حذرًا لأن قيم DPI العالية ستجعل عملية التحويل طويلة جدًا وحجم الملف الناتج كبيرًا جدًا.
يسمح الأمر الثاني لـ GDAL بتحديد وإنشاء مستويات التكبير الأقل بناءً على مستوى التكبير الأقصى الموجود بالفعل. ليس من غير المألوف أن تستغرق هذه الأوامر بعض الوقت لإكمالها.
- تثبيت بايثون من متجر مايكروسوفت
ربما أسهل طريقة هي التوجه إلى متجر مايكروسوفت.
إذا حدث هذا الخطأ أثناء محاولة تنفيذ برنامج بايثون النصي في الخطوة التالية:
Traceback (most recent call last):
File <console>, line 1, in <module>
ImportError: No module named PIL
ثم في PowerShell، قم بتشغيل الأمر التالي:
pip install Pillow
- تحويل تنسيق mbtiles إلى sqlitedb (مناسب لـ OsmAnd و RMaps)
ستجد برنامج Python النصي mbtiles2osmand.py على GitHub. قم بتنزيله إلى مجلد العمل الخاص بك وقم بتشغيل موجه الأوامر أو PowerShell.
الاستخدام:
python3_ mbtiles2osmand.py [-h] [-f] [--jpg JPEG_QUALITY] input output
الوسائط الموضعية:
input ملف الإدخال
output ملف الإخراج
الوسائط الاختيارية:
-h, --help إظهار رسالة المساعدة هذه والخروج
-f, -force تجاوز ملف الإخراج إذا كان موجودًا
--jpg JPEG_QUALITY تحويل البلاط إلى JPEG بجودة محددة
أمثلة:
بسيط:
python3 mbtiles2osmand.py input.mbtiles output.sqlitedb
تحويل البلاط إلى jpeg مع الضغط:
python3 mbtiles2osmand.py --jpg 75 input.mbtiles output.sqlitedb
- انسخ ملف .sqlitedb إلى OsmAnd
الآن يجب أن يكون لديك ملف .sqlitedb جاهزًا في مجلد العمل الخاص بك. انسخه إلى مجلد OsmAnd المناسب واستخدمه كخريطة رئيسية أو خريطة تحتية أو خريطة متراكبة. راجع دليل المستخدم لمزيد من التفاصيل. انتهى!
- (اختياري) دمج ملفات osmand متعددة في ملف واحد
إذا كنت بحاجة إلى ذلك، يمكنك العثور على ملف البرنامج النصي unite_osmand.py على GitHub. مرة أخرى - قم بتنزيله إلى مجلد العمل الخاص بك وقم بتشغيل موجه الأوامر أو PowerShell.
الاستخدام:
python3 unite_osmand.py [-h] [-f] input [input ...] output
الوسائط الموضعية:input ملفات الإدخال. إذا كانت ملفات متعددة تح توي على بلاط بنفس الإحداثيات، فسيتم استخدام البلاط من الملف الأول (من قائمة الوسائط)
output ملف الإخراج
الوسائط الاختيارية:-h, --help إظهار رسالة المساعدة هذه والخروج
-f, -force تجاوز ملف الإخراج إذا كان موجودًا
- إضافي: تحويل ملف GeoPDF واحد إلى GeoTIFF
إذا كنت ترغب، لأي سبب من الأسباب، في تحويل ملف geopdf واحد إلى geotiff، فاستخدم أمر gdal_translate وأدخل معلماتك الخاصة حيثما يشار إليها بـ < >. يمكنك استخدام gdal_translate بمعلمات اختيارية أو بدونها. قد يستغرق الأمر وقتًا طويلاً للمعالجة وقد يكون ملف tiff الناتج كبيرًا جدًا خاصة عند تضمين الصور الجوية والتضاريس المظللة. لذلك، قد يكون من الجيد استبعاد بعض طبقات PDF (انظر المثال الثاني).
الاستخدام:
gdal_translate <GeoPDF filename> <Output Geotiff Filename> -of gtiff --config
gdal_pdf_layers_off “<pdf layername 1>,<pdf layername 2>,<pdf layername 3>” --config gdal_pdf_dpi <output dpi>
أمثلة:
تحويل ملف pdf بجميع طبقاته إلى geotiff بدقة DPI الافتراضية:
gdal_translate geo_sample_map.pdf output_sample_map.tif -of gtiff
استبعاد عدة طبقات من التحويل بواسطة معلمة gdal_pdf_layers_off متبوعة بقائمة من أسماء الطبقات المفصولة بفاصلات. ملف الإخراج هو geotiff، بدقة 600 DPI محددة:
gdal_translate geo_sample_map.pdf output_sample_map.tif -of gtiff --config gdal_pdf_layers_off “Map_Collar, Map_Frame.Projections_and_Grids, Map_Frame.Terrain.Shaded_Relief, Images.Orthoimage” --config gdal_pdf_dpi 600
- المصادر:
- Gdal2mbtiles (للمرجع فقط)،
- كيفية تحويل geopdf إلى geotiff باستخدام GDAL،
- انظر أيضًا إنشاء خرائط متراكبة لـ OsmAnd على Linux.
المشكلات الشائعة
مشكلة OutOfMemoryError
المشكلة: يفشل OsmAndMapCreator برسالة - OutOfMemoryError.
الملف الذي تحاول معالجته باستخدام OsmAndMapCreator كبير جدًا. حاول إما معالجة ملف أصغر، أو زيادة الذاكرة لـ OsmAndMapCreator في ملف .sh أو .bat. تحدد معلمة -Xmx مقدار الذاكرة التي يمكن للبرنامج استهلاكها. يمكن أن تختلف الإعدادات لأجهزة 64 بت (أكثر من 1.5 جيجابايت) و 32 بت (بحد أقصى حوالي 1.5 جيجابايت).
مشكلة الملف الفارغ
المشكلة: بعد تحويل ملف .osm إلى .obf مع فهرس POI فقط، يكون ملف .obf فارغًا، على الرغم من أن ملف .osm الأصلي يحتوي على POI.
قد يكون هناك علامة حاسمة مفقودة لـ OsmAndMapCreator للتعرف على POI عند تحويل ملف osm من مصدر آخر، مثل Garmin. إذا كانت النقطة في ملف OSM تبدو كالتالي:
<node id='-24' visible='true' lat='1.3094000' lon='103.7784000'>
<tag k='created_by' v='GPSBabel-1.4.2'/>
<tag k='name' v='Street-Soccer Court'/>
</node>
قم بتغييرها لتت ضمن علامة "amenity" إضافية، مثل:
<node id='-24' visible='true' lat='1.3094000' lon='103.7784000'>
<tag k='created_by' v='GPSBabel-1.4.2'/>
<tag k='name' v='Street-Soccer Court'/>
<tag k='amenity' v='point' />
</node>
ثم قم بتحويل الملف باستخدام OsmAndMapCreator. يمكنك التحقق من موقع OSM لمعرفة العلامات الجيدة للاستخدام ويمكنك أيضًا التحقق من العلامات المدعومة بواسطة OsmAnd.