Imposm هو مستورد لبيانات OpenStreetMap. يقرأ ملفات PBF ويستورد البيانات إلى PostgreSQL/PostGIS. يمكنه أيضًا تحديث قاعدة البيانات تلقائيًا بأحدث التغييرات من OSM.
إنه مصمم لإنشاء قواعد بيانات تم تحسينها للعرض (أي إنشاء المربعات أو لخدمات WMS).
تمت كتابة Imposm >=3 بلغة Go وهي إعادة كتابة كاملة لتطبيق Python السابق. التكوينات/التعيينات وملفات ذاكرة التخزين المؤقت غير متوافقة مع Imposm 2، لكنها تشترك في بنية مماثلة.
تطوير Imposm برعاية Omniscale.
Imposm قيد الاستخدام في الإنتاج من قبل المؤلفين. تتم صيانته بشكل نشط، مع التركيز على حل حالات عدم التوافق المستقبلية مع التبعيات مثل PostGIS. ومع ذلك، لا توجد قدرة على دعم المستخدم النهائي، ولن يتم تطوير أي ميزات جديدة تتجاوز نطاقها الحالي.
الأداء العالي: بالتوازي من الألف إلى الياء. يقوم بتوزيع التحليل والمعالجة على جميع مراكز وحدة المعالجة المركزية المتاحة.
مخططات قاعدة البيانات المخصصة: إنشاء جداول لأنواع البيانات المختلفة. يتيح ذلك تصميمًا أسهل وأداء أفضل للعرض في WMS أو خدمات التجانب.
توحيد القيم: على سبيل المثال، تصبح القيم المنطقية 1
و on
و true
و yes
كلها TRUE
.
التصفية حسب العلامات والقيم: قم فقط باستيراد البيانات التي ستعرضها/تستخدمها.
ذاكرة تخزين مؤقت فعالة للعقد: من الضروري تخزين جميع العقد لبناء الطرق والعلاقات. يستخدم Imposm قاعدة بيانات ذات قيمة أساسية قائمة على الملفات لتخزين هذه البيانات مؤقتًا.
الجداول المعممة: يتم إنشاء الجداول تلقائيًا ذات دقة مكانية أقل، مما يجعلها مثالية لعرض شبكات الطرق الكبيرة بدقة منخفضة.
الحد من المضلعات: قصر الأشكال الهندسية المستوردة على المضلعات من GeoJSON، لواردات المدينة/الولاية/البلد.
سهولة النشر: ثنائي واحد مع تبعيات وقت التشغيل فقط للمكتبات الشائعة (GEOS وLevelDB).
تحديثات OSM التلقائية: تتضمن خدمة الخلفية ( imposm run
) التي تقوم تلقائيًا بتنزيل واستيراد أحدث تغييرات OSM.
علاقات المسار: استيراد جميع أنواع العلاقات بما في ذلك المسارات.
دعم مساحة اسم الجدول (مخطط PostgreSQL)
COPY FROM
يستغرق الاستيراد في وضع الفرق على خادم Hetzner AX102 (AMD Ryzen 9 7950X3D وذاكرة وصول عشوائي سعة 256 جيجابايت وتخزين NVMe) لكوكب PBF سعة 78 جيجابايت (29-01-2024) مع الجداول المعممة والمؤشرات المكانية، وما إلى ذلك حوالي 7:30 ساعة. هذا للاستيراد الجاهز للتحديثات الدقيقة. الوضع غير المختلف أسرع.
من المستحسن أن يكون حجم ذاكرة الخادم ضعف حجم مستخلص PBF الذي تقوم باستيراده تقريبًا. على سبيل المثال: يجب أن يكون لديك ذاكرة وصول عشوائي (RAM) تبلغ 192 غيغابايت أو أكثر لملف كوكبي حالي (2024) بسعة 78 غيغابايت، و8 غيغابايت لمستخرج إقليمي بسعة 4 غيغابايت، وما إلى ذلك. ستستغرق عمليات الاستيراد باستخدام الأقراص الدوارة وقتًا أطول بكثير ولا يوصى بها.
الإصدارات الثنائية متاحة على GitHub.
هذه الإصدارات مخصصة لنظام التشغيل x86 64bit Linux ولا تتطلب أي تبعيات أخرى. قم بالتنزيل وفك الحظر وبدء imposm
. الثنائيات متوافقة مع Debian 10 والتوزيعات الأخرى اعتبارًا من عام 2022 أو الأحدث. يمكنك البناء من المصدر إذا كنت بحاجة إلى دعم التوزيعات الأقدم.
هناك بعض التبعيات:
أنت بحاجة للذهاب. يوصى بـ 1.17 أو أعلى.
التبعيات الأخرى هي libleveldb و libgeos. تم اختبار Imposm مع الإصدارات الحديثة من هذه المكتبات، ولكن قد تنجح مع الإصدارات الأقدم. يوصى باستخدام GEOS >=3.2، لأنه أصبح أكثر قوة عند التعامل مع الأشكال الهندسية غير الصالحة.
أسرع طريقة لتثبيت Imposm هي الاتصال بـ:
go install github.com/omniscale/imposm3/cmd/imposm@latest
سيؤدي هذا إلى تنزيل Imposm وتجميعه وتثبيته على ~/go/bin/imposm
. يمكنك تغيير الموقع عن طريق ضبط بيئة GOBIN
.
الطريقة الموصى بها للتثبيت هي:
git clone https://github.com/omniscale/imposm3.git
cd imposm3
make build
سوف يقوم make build
ببناء Imposm في المسار المحلي الخاص بك وسيضيف معلومات الإصدار إلى ملفك الثنائي.
يمكنك أيضًا استخدام go مباشرةً لإنشاء أو تثبيت imposm باستخدام go build ./cmd/imposm
. ومع ذلك، لن يؤدي هذا إلى تعيين معلومات الإصدار.
يقوم Go بالتجميع إلى الثنائيات الثابتة وبالتالي لا يوجد لدى Imposm أي تبعيات وقت تشغيل لـ Go. ما عليك سوى نسخ ملف imposm
الثنائي إلى الخادم الخاص بك للنشر. لا تزال مكتبات C/C++ المذكورة أعلاه مطلوبة.
راجع أيضًا packaging.sh
للحصول على إرشادات حول كيفية إنشاء حزم ثنائية لنظام التشغيل Linux.
للحصول على أداء أفضل يجب عليك استخدام LevelDB >1.21. لا يزال بإمكانك الإنشاء بدعم للإصدار 1.21 من خلال go build -tags="ldbpre121"
أو LEVELDB_PRE_121=1 make build
.
imposm
لديه أوامر فرعية متعددة. استخدم imposm import
للواردات الأساسية.
لاستيراد بسيط:
imposm import -connection postgis://user:password@host/database
-mapping mapping.json -read /path/to/osm.pbf -write
أنت بحاجة إلى ملف JSON مع تعيين قاعدة البيانات الهدف. راجع example-mapping.json
للحصول على فكرة عما يمكن تحقيقه من خلال التعيين.
يقوم Imposm بإنشاء كافة الجداول الجديدة داخل مخطط جدول import
. لذلك سيكون لديك import.osm_roads
وما إلى ذلك. يمكنك تغيير الجداول إلى المخطط public
:
imposm import -connection postgis://user:passwd@host/database
-mapping mapping.json -deployproduction
يمكنك كتابة بعض الخيارات في ملف تكوين JSON:
{
"cachedir": "/var/local/imposm",
"mapping": "mapping.json",
"connection": "postgis://user:password@localhost:port/database"
}
لاستخدام هذا التكوين:
imposm import -config config.json [args...]
لمزيد من الخيارات انظر:
imposm import -help
ملاحظة: يتم تعطيل دعم TLS/SSL افتراضيًا بسبب نقص دعم إعادة التفاوض في تنفيذ TLS الخاص بـ Go. يمكنك إعادة تمكين التشفير عن طريق تعيين متغير البيئة PGSSLMODE
أو خيار اتصال sslmode
require
أو verify-full
، على سبيل المثال: -connect postgis://host/dbname?sslmode=require
. ستحتاج إلى تعطيل دعم إعادة التفاوض على الخادم الخاص بك لمنع حدوث أخطاء في الاتصال عند عمليات الاستيراد الأكبر حجمًا. يمكنك القيام بذلك عن طريق تعيين ssl_renegotiation_limit
على 0 في تكوين خادم PostgreSQL الخاص بك.
يمكن العثور على أحدث الوثائق هنا: http://imposm.org/docs/imposm3/latest/
توجد قائمة بريدية في مجموعات Google لجميع الأسئلة. يمكنك الاشتراك عن طريق إرسال بريد إلكتروني إلى: [email protected]
للحصول على الدعم التجاري، اتصل بـ Omniscale.
كود المصدر متاح على: https://github.com/omniscale/imposm3/
يمكنك الإبلاغ عن أي مشكلات على: https://github.com/omniscale/imposm3/issues
تم إصدار Imposm كمصدر مفتوح بموجب ترخيص Apache 2.0. انظر الترخيص.
يتم إصدار جميع التبعيات المضمنة في كود المصدر بموجب ترخيص BSD-ish. راجع LICENSE.dep.
يتم إصدار جميع التبعيات المضمنة في الإصدارات الثنائية بموجب ترخيص BSD-ish باستثناء حزمة GEOS. يتم إصدار حزمة GEOS باسم LGPL3 ويتم ربطها ديناميكيًا. راجع LICENSE.bin.
لتشغيل جميع اختبارات الوحدة:
make test-unit
هناك اختبار للنظام يقوم باستيراد وتحديث بيانات OSM والتحقق من محتوى قاعدة البيانات. تحتاج إلى osmosis
لإنشاء ملفات PBF للاختبار. يوجد ملف Makefile يقوم بإنشاء جميع ملفات الاختبار إذا لزم الأمر ثم يقوم بتشغيل الاختبار نفسه.
make test
اتصل make test-system
لتخطي اختبارات الوحدة.
تحذير: يستخدم قاعدة بيانات PostgreSQL المحلية الخاصة بك (مخطط imposm_test_import
و imposm_test_production
و imposm_test_backup
). قم بتغيير قاعدة البيانات باستخدام متغيرات البيئة القياسية PGDATABASE
و PGHOST
وما إلى ذلك.