PostGIS टेम्पलेट कैसे बनाएं?


19

मैं pgrout स्थापित करने के लिए एक ट्यूटोरियल का अनुसरण कर रहा हूं। हालाँकि, मुझे ऐसा नहीं मिला जब वह कहता है

PgAdmin प्रारंभ करें और अपने PostGIS टेम्पलेट के आधार पर एक नया डेटाबेस बनाएं

मुझे यह पोस्टगिस टेम्पलेट कहाँ मिल सकता है? मुझे पता है कि मैंने होमब्रे का उपयोग करके पोस्टजीआईएस स्थापित किया है। लेकिन मुझे खाका नहीं मिला। मैं अब मैकोस चला रहा हूं।


1
आप PostGIS के किस संस्करण का उपयोग कर रहे हैं?
RK

जवाबों:


16

PostgreSQL 9.1 के साथ नई विधि

नीचे RK की सलाह के लिए धन्यवाद, मैंने इस ट्यूटोरियल पर एक नज़र डाली और पाया कि PostgreSQL 9.1 के लिए आपको केवल pgAdmin संदर्भ मेनू का उपयोग करके एक्सटेंशन postgisऔर postgis_topologyमौजूदा डेटाबेस में जोड़ना होगा । पोस्टगिस टेम्प्लेट बनाने के लिए, मैंने एक नया डेटाबेस बनाया template-postgisऔर फिर इन एक्सटेंशनों को जोड़ा। फिर मैंने इस टेम्पलेट का उपयोग करके अपना अन्य डेटाबेस बनाया। उपयोग करते समय pg_dumpमैंने पाया कि निर्यात का आकार बहुत छोटा था, क्योंकि यह सिर्फ इन पंक्तियों को शामिल करता है और विस्तार कार्यों को डंप नहीं करता है:

CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS postgis_topology WITH SCHEMA topology;

पुराना निरर्थक तरीका:

मैंने यहाँ .sql फ़ाइलों का उपयोग कर समाप्त किया:

/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql

जब मुझे इस टेम्पलेट से बने नए डेटाबेस में मौजूदा PostGIS डेटाबेस आयात किया गया, तब भी मुझे यह त्रुटि मिली:

ERROR:  type "spheroid" already exists

इसलिए मैंने यहां निर्देशों का पालन ​​किया और ON_ERROR_ROLLBACK=on"template_postgis" नामक एक रिक्त डेटाबेस बनाने के बाद, टेम्पलेट सेट किया।

psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql -v ON_ERROR_ROLLBACK=on

और फिर मेरा बैकअप db आयात किया, उदा:

psql -U someuser -d somedb -1 -f somefile.sql -v ON_ERROR_ROLLBACK=on

यहां तक ​​कि पुरानी विधि:

इसे मैने किया है:

createdb -E UTF8 -T template0 template_postgis
createlang -d template_postgis plpgsql
psql --quiet -d template_postgis -f /Applications/Postgres.app/Contents/MacOS/share/extension/postgis--2.0.1.sql

postgis--2.0.1.sqlआपके सेटअप के आधार पर रास्ता अलग होगा।


अपना उत्तर पूरा करने के लिए (जो मेरे मैक पर काम करता है): एक मैक पर, यदि आपने Kyngchaos पोर्ट से पोस्टगिस स्थापित किया है, तो पोस्टगिस इंस्टॉलेशन फाइल है: /usr/local/pgsql/share/extension/ostgis--2.0.1.sql
ब्रूनो वॉन पेरिस

नवीनतम विधि के लिए, 'SCHEMA' की आवश्यकता है? वह किसके लिए है? (आपका एकमात्र उदाहरण मैंने अब तक देखा है जो ऐसा करते हैं।)
मैट विल्की

14

यदि आप PostgreSQL 9.1+ चला रहे हैं, तो आपको टेम्पलेट डेटाबेस से परेशान होने की आवश्यकता नहीं है । बस एक डेटाबेस बनाएं और फिर pgAdmin में SQL व्यू पर टाइप करें और रन करें

CREATE EXTENSION postgis;

जो आपके डेटाबेस को स्थानिक रूप से सक्षम करेगा।


क्या अभी भी टेम्पलेट विधि का उपयोग किया जा सकता है? या, वहाँ एक तरीका है कि pgAdminIII में "नए डेटाबेस" संवाद में इस जानकारी को जोड़ने के लिए है?
monkut

आप शायद जोड़ना भी चाहते हैंCREATE EXTENSION postgis_topology;
मैट विल्की

1
@monkut in pgAdmin4 यह नेविगेशन ट्री में 'एक्सटेंशन' पर राइट-क्लिक के माध्यम से उपलब्ध है
मैट विल्की

CREATE EXTENSIONसुपरसुसर विशेषाधिकारों की आवश्यकता है, इसलिए वास्तव में टेम्पलेट का निर्माण / उपयोग करना बहुत अच्छा विचार हो सकता है।
Cromax

3

वास्तव में यह पोस्टगिस स्थापना की नींव है।

यदि आपके पास पोस्टगीस टेम्प्लेट है तो आप इससे एक नया डेटाबेस बना सकते हैं:

 createdb -T postgistemplate -O gis gisdb

यदि आपके पास यह नहीं है, तो आप इसे इस तरह से कर सकते हैं:

sudo su postgres
createdb postgistemplate
createlang plpgsql postgistemplate
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/lwpostgis.sql
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/spatial_ref_sys.sql

आप बैश स्क्रिप्ट का उपयोग कर सकते हैं डेबियन / उबंटू - create_template_postgis-debian.sh, यहाँ

मुझे उम्मीद है इससे आपको मदद मिली होगी...


शायद यह मामला है कि उपयोगकर्ता के postgresपास टर्मिनल का उपयोग करने की अनुमति नहीं है, इस स्थिति में sudo su postgresकमांड चुपचाप विफल हो जाएगी। इसे प्राप्त करने के लिए आप इन सभी आदेशों को पूर्ववर्ती कर सकते sudo -u postgresहैं ताकि कमांड को पोस्टग्रेज उपयोगकर्ता के लिए स्विच किए बिना पोस्टग्रैज उपयोगकर्ता के रूप में चला सकें ।
रिंग

2

जहाँ तक मुझे याद है कि उन टेम्प्लेट डेटाबेस बनाने के लिए कार्यशाला के लिए कुछ स्क्रिप्ट उपलब्ध है। यह यहां भी उपलब्ध है: https://github.com/pgRout/pgrout-contrib/blob/master/scripts/create_templates.sh

आखिरकार आपको यहां और वहां कुछ चीजें बदलने की जरूरत है, क्योंकि यह डेबियन / उबंटू के लिए काम करने के लिए लिखा गया था। लेकिन आपको सिर्फ वही चाहिए जो आपको चाहिए।


2
#!/bin/sh
instance_name=$1
psql << EOF
create database $instance_name;
\connect $instance_name
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
EOF

मैं इस बैश स्क्रिप्ट का उपयोग डाक से सक्षम और स्टड पर दिए गए नाम के साथ नए डेटाबेस के निर्माण को निष्पादित करने के लिए करता हूं।

9.3 पोस्ट करता है

पोस्टगिस 2.1.3

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.