فصل 2. تثبيت PostGIS
يفصّل هذا الفصل الخطوات اللازمة لتثبيت PostGIS.
2.1. النسخة المختصرة
للتصريف، بافتراض أن جميع الاعتماديات موجودة في مسار البحث لديك:
tar -xvzf postgis-3.6.4.tar.gz cd postgis-3.6.4 ./configure make make install
بعد تثبيت PostGIS، يجب تفعيله (قسم 3.3, “إنشاء قواعد بيانات مكانية”) أو ترقيته (قسم 3.4, “ترقية قواعد البيانات المكانية”) في كل قاعدة بيانات على حدة تريد استخدامه فيها.
2.2. التصريف والتثبيت من المصدر
|
|
|
تتضمّن كثير من أنظمة التشغيل الآن حزمًا مبنية مسبقًا لـ PostgreSQL/PostGIS. وفي حالات كثيرة لا يلزم التصريف إلا إذا أردت أحدث الإصدارات التجريبية أو كنت مسؤولًا عن صيانة حزم. يتضمّن هذا القسم تعليمات تصريف عامة، وإذا كنت تصرّف لنظام Windows أو غيره من أنظمة التشغيل، فقد تجد مساعدة إضافية أكثر تفصيلًا في أدلة التصريف التي ساهم بها مستخدمو PostGIS وويكي مطوّري PostGIS. الحزم المبنية مسبقًا لأنظمة التشغيل المختلفة مُدرجة في حزم PostGIS المبنية مسبقًا إذا كنت من مستخدمي Windows، يمكنك الحصول على إصدارات مستقرة عبر Stackbuilder أو موقع تنزيلات PostGIS لنظام Windows. ولدينا أيضًا إصدارات تجريبية حديثة جدًا لنظام Windows تُبنى عادةً مرة أو مرتين أسبوعيًا أو كلما حدث أمر مهم. ويمكنك استخدامها لتجربة إصدارات PostGIS قيد التطوير |
وحدة PostGIS امتداد لخادم PostgreSQL الخلفي. ولذلك يتطلّب PostGIS 3.6.4 الوصول الكامل إلى ملفات ترويسة خادم PostgreSQL لكي يُصرَّف. ويمكن بناؤه مقابل إصدارات PostgreSQL من 12 إلى 18. أما الإصدارات الأقدم من PostgreSQL فهي غير مدعومة.
راجع أدلة تثبيت PostgreSQL إذا لم تكن قد ثبّتّ PostgreSQL بعد. https://www.postgresql.org .
|
|
|
للاستفادة من وظائف GEOS، قد تحتاج عند تثبيت PostgreSQL إلى ربط PostgreSQL صراحةً بمكتبة C++ القياسية: LDFLAGS=-lstdc++ ./configure [YOUR OPTIONS HERE] هذا حل التفافي لمشكلة تفاعل استثناءات C++ الخاطئة مع أدوات التطوير الأقدم. إذا واجهت مشكلات غريبة (إغلاق الخادم الخلفي بشكل غير متوقع أو ما شابه)، فجرّب هذه الحيلة. وسيتطلب ذلك بالطبع إعادة تصريف PostgreSQL من البداية. |
توضّح الخطوات التالية تهيئة مصدر PostGIS وتصريفه. وهي مكتوبة لمستخدمي Linux ولن تعمل على Windows أو Mac.
2.2.1. الحصول على المصدر
نزّل أرشيف مصدر PostGIS من موقع التنزيلات https://download.osgeo.org/postgis/source/postgis-3.6.4.tar.gz
wget https://download.osgeo.org/postgis/source/postgis-3.6.4.tar.gz tar -xvzf postgis-3.6.4.tar.gz cd postgis-3.6.4
سيُنشئ هذا دليلًا باسم postgis-3.6.4 في دليل العمل الحالي.
بدلًا من ذلك، اسحب المصدر من مستودع git https://git.osgeo.org/gitea/postgis/postgis/ .
git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis
cd postgis
sh autogen.sh
انتقل إلى الدليل postgis المُنشأ حديثًا لمتابعة التثبيت.
./configure
2.2.2. متطلبات التثبيت
لـ PostGIS المتطلبات التالية للبناء والاستخدام:
إلزامية
-
PostgreSQL من 12 إلى 18. يلزم تثبيت كامل لـ PostgreSQL (بما في ذلك ملفات ترويسة الخادم). ويتوفر PostgreSQL من https://www.postgresql.org 18 .
للاطلاع على مصفوفة الدعم الكاملة بين PostgreSQL / PostGIS ومصفوفة الدعم بين PostGIS/GEOS راجع https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS
-
مصرّف GNU C (
gcc). يمكن استخدام بعض مصرّفات ANSI C الأخرى لتصريف PostGIS، لكننا نجد مشكلات أقل بكثير عند التصريف باستخدامgcc. -
GNU Make (
gmakeأوmake). في كثير من الأنظمة، يكون GNUmakeهو الإصدار الافتراضي من make. تحقّق من الإصدار باستدعاءmake -v. فقد لا تعالج الإصدارات الأخرى منmakeملفMakefileالخاص بـ PostGIS بشكل صحيح. -
مكتبة إعادة الإسقاط Proj. يلزم Proj 6.1 أو أحدث. وتُستخدم مكتبة Proj لتوفير دعم إعادة إسقاط الإحداثيات داخل PostGIS. ويتوفر Proj للتنزيل من https://proj.org/ .
-
مكتبة الأشكال الهندسية GEOS، الإصدار 3.8.0 أو أحدث، لكن يلزم GEOS 3.14+ للاستفادة الكاملة من جميع الدوال والميزات الجديدة. وتتوفر GEOS للتنزيل من https://libgeos.org .
-
LibXML2، الإصدار 2.5.x أو أحدث. تُستخدم LibXML2 حاليًا في بعض دوال الاستيراد (ST_GeomFromGML وST_GeomFromKML). وتتوفر LibXML2 للتنزيل من https://gitlab.gnome.org/GNOME/libxml2/-/releases.
-
JSON-C، الإصدار 0.9 أو أحدث. تُستخدم JSON-C حاليًا لاستيراد GeoJSON عبر الدالة ST_GeomFromGeoJson. وتتوفر JSON-C للتنزيل من https://github.com/json-c/json-c/releases/.
-
GDAL، ويُفضَّل الإصدار 3 أو أحدث. وهي لازمة لدعم الرستر. https://gdal.org/download.html.
-
عند التصريف مع PostgreSQL+JIT، يلزم LLVM بإصدار >=6 https://trac.osgeo.org/postgis/ticket/4125.
اختيارية
-
GDAL (اختيارية ظاهريًا): يمكنك الاستغناء عنها فقط إذا كنت لا تريد الرستر. وتأكد أيضًا من تفعيل المشغّلات التي تريد استخدامها كما هو موضّح في قسم 3.2, “تهيئة دعم الرستر”.
-
GTK (تتطلب GTK+2.0، الإصدار 2.8+) لتصريف أداة تحميل ملفات shape shp2pgsql-gui. http://www.gtk.org/ .
-
SFCGAL، يلزم الإصدار 1.4.1 أو أحدث، ويلزم 2.1+ لتتمكن من استخدام جميع الوظائف. يمكن استخدام SFCGAL لتوفير دوال تحليل متقدمة إضافية ثنائية وثلاثية الأبعاد لـ PostGIS، راجع فصل 8, مرجع دوال SFCGAL. كما تتيح استخدام SFCGAL بدلًا من GEOS لبعض الدوال ثنائية الأبعاد التي يوفرها كلا المحرّكين (مثل ST_Intersection أو ST_Area). ويتيح متغير التهيئة
postgis.backendفي PostgreSQL للمستخدم النهائي التحكم في المحرّك الذي يريد استخدامه إذا كانت SFCGAL مثبتة (GEOS افتراضيًا). ملاحظة: يتطلب SFCGAL 1.2 على الأقل CGAL 4.3 وBoost 1.54 (راجع: https://sfcgal.org) https://gitlab.com/sfcgal/SFCGAL/. -
لبناء قسم 12.1, “مُوحِّد العناوين (Address Standardizer)” ستحتاج أيضًا إلى PCRE 1 أو 2 http://www.pcre.org (وهي مثبتة عادةً على أنظمة nix). وسيُبنى قسم 12.1, “مُوحِّد العناوين (Address Standardizer)” تلقائيًا إذا اكتُشفت مكتبة PCRE، أو إذا مرّرت
--with-pcre-dir=/path/to/pcreصالحًا أثناء التهيئة. -
لتفعيل ST_AsMVT يلزم وجود مكتبة protobuf-c بالإصدار 1.1.0 أو أحدث (للاستخدام) ومصرّف protoc-c (للبناء). كما يلزم pkg-config للتحقق من الحد الأدنى الصحيح لإصدار protobuf-c. راجع protobuf-c. افتراضيًا، سيستخدم PostGIS مكتبة Wagyu للتحقق من صلاحية مضلعات MVT بسرعة أكبر، وهذا يتطلب مصرّفًا يدعم c++11. وسيستخدم CXXFLAGS والمصرّف نفسه المستخدم في تثبيت PostgreSQL. ولتعطيل ذلك واستخدام GEOS بدلًا منه استخدم
--without-wagyuأثناء خطوة التهيئة. -
CUnit (
CUnit). وهي لازمة لاختبارات الانحدار. http://cunit.sourceforge.net/ -
يلزم DocBook (
xsltproc) لبناء التوثيق. ويتوفر DocBook من http://www.docbook.org/ . -
يلزم DBLatex (
dblatex) لبناء التوثيق بصيغة PDF. ويتوفر DBLatex من http://dblatex.sourceforge.net/ . -
GraphicsMagick (
gm convert) is preferred to generate the images used in the documentation. If GraphicsMagick is unavailable, ImageMagick (convertormagick convert) provides the same command-line syntax. GraphicsMagick is available from http://www.graphicsmagick.org/ and ImageMagick from http://www.imagemagick.org/ .
2.2.3. تهيئة البناء
كما في معظم عمليات التثبيت على Linux، تتمثل الخطوة الأولى في توليد ملف Makefile الذي سيُستخدم لبناء الشيفرة المصدرية. ويتم ذلك بتشغيل سكربت الصدفة
./configure
من دون معاملات إضافية، سيحاول هذا الأمر تحديد موقع المكوّنات والمكتبات اللازمة لبناء الشيفرة المصدرية لـ PostGIS على نظامك تلقائيًا. ومع أن هذا هو الاستخدام الأكثر شيوعًا لـ ./configure، فإن السكربت يقبل عدة معاملات لمن لديهم المكتبات والبرامج اللازمة في مواقع غير قياسية.
تعرض القائمة التالية المعاملات الأكثر استخدامًا فقط. وللاطلاع على القائمة الكاملة، استخدم المعاملين --help أو --help=short.
-
--with-library-minor-version -
بدءًا من PostGIS 3.0، لن تتضمن ملفات المكتبات المولَّدة افتراضيًا رقم الإصدار الفرعي ضمن اسم الملف. وهذا يعني أن جميع مكتبات PostGIS 3 ستنتهي بـ
postgis-3. وقد جرى ذلك لتسهيل pg_upgrade، مع عيب أنه لا يمكنك تثبيت سوى إصدار واحد من سلسلة PostGIS 3 على خادمك. وللحصول على السلوك القديم الذي يتضمن فيه اسم الملف رقم الإصدار الفرعي، مثلpostgis-3.0، أضف هذا المفتاح إلى تعليمة التهيئة. -
--prefix=PREFIX -
هذا هو الموقع الذي ستُثبَّت فيه البرامج التنفيذية لأداة التحميل في PostGIS والمكتبات المشتركة. وافتراضيًا، يكون هذا الموقع هو نفسه موقع تثبيت PostgreSQL المُكتشَف.
هذا المعامل معطّل حاليًا، إذ لن تُثبَّت الحزمة إلا في دليل تثبيت PostgreSQL. زر http://trac.osgeo.org/postgis/ticket/635 لمتابعة هذا الخلل.
-
--with-pgconfig=FILE -
يوفّر PostgreSQL أداة تُسمى pg_config لتمكين الامتدادات مثل PostGIS من تحديد موقع دليل تثبيت PostgreSQL. استخدم هذا المعامل (--with-pgconfig=/path/to/pg_config) لتحديد تثبيت PostgreSQL معيّن يدويًا ليُبنى PostGIS مقابله.
-
--with-gdalconfig=FILE -
توفّر GDAL، وهي مكتبة إلزامية، الوظائف اللازمة لدعم الرستر، وتوفّر gdal-config لتمكين البرامج المثبَّتة من تحديد موقع دليل تثبيت GDAL. استخدم هذا المعامل (--with-gdalconfig=/path/to/gdal-config) لتحديد تثبيت GDAL معيّن يدويًا ليُبنى PostGIS مقابله.
-
--with-geosconfig=FILE -
توفّر GEOS، وهي مكتبة أشكال هندسية إلزامية، أداة تُسمى geos-config لتمكين البرامج المثبَّتة من تحديد موقع دليل تثبيت GEOS. استخدم هذا المعامل (--with-geosconfig=/path/to/geos-config) لتحديد تثبيت GEOS معيّن يدويًا ليُبنى PostGIS مقابله.
-
--with-xml2config=FILE -
LibXML هي المكتبة اللازمة لإجراء عمليات GeomFromKML/GML. وتُعثر عليها عادةً إذا كانت libxml مثبتة، وإن لم تكن كذلك أو أردت استخدام إصدار معيّن، فستحتاج إلى توجيه PostGIS إلى ملف تهيئة
xml2-configمعيّن لتمكين البرامج المثبَّتة من تحديد موقع دليل تثبيت LibXML. استخدم هذا المعامل (>--with-xml2config=/path/to/xml2-config) لتحديد تثبيت LibXML معيّن يدويًا ليُبنى PostGIS مقابله. -
--with-projdir=DIR -
Proj مكتبة إعادة إسقاط يحتاجها PostGIS. استخدم هذا المعامل (--with-projdir=/path/to/projdir) لتحديد دليل تثبيت Proj معيّن يدويًا ليُبنى PostGIS مقابله.
-
--with-libiconv=DIR -
الدليل الذي ثُبّتت فيه iconv.
-
--with-jsondir=DIR -
JSON-C مكتبة JSON مرخّصة بترخيص MIT يحتاجها دعم ST_GeomFromJSON في PostGIS. استخدم هذا المعامل (--with-jsondir=/path/to/jsondir) لتحديد دليل تثبيت JSON-C معيّن يدويًا ليُبنى PostGIS مقابله.
-
--with-pcredir=DIR -
PCRE مكتبة تعابير نمطية متوافقة مع Perl مرخّصة بترخيص BSD، يحتاجها الامتداد address_standardizer. استخدم هذا المعامل (--with-pcredir=/path/to/pcredir) لتحديد دليل تثبيت PCRE معيّن يدويًا ليُبنى PostGIS مقابله.
-
--with-gui -
صرّف الواجهة الرسومية لاستيراد البيانات (تتطلب GTK+2.0). سيُنشئ هذا الواجهة الرسومية shp2pgsql-gui للأداة shp2pgsql.
-
--without-raster -
التصريف دون دعم الرستر.
-
--without-tiger -
تعطيل دعم المرمِّز الجغرافي tiger.
-
--without-topology -
التصريف دون دعم الطوبولوجيا.
-
--with-gettext=no -
افتراضيًا، سيحاول PostGIS اكتشاف دعم gettext والتصريف معه، ولكن إذا واجهت مشكلات عدم توافق تتسبب في تعطّل أداة التحميل، فيمكنك تعطيله كليًا بهذا الأمر. راجع التذكرة http://trac.osgeo.org/postgis/ticket/748 لمثال على مشكلة حُلّت بالتهيئة بهذا الخيار. ملاحظة: لن تفوتك أشياء كثيرة بتعطيل هذا الخيار، فهو يُستخدم لدعم المساعدة/التسميات الدولية في أداة التحميل الرسومية، وهي غير موثّقة بعد ولا تزال تجريبية.
-
--with-sfcgal=PATH -
افتراضيًا، لن يُثبَّت PostGIS مع دعم sfcgal دون هذا المفتاح. و
PATHوسيط اختياري يتيح تحديد مسار بديل إلى sfcgal-config. -
--without-phony-revision -
تعطيل تحديث postgis_revision.h ليطابق HEAD الحالي في مستودع git.
|
|
|
إذا حصلت على PostGIS من مستودع الشيفرة ، فإن الخطوة الأولى في الواقع هي تشغيل السكربت ./autogen.sh سيولّد هذا السكربت سكربت configure الذي يُستخدم بدوره لتخصيص تثبيت PostGIS. أما إذا حصلت على PostGIS في صورة أرشيف tar، فلا حاجة إلى تشغيل ./autogen.sh لأن configure قد وُلّد مسبقًا. |
2.2.4. البناء
بعد توليد ملف Makefile، يصبح بناء PostGIS بسيطًا بتشغيل
make
يجب أن يكون السطر الأخير من المخرجات "PostGIS was built successfully. Ready to install."
بدءًا من PostGIS v1.4.0، لجميع الدوال تعليقات مولَّدة من التوثيق. وإذا رغبت في تثبيت هذه التعليقات في قواعد بياناتك المكانية لاحقًا، فشغّل الأمر الذي يتطلب docbook. كما أن الملف postgis_comments.sql وملفات تعليقات الحزم الأخرى raster_comments.sql وtopology_comments.sql مضمَّنة في توزيعة tar.gz داخل المجلد doc، لذا لا حاجة إلى بناء التعليقات عند التثبيت من أرشيف tar. والتعليقات مضمَّنة أيضًا ضمن التثبيت باستخدام CREATE EXTENSION.
make comments
قُدّمت في PostGIS 2.0. يولّد هذا أوراق مرجعية مختصرة بصيغة html مناسبة للرجوع السريع أو للتوزيع على الطلاب. ويتطلب بناؤها xsltproc وسيولّد 4 ملفات في المجلد doc: topology_cheatsheet.html وtiger_geocoder_cheatsheet.html وraster_cheatsheet.html وpostgis_cheatsheet.html
يمكنك تنزيل بعض النسخ المبنية مسبقًا بصيغتي html وpdf من أدلة دراسة PostGIS / PostgreSQL
make cheatsheets
2.2.5. بناء امتدادات PostGIS ونشرها
تُبنى امتدادات PostGIS وتُثبَّت تلقائيًا إذا كنت تستخدم PostgreSQL 9.1+.
إذا كنت تبني من مستودع المصدر، فعليك بناء أوصاف الدوال أولًا. وهي تُبنى إذا كان docbook مثبتًا. ويمكنك أيضًا بناؤها يدويًا بالتعليمة:
make comments
لا حاجة إلى بناء التعليقات إذا كنت تبني من أرشيف tar لإصدار رسمي، لأنها مضمَّنة فيه مبنية مسبقًا.
يجب أن تُبنى الامتدادات تلقائيًا ضمن عملية make install. ويمكنك عند الحاجة البناء من مجلدات الامتدادات أو نسخ الملفات إذا احتجت إليها على خادم آخر.
cd extensions cd postgis make clean make export PGUSER=postgres #overwrite psql variables make check #to test before install make install # to test extensions make check RUNTESTFLAGS=--extension
|
|
|
يستخدم |
تكون ملفات الامتداد دائمًا متطابقة للإصدار نفسه من PostGIS وPostgreSQL بغض النظر عن نظام التشغيل، لذا لا بأس بنسخ ملفات الامتداد من نظام تشغيل إلى آخر ما دامت البرامج الثنائية لـ PostGIS مثبتة بالفعل على خوادمك.
إذا أردت تثبيت الامتدادات يدويًا على خادم منفصل غير خادم التطوير، فعليك نسخ الملفات التالية من مجلد الامتدادات إلى المجلد PostgreSQL / share / extension في تثبيت PostgreSQL لديك، إضافة إلى البرامج الثنائية اللازمة لـ PostGIS العادي إذا لم تكن موجودة بالفعل على الخادم.
-
هذه ملفات التحكم التي تحدد معلومات مثل إصدار الامتداد المراد تثبيته إذا لم يُحدَّد.
postgis.control, postgis_topology.control. -
جميع الملفات الموجودة في المجلد /sql لكل امتداد. لاحظ أنه يجب نسخها إلى جذر المجلد share/extension في PostgreSQL
extensions/postgis/sql/*.sql،extensions/postgis_topology/sql/*.sql
بعد ذلك، يُفترض أن ترى postgis وpostgis_topology بوصفهما امتدادين متاحين في PgAdmin -> extensions.
إذا كنت تستخدم psql، يمكنك التحقق من تثبيت الامتدادات بتشغيل هذا الاستعلام:
SELECT name, default_version,installed_version
FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
name | default_version | installed_version
------------------------------+-----------------+-------------------
address_standardizer | 3.6.4 | 3.6.4
address_standardizer_data_us | 3.6.4 | 3.6.4
postgis | 3.6.4 | 3.6.4
postgis_raster | 3.6.4 | 3.6.4
postgis_sfcgal | 3.6.4 |
postgis_tiger_geocoder | 3.6.4 | 3.6.4
postgis_topology | 3.6.4 |
(6 rows)
إذا كان الامتداد مثبتًا في قاعدة البيانات التي تستعلمها، فسترى ذلك مذكورًا في العمود installed_version. وإذا لم تحصل على أي سجلات، فهذا يعني أن امتدادات postgis غير مثبتة على الخادم إطلاقًا. كما يوفّر PgAdmin III 1.14+ هذه المعلومات في القسم extensions من شجرة مستعرض قاعدة البيانات، بل ويتيح الترقية أو إلغاء التثبيت بالنقر بزر الفأرة الأيمن.
إذا كانت الامتدادات متاحة لديك، يمكنك تثبيت امتداد postgis في قاعدة البيانات التي تختارها إما باستخدام واجهة الامتدادات في pgAdmin أو بتشغيل أوامر SQL التالية:
CREATE EXTENSION postgis; CREATE EXTENSION postgis_raster; CREATE EXTENSION postgis_sfcgal; CREATE EXTENSION fuzzystrmatch; --needed for postgis_tiger_geocoder --optional used by postgis_tiger_geocoder, or can be used standalone CREATE EXTENSION address_standardizer; CREATE EXTENSION address_standardizer_data_us; CREATE EXTENSION postgis_tiger_geocoder; CREATE EXTENSION postgis_topology;
في psql يمكنك استخدام ما يلي لمعرفة الإصدارات المثبتة لديك وكذلك المخطط الذي ثُبّتت فيه.
\connect mygisdb \x \dx postgis*
List of installed extensions -[ RECORD 1 ]------------------------------------------------- Name | postgis Version | 3.6.4 Schema | public Description | PostGIS geometry, geography, and raster spat.. -[ RECORD 2 ]------------------------------------------------- Name | postgis_raster Version | 3.0.0dev Schema | public Description | PostGIS raster types and functions -[ RECORD 3 ]------------------------------------------------- Name | postgis_tiger_geocoder Version | 3.6.4 Schema | tiger Description | PostGIS tiger geocoder and reverse geocoder -[ RECORD 4 ]------------------------------------------------- Name | postgis_topology Version | 3.6.4 Schema | topology Description | PostGIS topology spatial types and functions
|
|
|
لا يمكن نسخ جداول الامتدادات |
إذا ثبّتّ 3.6.4 دون استخدام نظام الامتدادات الرائع لدينا، يمكنك تحويله ليصبح قائمًا على الامتدادات بتشغيل الأوامر أدناه لتضمين الدوال في الامتدادات الخاصة بها. وقد أُزيل التثبيت باستخدام `unpackaged` في PostgreSQL 13، لذا يُنصح بالتحول إلى بناء قائم على الامتدادات قبل الترقية إلى PostgreSQL 13.
CREATE EXTENSION postgis FROM unpackaged; CREATE EXTENSION postgis_raster FROM unpackaged; CREATE EXTENSION postgis_topology FROM unpackaged; CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;
2.2.6. الاختبار
إذا رغبت في اختبار بناء PostGIS، فشغّل
make check
سيُجري الأمر أعلاه فحوصًا واختبارات انحدار متنوعة باستخدام المكتبة المولَّدة على قاعدة بيانات PostgreSQL فعلية.
|
|
|
إذا هيّأت PostGIS باستخدام مواقع غير قياسية لـ PostgreSQL أو GEOS أو Proj، فقد تحتاج إلى إضافة مواقع مكتباتها إلى متغير البيئة |
|
|
|
حاليًا، يعتمد make check على متغيري البيئة |
عند النجاح، سيُنتج make check مخرجات ما يقارب 500 اختبار. وستبدو النتائج مشابهة لما يلي (مع حذف أسطر كثيرة أدناه):
CUnit - A unit testing framework for C - Version 2.1-3
http://cunit.sourceforge.net/
.
.
.
Run Summary: Type Total Ran Passed Failed Inactive
suites 44 44 n/a 0 0
tests 300 300 300 0 0
asserts 4215 4215 4215 0 n/a
Elapsed time = 0.229 seconds
.
.
.
Running tests
.
.
.
Run tests: 134
Failed: 0
-- if you build with SFCGAL
.
.
.
Running tests
.
.
.
Run tests: 13
Failed: 0
-- if you built with raster support
.
.
.
Run Summary: Type Total Ran Passed Failed Inactive
suites 12 12 n/a 0 0
tests 65 65 65 0 0
asserts 45896 45896 45896 0 n/a
.
.
.
Running tests
.
.
.
Run tests: 101
Failed: 0
-- topology regress
.
.
.
Running tests
.
.
.
Run tests: 51
Failed: 0
-- if you built --with-gui, you should see this too
CUnit - A unit testing framework for C - Version 2.1-2
http://cunit.sourceforge.net/
.
.
.
Run Summary: Type Total Ran Passed Failed Inactive
suites 2 2 n/a 0 0
tests 4 4 4 0 0
asserts 4 4 4 0 n/a
يدعم الامتدادان postgis_tiger_geocoder وaddress_standardizer حاليًا أمر installcheck القياسي في PostgreSQL فقط. ولاختبارهما استخدم ما يلي. ملاحظة: لا حاجة إلى make install إذا كنت قد نفّذت make install بالفعل في جذر مجلد شيفرة PostGIS.
بالنسبة إلى address_standardizer:
cd extensions/address_standardizer
make install
make installcheck
يجب أن تبدو المخرجات هكذا:
============== dropping database "contrib_regression" ============== DROP DATABASE ============== creating database "contrib_regression" ============== CREATE DATABASE ALTER DATABASE ============== running regression test queries ============== test test-init-extensions ... ok test test-parseaddress ... ok test test-standardize_address_1 ... ok test test-standardize_address_2 ... ok ===================== All 4 tests passed. =====================
بالنسبة إلى المرمِّز الجغرافي tiger، تأكد من توفر الامتدادين postgis وfuzzystrmatch في نسخة PostgreSQL لديك. وستُشغَّل اختبارات address_standardizer أيضًا إذا كنت قد بنيت postgis مع دعم address_standardizer:
cd extensions/postgis_tiger_geocoder
make install
make installcheck
يجب أن تبدو المخرجات هكذا:
============== dropping database "contrib_regression" ============== DROP DATABASE ============== creating database "contrib_regression" ============== CREATE DATABASE ALTER DATABASE ============== installing fuzzystrmatch ============== CREATE EXTENSION ============== installing postgis ============== CREATE EXTENSION ============== installing postgis_tiger_geocoder ============== CREATE EXTENSION ============== installing address_standardizer ============== CREATE EXTENSION ============== running regression test queries ============== test test-normalize_address ... ok test test-pagc_normalize_address ... ok ===================== All 2 tests passed. =====================
2.2.7. التثبيت
لتثبيت PostGIS، اكتب
make install
سينسخ هذا ملفات تثبيت PostGIS إلى الأدلة الفرعية المناسبة لها والمحددة بمعامل التهيئة --prefix. وعلى وجه الخصوص:
-
تُثبَّت البرامج الثنائية لأداتي التحميل والتفريغ في
[prefix]/bin. -
تُثبَّت ملفات SQL، مثل
postgis.sql، في[prefix]/share/contrib. -
تُثبَّت مكتبات PostGIS في
[prefix]/lib.
إذا كنت قد شغّلت سابقًا الأمر make comments لتوليد الملفين postgis_comments.sql وraster_comments.sql، فثبّت ملف sql بتشغيل
make comments-install
|
|
|
فُصلت الملفات |
2.3. تثبيت مُوحِّد العناوين واستخدامه
كان الامتداد address_standardizer حزمة منفصلة تتطلب تنزيلًا منفصلًا. وبدءًا من PostGIS 2.2 أصبح مضمَّنًا. ولمزيد من المعلومات عن address_standardize، وما يفعله، وكيفية تهيئته لاحتياجاتك، راجع قسم 12.1, “مُوحِّد العناوين (Address Standardizer)”.
يمكن استخدام هذا المُوحِّد مع امتداد المرمِّز الجغرافي tiger المضمَّن في PostGIS بديلًا عن Normalize_Address المشروحة. ولاستخدامه بديلًا راجع قسم 2.4.2, “استخدام امتداد مُوحِّد العناوين مع المرمِّز الجغرافي Tiger”. ويمكنك أيضًا استخدامه لبنةً أساسية لمرمِّزك الجغرافي الخاص، أو لتوحيد عناوينك بما يسهّل مقارنتها.
يعتمد مُوحِّد العناوين على PCRE المثبتة عادةً على كثير من أنظمة Nix، لكن يمكنك تنزيل أحدث إصدار من: http://www.pcre.org. إذا عُثر على PCRE أثناء قسم 2.2.3, “تهيئة البناء”، فسيُبنى امتداد مُوحِّد العناوين تلقائيًا. وإذا كان لديك تثبيت مخصّص لـ pcre تريد استخدامه بدلًا من ذلك، فمرّر إلى configure الخيار --with-pcredir=/path/to/pcre حيث /path/to/pcre هو المجلد الجذر لدليلَي include وlib الخاصين بـ pcre.
بالنسبة إلى مستخدمي Windows، تأتي حزمة PostGIS 2.1+ متضمنة address_standardizer بالفعل، فلا حاجة إلى التصريف ويمكن الانتقال مباشرة إلى خطوة CREATE EXTENSION.
بعد التثبيت، يمكنك الاتصال بقاعدة بياناتك وتشغيل SQL التالي:
CREATE EXTENSION address_standardizer;
لا يتطلب الاختبار التالي جداول rules أو gaz أو lex
SELECT num, street, city, state, zip
FROM parse_address('1 Devonshire Place PH301, Boston, MA 02109');
يجب أن تكون المخرجات
num | street | city | state | zip -----+------------------------+--------+-------+------- 1 | Devonshire Place PH301 | Boston | MA | 02109
2.4. تثبيت المرمِّز الجغرافي Tiger وترقيته وتحميل البيانات
قد لا تكون الإضافات مثل المرمِّز الجغرافي Tiger مضمَّنة في توزيعة PostGIS لديك. إذا كان امتداد المرمِّز الجغرافي tiger مفقودًا لديك أو أردت إصدارًا أحدث مما يأتي مع تثبيتك، فاستخدم الملفات share/extension/postgis_tiger_geocoder.* من الحزم الموجودة في قسم إصدارات Windows غير المنشورة لإصدار PostgreSQL لديك. ومع أن هذه الحزم مخصّصة لنظام Windows، فإن ملفات امتداد postgis_tiger_geocoder ستعمل على أي نظام تشغيل لأن الامتداد مكتوب بـ SQL/plpgsql فقط.
2.4.1. تفعيل المرمِّز الجغرافي Tiger في قاعدة بيانات PostGIS
-
تفترض هذه التوجيهات أن تثبيت PostgreSQL لديك يحتوي بالفعل على امتداد postgis_tiger_geocoder.
-
اتصل بقاعدة بياناتك عبر psql أو pgAdmin أو أداة أخرى وشغّل أوامر SQL التالية. لاحظ أنه إذا كنت تثبّت في قاعدة بيانات تحتوي postgis بالفعل، فلا حاجة إلى الخطوة الأولى. وإذا كان الامتداد
fuzzystrmatchمثبتًا لديك بالفعل، فلا حاجة إلى الخطوة الثانية أيضًا.CREATE EXTENSION postgis; CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgis_tiger_geocoder; --this one is optional if you want to use the rules based standardizer (pagc_normalize_address) CREATE EXTENSION address_standardizer;
إذا كان امتداد postgis_tiger_geocoder مثبتًا لديك بالفعل وتريد فقط التحديث إلى أحدث إصدار، فشغّل:
ALTER EXTENSION postgis UPDATE; ALTER EXTENSION postgis_tiger_geocoder UPDATE;
إذا أجريت إدخالات أو تغييرات مخصّصة في
tiger.loader_platformوtiger.loader_variablesفقد تحتاج إلى تحديثها. -
للتأكد من أن تثبيتك يعمل بشكل صحيح، شغّل SQL التالي في قاعدة بياناتك:
SELECT na.address, na.streetname,na.streettypeabbrev, na.zip FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;والذي يجب أن يُخرج
address | streetname | streettypeabbrev | zip ---------+------------+------------------+------- 1 | Devonshire | Pl | 02109 -
أنشئ سجلًا جديدًا في الجدول
tiger.loader_platformيتضمن مسارات برامجك التنفيذية والخادم.فمثلًا، لإنشاء ملف تعريف باسم debbie يتبع اصطلاحات
sh، تفعل ما يلي:INSERT INTO tiger.loader_platform(os, declare_sect, pgbin, wget, unzip_command, psql, path_sep, loader, environ_set_command, county_process_command) SELECT 'debbie', declare_sect, pgbin, wget, unzip_command, psql, path_sep, loader, environ_set_command, county_process_command FROM tiger.loader_platform WHERE os = 'sh';ثم عدّل المسارات في العمود declare_sect لتلائم مواقع pg وunzip وshp2pgsql وpsql وغيرها لدى Debbie.
إذا لم تعدّل هذا الجدول
loader_platform، فسيحتوي فقط على المواقع الشائعة للعناصر، وسيتعين عليك تعديل السكربت المولَّد بعد توليده. -
بدءًا من PostGIS 2.4.1، عُدّلت خطوة تحميل منطقة جدولة الرمز البريدي المكوّن من 5 أرقام
zcta5لتحميل بيانات zcta5 الحالية، وهي جزء من Loader_Generate_Nation_Script عند تفعيلها. وهي معطّلة افتراضيًا لأن تحميلها يستغرق وقتًا طويلًا (من 20 إلى 60 دقيقة)، ويشغل مساحة كبيرة من القرص، ولا يُستخدم كثيرًا.لتفعيلها، افعل ما يلي:
UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta520';
إذا كانت موجودة، يمكن للدالة Geocode استخدامها إذا أضيف مرشّح حدود لقصر النتائج على الرموز البريدية الواقعة داخل تلك الحدود. وتستخدمها الدالة Reverse_Geocode إذا كان العنوان المُعاد يفتقد الرمز البريدي، وهو ما يحدث كثيرًا في الترميز الجغرافي العكسي للطرق السريعة.
-
أنشئ مجلدًا باسم
gisdataفي جذر الخادم أو على حاسوبك المحلي إذا كان لديك اتصال شبكي سريع بالخادم. هذا المجلد هو المكان الذي ستُنزَّل إليه ملفات tiger وتُعالَج فيه. وإذا لم يعجبك وجود المجلد في جذر الخادم، أو أردت ببساطة التحول إلى مجلد آخر للتجهيز، فعدّل الحقلstaging_foldفي الجدولtiger.loader_variables. -
أنشئ مجلدًا باسم temp داخل المجلد
gisdataأو أينما حددتstaging_fold. وسيكون هذا المجلد الذي تستخرج فيه أداة التحميل بيانات tiger المنزَّلة. -
ثم شغّل دالة SQL Loader_Generate_Nation_Script مع الحرص على استخدام اسم ملف التعريف المخصّص لديك، وانسخ السكربت إلى ملف .sh أو .bat. فمثلًا لبناء تحميل البيانات الوطنية:
psql -c "SELECT Loader_Generate_Nation_Script('debbie')" -d geocoder -tA > /gisdata/nation_script_load.sh -
شغّل سكربتات سطر الأوامر المولَّدة لتحميل البيانات الوطنية.
cd /gisdata sh nation_script_load.sh
-
بعد الانتهاء من تشغيل السكربت الوطني، يُفترض أن يكون لديك ثلاثة جداول في المخطط
tiger_dataمملوءة بالبيانات. تأكد من ذلك بتنفيذ الاستعلامات التالية من psql أو pgAdminSELECT count(*) FROM tiger_data.county_all;
count ------- 3235 (1 row)
SELECT count(*) FROM tiger_data.state_all;
count ------- 56 (1 row)لن يحتوي هذا على بيانات إلا إذا حددت تحميل zcta5
SELECT count(*) FROM tiger_data.zcta5_all;
count ------- 33933 (1 row)
-
افتراضيًا لا تُحمَّل الجداول المقابلة لـ
bgوtractوtabblock20. ولا يستخدم المرمِّز الجغرافي هذه الجداول، لكن يستخدمها الناس لإحصاءات السكان. وإذا رغبت في تحميلها ضمن تحميلات الولايات، فشغّل التعليمة التالية لتفعيلها.UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name IN('tract', 'bg', 'tabblock20');بدلًا من ذلك يمكنك تحميل هذه الجداول فقط بعد تحميل بيانات الولايات باستخدام Loader_Generate_Census_Script
-
لكل ولاية تريد تحميل بياناتها، ولّد سكربت ولاية Loader_Generate_Script.
لا تولّد سكربت الولاية قبل أن تكون قد حمّلت البيانات الوطنية، لأن سكربت الولاية يستخدم قائمة المقاطعات التي يحمّلها السكربت الوطني.
-
psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA > /gisdata/ma_load.sh
-
شغّل سكربتات سطر الأوامر المولَّدة.
cd /gisdata sh ma_load.sh
-
بعد الانتهاء من تحميل جميع البيانات أو عند نقطة توقف، يُستحسن تحليل جميع جداول tiger لتحديث الإحصاءات (بما في ذلك الإحصاءات الموروثة)
SELECT install_missing_indexes(); vacuum (analyze, verbose) tiger.addr; vacuum (analyze, verbose) tiger.edges; vacuum (analyze, verbose) tiger.faces; vacuum (analyze, verbose) tiger.featnames; vacuum (analyze, verbose) tiger.place; vacuum (analyze, verbose) tiger.cousub; vacuum (analyze, verbose) tiger.county; vacuum (analyze, verbose) tiger.state; vacuum (analyze, verbose) tiger.zcta5; vacuum (analyze, verbose) tiger.zip_lookup_base; vacuum (analyze, verbose) tiger.zip_state; vacuum (analyze, verbose) tiger.zip_state_loc;
2.4.2. استخدام امتداد مُوحِّد العناوين مع المرمِّز الجغرافي Tiger
من الشكاوى الكثيرة لدى المستخدمين دالة توحيد العناوين Normalize_Address التي توحّد العنوان تمهيدًا للترميز الجغرافي. فهذه الدالة بعيدة عن الكمال، ومحاولة ترقيع عيوبها تستهلك قدرًا هائلًا من الموارد. لذلك أجرينا تكاملًا مع مشروع آخر لديه محرّك توحيد عناوين أفضل بكثير. ولاستخدام address_standardizer الجديد هذا، صرّف الامتداد كما هو موضّح في قسم 2.3, “تثبيت مُوحِّد العناوين واستخدامه” وثبّته امتدادًا في قاعدة بياناتك.
بعد تثبيت هذا الامتداد في قاعدة البيانات نفسها التي ثبّتّ فيها postgis_tiger_geocoder، يمكن استخدام Pagc_Normalize_Address بدلًا من Normalize_Address. وهذا الامتداد مستقل عن tiger، لذا يمكن استخدامه مع مصادر بيانات أخرى مثل العناوين الدولية. ويأتي امتداد المرمِّز الجغرافي tiger مضمَّنًا فيه نسخه المخصّصة من rules table (tiger.pagc_rules) وgaz table (tiger.pagc_gaz) وlex table (tiger.pagc_lex). ويمكنك الإضافة إليها وتحديثها لتحسين تجربة التوحيد بما يلائم احتياجاتك.
2.4.3. الأدوات اللازمة لتحميل بيانات tiger
تنزّل عملية التحميل البيانات من موقع التعداد السكاني للملفات الوطنية والولايات المطلوبة، وتستخرج الملفات، ثم تحمّل كل ولاية في مجموعة جداول خاصة بها. ويرث كل جدول ولاية من الجداول المعرّفة في المخطط tiger، بحيث يكفي الاستعلام من تلك الجداول للوصول إلى جميع البيانات، ويمكن حذف مجموعة جداول ولاية في أي وقت باستخدام Drop_State_Tables_Generate_Script إذا احتجت إلى إعادة تحميل ولاية أو لم تعد بحاجة إليها.
لكي تتمكن من تحميل البيانات ستحتاج إلى الأدوات التالية:
-
أداة لفك ضغط ملفات zip من موقع التعداد السكاني.
للأنظمة الشبيهة بـ Unix: البرنامج التنفيذي
unzipالمثبت عادةً على معظم المنصات الشبيهة بـ Unix.لنظام Windows: 7-zip، وهي أداة ضغط/فك ضغط مجانية يمكنك تنزيلها من http://www.7-zip.org/
-
أداة سطر الأوامر
shp2pgsqlالمثبتة افتراضيًا عند تثبيت PostGIS. -
wget، وهي أداة لجلب الملفات من الويب مثبتة عادةً على معظم أنظمة Unix/Linux.إذا كنت تستخدم Windows، يمكنك الحصول على برامج ثنائية مصرَّفة مسبقًا من http://gnuwin32.sourceforge.net/packages/wget.htm
إذا كنت تُرقّي من tiger_2010، فستحتاج أولًا إلى توليد Drop_Nation_Tables_Generate_Script وتشغيله. وقبل تحميل أي بيانات ولاية، عليك تحميل البيانات على مستوى البلاد، وذلك باستخدام Loader_Generate_Nation_Script التي ستولّد لك سكربت تحميل. وLoader_Generate_Nation_Script خطوة تُجرى مرة واحدة عند الترقية (من بيانات تعداد tiger لسنة سابقة) وعند التثبيت الجديد.
لتحميل بيانات الولايات راجع Loader_Generate_Script لتوليد سكربت تحميل بيانات لمنصتك للولايات التي تريدها. لاحظ أنه يمكنك تثبيتها على دفعات، فلا يلزمك تحميل جميع الولايات التي تريدها دفعة واحدة، بل يمكنك تحميلها كلما احتجت إليها.
بعد تحميل الولايات التي تريدها، احرص على تشغيل:
SELECT install_missing_indexes();
كما هو موضّح في Install_Missing_Indexes.
لاختبار أن الأمور تعمل كما ينبغي، جرّب تشغيل ترميز جغرافي لعنوان في ولايتك باستخدام Geocode
2.4.4. ترقية تثبيت المرمِّز الجغرافي Tiger وبياناته
أولًا رقِّ امتداد postgis_tiger_geocoder كما يلي:
ALTER EXTENSION postgis_tiger_geocoder UPDATE;
بعد ذلك احذف جميع الجداول الوطنية وحمّل الجداول الجديدة. ولّد سكربت حذف بتعليمة SQL هذه كما هو مفصّل في Drop_Nation_Tables_Generate_Script
SELECT drop_nation_tables_generate_script();
شغّل تعليمات SQL المولَّدة للحذف.
ولّد سكربت تحميل البيانات الوطنية بتعليمة SELECT هذه كما هو مفصّل في Loader_Generate_Nation_Script
لنظام Windows
SELECT loader_generate_nation_script('windows');
لأنظمة unix/linux
SELECT loader_generate_nation_script('sh');
راجع قسم 2.4.1, “تفعيل المرمِّز الجغرافي Tiger في قاعدة بيانات PostGIS” للاطلاع على تعليمات تشغيل السكربت المولَّد. ولا يلزم ذلك إلا مرة واحدة.
|
|
|
يمكن أن يكون لديك مزيج من جداول ولايات لسنوات مختلفة، ويمكنك ترقية كل ولاية على حدة. وقبل ترقية ولاية، عليك أولًا حذف جداول السنة السابقة لتلك الولاية باستخدام Drop_State_Tables_Generate_Script. |
2.5. المشكلات الشائعة أثناء التثبيت
هناك عدة أمور ينبغي التحقق منها عندما لا يسير التثبيت أو الترقية كما توقعت.
-
تحقق من أنك ثبّتّ PostgreSQL 12 أو أحدث، وأنك تصرّف مقابل إصدار مصدر PostgreSQL نفسه الذي يطابق إصدار PostgreSQL قيد التشغيل. فقد يحدث خلط عندما تكون توزيعة (Linux) لديك قد ثبّتت PostgreSQL مسبقًا، أو تكون قد ثبّتّ PostgreSQL من قبل ونسيت ذلك. لن يعمل PostGIS إلا مع PostgreSQL 12 أو أحدث، وستظهر رسائل خطأ غريبة وغير متوقعة إذا استخدمت إصدارًا أقدم. وللتحقق من إصدار PostgreSQL قيد التشغيل، اتصل بقاعدة البيانات باستخدام psql وشغّل هذا الاستعلام:
SELECT version();
إذا كنت تستخدم توزيعة قائمة على RPM، يمكنك التحقق من وجود حزم مثبتة مسبقًا باستخدام الأمر rpm كما يلي: rpm -qa | grep postgresql
-
إذا فشلت الترقية، فتأكد من أنك تستعيد إلى قاعدة بيانات مثبت فيها PostGIS بالفعل.
SELECT postgis_full_version();
وتحقق أيضًا من أن configure قد اكتشف بشكل صحيح موقع وإصدار PostgreSQL ومكتبة Proj ومكتبة GEOS.
-
تُستخدم مخرجات configure لتوليد الملف
postgis_config.h. تحقق من أن المتغيراتPOSTGIS_PGSQL_VERSIONوPOSTGIS_PROJ_VERSIONوPOSTGIS_GEOS_VERSIONقد ضُبطت بشكل صحيح.