PostgreSQL में "सार्वजनिक" के अलावा एक कस्टम स्कीमा में PostGIS स्थानिक फ़ंक्शन जोड़ें


15

हाल ही में, मैंने एक PostgreSQL 9.1 डेटाबेस सर्वर पर pgAdmin का उपयोग करके PostGIS 2.0.3 डेटाबेस बनाया। "पोस्टगिस" एक्सटेंशन "एक्सटेंशन" में स्थापित पाया गया था। अल स्थानिक कार्यों को "सार्वजनिक" स्कीमा में जोड़ा गया था। कोई बात नहीं।

अब मैं अपने सभी डेटा को "जीसी" नामक एक नई योजना में संग्रहीत करना चाहता हूं। हालांकि, मैं उस "जीसी" स्कीमा में सभी स्थानिक फ़ंक्शन कैसे स्थापित कर सकता हूं? स्कीमा में कोई एकल फ़ंक्शन नहीं है। हालाँकि, जब मैंने ESRI ArcCatalog 10.1 से एक फीचर वर्ग को आयात / नया करने की कोशिश की, तो इस स्कीमा के लिए, इसने काम किया! फीचर वर्ग को QGIS में आयात और प्रदर्शित किया जा सकता है।

क्या कोई मुझे इसके बारे में कोई टिप या विचार दे सकता है?

मैं PostgreSQL और PostGIS के लिए नया हूं।


बस ध्यान दिया: पहले से ही gis.stackexchange.com/questions/43187/…
मार्टिन एफ

@MartinF इस प्रश्न का एक (अपूर्ण) उत्तर है जिस प्रश्न से आप जुड़े हैं, लेकिन यह प्रश्न वास्तव में कुछ बहुत ही अलग है।
केनी एविट

इस प्रश्न का शीर्षक "सार्वजनिक के अलावा अन्य स्कीमा में पोस्टजीआईएस स्थापित करना" भी हो सकता है।
केनी एविट

जवाबों:


3

यहाँ एक gcस्कीमा में PostGIS एक्सटेंशन स्थापित करने के लिए उदाहरण कमांड हैं :

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

उदाहरण के लिए PostGIS और उसकी वस्तुओं को एक नए स्कीमा के संस्करण 2.4.4 में ले जाने के लिए कमांड हैं।

CREATE SCHEMA gc;

UPDATE pg_extension
SET extrelocatable = TRUE
WHERE extname = 'postgis';

ALTER EXTENSION postgis
SET SCHEMA gc;

ALTER EXTENSION postgis
UPDATE TO "2.4.4next";

ALTER EXTENSION postgis
UPDATE TO "2.4.4";

यह कड़ाई से आवश्यक नहीं है; बस सहायक:

ALTER DATABASE whatever
SET search_path = public,gc;

1

केनी एविट ने पहले से ही सबसे महत्वपूर्ण चीजों को समझाया। फिर भी, यहां कुछ अतिरिक्त जानकारी दी गई है:

Postgresql में डेटाबेस, टेबलस्पेस और स्कीमा हैं, और एक डेटाबेस से दूसरे में जुड़ना प्रदर्शन करना असंभव है, क्योंकि वे सख्ती से अलग हो जाते हैं। एक डेटाबेस में एक से अधिक स्कीमा हो सकते हैं, और एक स्कीमा से दूसरे में कुछ जोड़ना संभव है। अधिक जानकारी के लिए, डॉक्स देखें:

PostGIS को अपने gc स्कीमा में लोड करने की एक और संभावना निम्न होगी:

t=# create schema gc;
CREATE SCHEMA
t=# set search_path to gc;
SET
t=# create extension postgis;
CREATE EXTENSION

मैं न तो आर्क कैटलॉग का विशेषज्ञ हूं और न ही pgadmin पर, लेकिन मुझे लगता है कि निम्नलिखित तीन संभावनाओं में से एक हुआ:

  1. Postgresql मूल रूप से ज्यामितीय डेटाटाइप्स का समर्थन करता है । लेकिन आपको जियो कॉन्टेक्ट्स में इस पर भरोसा नहीं करना चाहिए, क्योंकि सीआरएस मेटाडेटा के साथ-साथ ट्रांसफ़ॉर्मेशन कार्यक्षमता भी नहीं दी गई है। आप बस भाग्यशाली हो गए और कुछ भी नहीं टूटा।
  2. आर्क कैटलॉग किसी भी तरह, पोस्टगिस एक्सटेंशन नहीं मिलने के बाद, उपयोगकर्ता को सूचित किए बिना इसे बनाया। यह जांचने के लिए, आप उस चरण से पहले और बाद में मौजूदा तालिकाओं को देख सकते हैं।

Psql में, आप यह लिखकर कर सकते हैं:

\d
           List of Relations
 Schema |       Name        |   Type  | Owner 
--------+-------------------+---------+----------
 gc     | geography_columns | View    | postgres
 gc     | geometry_columns  | View    | postgres
 gc     | raster_columns    | View    | postgres
 gc     | raster_overviews  | View    | postgres
 gc     | spatial_ref_sys   | Table   | postgres

यदि आप इसे देखते हैं, तो PostGIS को एक एक्सटेंशन के रूप में स्थापित किया गया है। तीसरी संभावना यह होगी कि आर्ककॉस्टिक्स कुछ इस तरह से करे:

set search_path to $all_schemas;
import to gc;

इस मामले में, आप भी भाग्यशाली रहे। लेकिन शायद, ArcCatalog अंत में कुछ और अधिक परिष्कृत करता है ...


0

यहाँ आपका समाधान है:

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

यदि आप पहले से ही अपने सार्वजनिक स्कीमा में पोस्टजीस एक्सटेंशन स्थापित कर चुके हैं और जीसी में जाना चाहते हैं तो निम्नलिखित कोड लिखें:

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

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