طريقة سريعة لتحميل ملف العنوان الوطني المرمز جغرافيًا لأستراليا (GNAF) والحدود الإدارية الأسترالية في Postgres، وهي طريقة مبسطة وجاهزة للاستخدام كبيانات مرجعية للترميز الجغرافي والتحليل والتصور والتجميع.
قم بإلقاء نظرة على شرائح المقدمة هذه (PDF)، بالإضافة إلى صفحة data.gov.au.
قم بتشغيل البرنامج النصي Load-gnaf Python وقم ببناء قاعدة البيانات بنفسك في خطوة واحدة
اسحب قاعدة البيانات من Docker Hub وقم بتشغيلها في حاوية
قم بتنزيل ملفات تفريغ GNAF و/أو Admin Bdys Postgres واستعادتها في قاعدة بيانات Postgres 14+ الخاصة بك
استخدم أو قم بتنزيل Geoparquet وParquet Files في S3 لسير عمل البيانات والتحليلات الخاصة بك؛ سواء في AWS أو النظام الأساسي الخاص بك.
يستغرق تشغيل البرنامج النصي Python من 30 إلى 120 دقيقة على خادم Postgres الذي تم تكوينه للاستفادة من ذاكرة الوصول العشوائي المتوفرة.
يمكنك معالجة إصدار البيانات GDA94 أو GDA2020 - فقط تأكد من تنزيل نفس الإصدار لكل من GNAF والحدود الإدارية. إذا كنت لا تعرف ما هو GDA94 أو GDA2020، فقم بتنزيل إصدارات GDA94 (لمعلوماتك - فهي أنظمة إحداثيات مختلفة)
للحصول على وقت تحميل جيد، ستحتاج إلى تهيئة خادم Postgres الخاص بك لتحقيق الأداء. يوجد دليل جيد هنا، مع الإشارة إلى أنه عمره بضع سنوات ويمكن تعزيز بعض معلمات الذاكرة إذا كان لديك ذاكرة الوصول العشوائي (RAM).
Postgres 14.x وما فوق مع PostGIS 3.2+
أضف دليل Postgres bin إلى PATH لنظامك
بايثون 3.6+ مع Psycopg 3.x
قم بتنزيل Geoscape GNAF من data.gov.au (GDA94 أو GDA2020)
قم بتنزيل الحدود الإدارية Geoscape من data.gov.au ( قم بتنزيل إصدار ESRI Shapefile (GDA94 أو GDA2020) )
قم بفك ضغط GNAF إلى دليل على خادم Postgres الخاص بك
قم بفك ضغط Admin Bdys إلى دليل محلي
قم بتغيير الأمان في تلك الدلائل لمنح Postgres حق الوصول للقراءة
إنشاء قاعدة البيانات الهدف (إذا لزم الأمر)
أضف PostGIS إلى قاعدة البيانات (إذا لزم الأمر) عن طريق تشغيل SQL التالي: CREATE EXTENSION postgis
تحقق من الوسائط المتاحة والمطلوبة عن طريق تشغيل Load-gnaf.py باستخدام الوسيطة -h
(راجع أمثلة سطر الأوامر أدناه)
قم بتشغيل البرنامج النصي، ثم عد خلال 30-120 دقيقة واستمتع!
يمكن التحكم في سلوك أداة تحميل gnaf عن طريق تحديد خيارات سطر الأوامر المتنوعة للبرنامج النصي. الحجج المدعومة هي:
--gnaf-tables-path
يحدد المسار إلى ملفات GNAF PSV المستخرجة. يجب أن يكون هذا الدليل قابلاً للوصول بواسطة خادم Postgres ، وقد يلزم تعيين المسار المحلي المقابل للخادم إلى هذا الدليل عبر الوسيطة local-server-dir
--local-server-dir
يحدد المسار المحلي على خادم Postgres المطابق لـ gnaf-tables-path
. إذا كان الخادم يعمل محليًا، فيمكن حذف هذه الوسيطة.
--admin-bdys-path
يحدد المسار إلى ملفات حدود مسؤول Shapefile المستخرجة. على عكس gnaf-tables-path
، ليس من الضروري أن يكون هذا المسار متاحًا لخادم Postgres البعيد.
--pghost
اسم المضيف لخادم Postgres. هذا الإعداد الافتراضي هو متغير البيئة PGHOST
إذا تم تعيينه، وإلا فإن الإعداد الافتراضي هو localhost
.
--pgport
رقم المنفذ لخادم Postgres. هذا هو الإعداد الافتراضي لمتغير البيئة PGPORT
إذا تم تعيينه، وإلا 5432
.
--pgdb
اسم قاعدة البيانات لخادم Postgres. هذا هو الإعداد الافتراضي لمتغير البيئة PGDATABASE
إذا تم تعيينه، وإلا فإن geoscape
.
--pguser
اسم المستخدم للوصول إلى خادم Postgres. هذا الإعداد الافتراضي هو متغير البيئة PGUSER
إذا تم تعيينه، وإلا فإن postgres
.
--pgpassword
كلمة المرور للوصول إلى خادم Postgres. هذا الإعداد الافتراضي هو متغير البيئة PGPASSWORD
إذا تم تعيينه، وإلا فإن password
.
--srid
يضبط النظام الإحداثي لبيانات الإدخال. القيم الصالحة هي 4283
(الافتراضي: GDA94 خطوط العرض/الطول) و 7844
(GDA2020 خطوط العرض/الطول).
--geoscape-version
رقم إصدار Geoscape بتنسيق YYYYMM. الإعدادات الافتراضية للسنة الحالية وشهر الإصدار الأخير. على سبيل المثال 202408
.
--previous-geoscape-version
رقم إصدار إصدار Geoscape السابق كـ YYYYMM؛ تستخدم لمقارنة ضمان الجودة. على سبيل المثال 202405
.
--raw-gnaf-schema
اسم المخطط لتخزين جداول GNAF الأولية فيها. القيمة الافتراضية هي raw_gnaf_
.
--raw-admin-schema
اسم المخطط لتخزين جداول حدود المشرف الأولية فيها. القيمة الافتراضية هي raw_admin_bdys_
.
--gnaf-schema
اسم مخطط الوجهة لتخزين جداول GNAF النهائية فيه. الإعدادات الافتراضية هي gnaf_
.
--admin-schema
اسم مخطط الوجهة لتخزين جداول حدود المسؤول النهائية فيها. الإعدادات الافتراضية هي admin_bdys_
.
--previous-gnaf-schema
Schema مع الإصدار السابق من جداول GNAF. الإعدادات الافتراضية هي gnaf_
.
- مخطط --previous-admin-schema
مع الإصدار السابق من جداول حدود المسؤول. الإعدادات الافتراضية هي admin_bdys_
.
--states
قائمة الحالات المراد تحميلها مفصولة بمسافة، على سبيل المثال --states VIC TAS
. الإعدادات الافتراضية لتحميل جميع الحالات.
--prevacuum
يفرض تفريغ قاعدة البيانات بعد إسقاط الجداول. الإعدادات الافتراضية هي إيقاف التشغيل، وسيؤدي تحديد هذا الخيار إلى إبطاء عملية الاستيراد.
--raw-fk
ينشئ كلاً من المفاتيح الأساسية والأجنبية لجداول GNAF الأولية. تم ضبط الإعداد الافتراضي على إيقاف التشغيل، وسيؤدي إلى إبطاء عملية الاستيراد إذا تم تحديده. استخدم هذا الخيار إذا كنت تنوي استخدام جداول GNAF الأولية كأي شيء أكثر من مجرد خطوة استيراد مؤقتة. لاحظ أن الجداول النهائية التي تمت معالجتها ستحتوي دائمًا على مجموعة المفاتيح الأساسية والأجنبية المناسبة.
--raw-unlogged
ينشئ جداول GNAF خام غير مسجلة، مما يؤدي إلى تسريع عملية الاستيراد. الإعدادات الافتراضية لإيقاف التشغيل. حدد هذا الخيار فقط إذا كنت لا تهتم بجداول البيانات الأولية بعد الاستيراد - فسوف يتم فقدها في حالة تعطل الخادم!
--max-processes
يحدد الحد الأقصى لعدد العمليات المتوازية التي سيتم استخدامها لتحميل البيانات. اضبط هذا على عدد النوى على خادم Postgres ناقص 2، ولكن يقتصر على 12 إذا كان هناك أكثر من 16 مركزًا - هناك حد أدنى من الفائدة بعد 12. الإعدادات الافتراضية هي 4.
--no-boundary-tag
لا تضع علامة على جميع العناوين التي تحتوي على بعض معرفات حدود المسؤول الرئيسية لإنشاء مجاميع وخرائط تصحيحية.
خادم Postgres المحلي: python load-gnaf.py --gnaf-tables-path="C:tempgeoscape_202408G-NAF" --admin-bdys-path="C:tempgeoscape_202408Administrative Boundaries"
يقوم بتحميل جداول GNAF إلى خادم Postgres الذي يعمل محليًا. تم استخراج أرشيفات GNAF إلى المجلد C:tempgeoscape_202408G-NAF
، وتم استخراج حدود المسؤول إلى المجلد C:tempgeoscape_202408Administrative Boundaries
.
خادم Postgres البعيد: python load-gnaf.py --gnaf-tables-path="svrsharedgnaf" --local-server-dir="f:sharedgnaf" --admin-bdys-path="c:tempunzippedAdminBounds_ESRI"
يقوم بتحميل جداول GNAF التي تم استخراجها إلى المجلد المشترك svrsharedgnaf
. يتوافق هذا المجلد المشترك مع المجلد f:sharedgnaf
المحلي الموجود على خادم Postgres. تم استخراج حدود المسؤول إلى المجلد c:tempunzippedAdminBounds_ESRI
.
تحميل الولايات المحددة فقط: python load-gnaf.py --states VIC TAS NT ...
تحميل البيانات الخاصة بفيكتوريا وتسمانيا والإقليم الشمالي فقط
يمكنك تحميل حدود المسؤول بدون GNAF. للقيام بذلك: قم بالتعليق على الخطوات 1 و3 و4 في الصفحة الرئيسية.
ملاحظة: لا يمكنك تحميل GNAF بدون Admin Bdys بسبب التبعيات المطلوبة لتقسيم ملبورن ولإصلاح locality_pids غير الحدودية على العناوين.
عند استخدام البيانات الناتجة من هذه العملية - ستحتاج إلى الالتزام بمتطلبات الإسناد على صفحات data.gov.au الخاصة بـ GNAF وAdmin Bdys، كجزء من متطلبات ترخيص البيانات المفتوحة.
ستقوم البرامج النصية بإسقاط كافة الجداول باستخدام CASCADE في مخططات GNAF وAdmin Bdy ثم إعادة إنشائها؛ مما يعني أنك ستفقد مشاهداتك إذا قمت بإنشاء أي منها! إذا كنت تريد الاحتفاظ بالبيانات الموجودة - فستحتاج إلى تغيير أسماء المخططات في البرنامج النصي أو استخدام قاعدة بيانات مختلفة
يمكن إنشاء جميع جداول GNAF الأولية بدون تسجيل لتسريع تحميل البيانات. وهذا سيجعلها غير قابلة للاسترداد في حالة تلف قاعدة البيانات الخاصة بك. يمكنك تشغيل هذه البرامج النصية مرة أخرى لإعادة إنشائها. إذا كنت تعتقد أن هذا يبدو جيدًا - فاضبط علامة unlogged_tables على True لتحميل أسرع قليلاً
ستضيف علامات الحدود (يتم تشغيلها افتراضيًا) من 15 إلى 60 دقيقة إلى العملية إذا كان لديك PostGIS 2.2+. إذا كان لديك PostGIS 2.1 أو أقل - فقد يستغرق الأمر ساعات لأنه لا يمكن تحسين الجداول الحدودية!
في حين أنه يمكنك اختيار المخططات الأربعة التي سيتم تحميل البيانات فيها، إلا أنني لم أقم بإجراء ضمان الجودة في كل التقليب. التزم بالإعدادات الافتراضية إذا كانت لديك خبرة محدودة في Postgres
إذا كنت لا تقوم بتشغيل برنامج Python النصي على خادم Postgres، فستحتاج إلى الوصول إلى مسار الشبكة إلى ملفات GNAF على خادم قاعدة البيانات (لإنشاء قائمة الملفات المطلوب معالجتها). البديل هو الحصول على نسخة محلية من الملفات الأولية
سيضيف البرنامج النصي SQL "إنشاء الجداول" امتداد PostGIS إلى قاعدة البيانات في المخطط العام، ولن تحتاج إلى إضافته إلى قاعدة البيانات الخاصة بك
يوجد خيار لتفريغ قاعدة البيانات في البداية بعد إسقاط جداول GNAF/Admin Bdy الحالية - وهذا لا يفعل أي شيء خارج نطاق الاختبار المتكرر. (كنت كسولًا جدًا لدرجة أنني لم أتمكن من إخراجها من الكود لأن ذلك يعني إعادة ترقيم جميع ملفات SQL وأرغب في الذهاب إلى السرير الآن)
GNAF وحدود الإدارة جاهزة للاستخدام في Postgres في صورة على Docker Hub.
في بيئة عامل الإرساء لديك، اسحب الصورة باستخدام docker pull minus34/gnafloader:latest
التشغيل باستخدام docker run --publish=5433:5432 minus34/gnafloader:latest
قم بالوصول إلى Postgres في الحاوية عبر المنفذ 5433
. تسجيل الدخول الافتراضي هو - المستخدم: postgres
، كلمة المرور: password
ملحوظة: صورة Docker المضغوطة تبلغ 8 جيجا بايت، أما غير المضغوطة فهي 25 جيجا بايت
تحذير: كلمة مرور المستخدم المتميز الافتراضية لـ postgres غير آمنة ويجب تغييرها باستخدام:
ALTER USER postgres PASSWORD '
قم بتنزيل ملفات تفريغ Postgres واستعادتها في قاعدة البيانات الخاصة بك.
ينبغي أن يستغرق 15-60 دقيقة.
Postgres 14+ مع PostGIS 3.0+
معرفة معلمات Postgres pg_restore
قم بتنزيل ملف تفريغ GNAF أو ملف تفريغ GNAF GDA2020 (~2.0 جيجا بايت)
قم بتنزيل ملف تفريغ Admin Bdys أو ملف تفريغ Admin Bdys GDA2020 (~2.8 جيجا بايت)
قم بتحرير البرنامج النصي Restore-gnaf-admin-bdys.bat أو .sh في مجلد الملفات الداعمة لأسماء ملفات التفريغ ومعلمات قاعدة البيانات وموقع pg_restore
قم بتشغيل البرنامج النصي، ثم عد خلال 15-60 دقيقة واستمتع!
توجد إصدارات Geoparquet من الجداول المكانية، بالإضافة إلى إصدارات الباركيه من الجداول غير المكانية، في حاوية S3 عامة للاستخدام مباشرة في تطبيق أو خدمة. ويمكن أيضًا تنزيلها باستخدام AWS CLI.
تحتوي الأشكال الهندسية على إحداثيات خطوط العرض/الطول WGS84 (SRID/EPSG:4326). نموذج استعلام لتحليل البيانات باستخدام Apache Sedona، الامتداد المكاني لـ Apache Spark موجود في مجلد spark
.
الملفات موجودة هنا: s3://minus34.com/opendata/geoscape-202408/geoparquet/
قائمة بجميع مجموعات البيانات: aws s3 ls s3://minus34.com/opendata/geoscape-202408/geoparquet/
انسخ جميع مجموعات البيانات: aws s3 sync s3://minus34.com/opendata/geoscape-202408/geoparquet/
تم دمجه أو تطويره باستخدام G-NAF © Geoscape Australia المرخص من قبل كومنولث أستراليا بموجب اتفاقية ترخيص المستخدم النهائي لملف العنوان الوطني المشفر جغرافيًا (G-NAF).
تم دمجها أو تطويرها باستخدام الحدود الإدارية © Geoscape Australia المرخصة من قبل كومنولث أستراليا بموجب ترخيص Creative Commons Attribution 4.0 International (CC BY 4.0).
تم تخصيص GNAF وAdmin Bdys لإزالة بعض القيود البسيطة المعروفة المتعلقة بالبيانات. أبرزها هي:
ترتبط جميع العناوين بمنطقة معلنة في الجريدة الرسمية لها حدود. تم تغيير هذا العدد الصغير من العناوين التي لا تحتوي على GNAF الأولي إلى locality_pid الخاص بها إلى ما يعادلها في الجريدة الرسمية
تمت إضافة العناوين وعدد الشوارع إلى المناطق المحلية
تمت تسوية مناطق الضواحي المحلية في طبقة واحدة متواصلة من المحليات - تمت إزالة المئات من مناطق جنوب أستراليا وأضيفت مناطق ACT حيث لا توجد مناطق محلية معلنة في الجريدة الرسمية
تم تقسيم منطقة ملبورن، مركز فيينا الدولي إلى مناطق ملبورن 3000 وملبورن 3004 (أرقام التعريف الشخصية الجديدة للمناطق هي loc9901d119afda_1
و loc9901d119afda_2
). يحدث الانقسام عند نهر يارا (استنادًا إلى الرموز البريدية الموجودة في عناوين ملبورن)
تم إنشاء طبقة حدود الرمز البريدي باستخدام الرموز البريدية في جداول العناوين. في حين أن هذا يحاكي بشكل وثيق حدود الرمز البريدي الرسمي لشركة Geoscape، إلا أن هناك عدة مئات من العناوين الموجودة في الرمز البريدي الخاطئ. لا تعامل هذه البيانات على أنها موثوقة