भौतिकवादी दृश्य ज्यामिति_रूपों में दिखाई नहीं देता है


12

मैंने PostGreSQL 9.3.1 पर चलने वाले PostGIS 2.1-सक्षम डेटाबेस में एक भौतिक दृश्य को परिभाषित किया है:

CREATE MATERIALIZED VIEW canvec_data.contours_m AS 
 SELECT
    contours_original.ogc_fid, 
    contours_original.elevation::integer AS elevation_orig, 
    CASE
        WHEN "substring"(contours_original.code::text, 1, 3) = '257'::text THEN round(contours_original.elevation::double precision * 0.3048::double precision)
        ELSE contours_original.elevation::double precision
    END AS elevation_m, 
    contours_original.wkb_geometry::geometry(Linestring,3578)
 FROM canvec_data.contours_original

मुझे शायद, गलती से, उम्मीद थी कि इस परिणामी इकाई (एक तालिका?) को public.geometry_columnsदृश्य में सूचीबद्ध किया जाएगा , और इस तरह जीआईएस दर्शक सॉफ्टवेयर जैसे क्यूजीआईएस द्वारा ठीक से व्याख्या की जाएगी।

भौतिकवादी दृश्य में दिखाई नहीं देता है public.geometry_columns

मैं क्या गलत कर रहा हूं?

धन्यवाद!

जवाबों:


16

आप कुछ भी गलत नहीं कर रहे हैं, आपने PostgreSQL 9.3 के नए भौतिक दृश्य सुविधा के लिए हमारे समर्थन में एक छेद की खोज की। मैंने सभी संबंधित शाखाओं को पैच कर दिया है, और आप स्वयं ज्यामिति की अपनी परिभाषा अपडेट कर सकते हैं। इस टिकट में परिवर्तन संदर्भ देखें ( http://trac.osgeo.org/postgis/ticket/2511 )

दरअसल, यहाँ कुछ है जिसे आप SQL विंडो में पेस्ट कर सकते हैं:

CREATE OR REPLACE VIEW geometry_columns AS 
  SELECT current_database()::varchar(256) AS f_table_catalog, 
    n.nspname::varchar(256) AS f_table_schema, 
    c.relname::varchar(256) AS f_table_name, 
    a.attname::varchar(256) AS f_geometry_column, 
    COALESCE(NULLIF(postgis_typmod_dims(a.atttypmod),2),
             postgis_constraint_dims(n.nspname, c.relname, a.attname),
             2) AS coord_dimension, 
    COALESCE(NULLIF(postgis_typmod_srid(a.atttypmod),0),
             postgis_constraint_srid(n.nspname, c.relname, a.attname),
             0) AS srid, 
    -- force to be uppercase with no ZM so is backwards compatible
    -- with old geometry_columns
    replace(
      replace(
        COALESCE(
          NULLIF(upper(postgis_typmod_type(a.atttypmod)::text), 'GEOMETRY'),
          postgis_constraint_type(n.nspname, c.relname, a.attname),
          'GEOMETRY'
        ), 'ZM', ''
      ), 'Z', ''
    )::varchar(30) AS type
  FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n
  WHERE t.typname = 'geometry'::name 
    AND a.attisdropped = false 
    AND a.atttypid = t.oid 
    AND a.attrelid = c.oid 
    AND c.relnamespace = n.oid 
    AND (c.relkind = 'r'::"char" OR c.relkind = 'v'::"char" OR c.relkind = 'm'::"char")
    AND NOT pg_is_other_temp_schema(c.relnamespace)
    AND NOT ( n.nspname = 'public' AND c.relname = 'raster_columns' )
    AND has_table_privilege( c.oid, 'SELECT'::text );

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