GeoServer में PostGIS रैस्टर्स का प्रकाशन?


23

मैं GeoGerver का उपयोग करके PostGIS रैस्टर्स कैसे प्रकाशित करूं?

मैंने बहुत समय बिताया है कि इमेज मोज़ेक JDBC का उपयोग करके एक Raster डेटा स्रोत बनाने की कोशिश की जा रही है लेकिन कोई भाग्य नहीं है।

प्रदर्शन किए गए चरण:
1. JDBC इमेज मोज़ेक एक्सटेंशन डाउनलोड और इंस्टॉल किया गया (ठीक काम किया गया)
2. "कनेक्शन पैरामीटर" फ़ाइलों को बनाया गया:

connect.postgis.xml.inc:

<connect>
  <dstype value="DBCP"/>
  <username value="postgres" />
  <password value="password" />
  <jdbcUrl value="jdbc:postgresql://localhost:5432/db1" />
  <driverClassName value="org.postgresql.Driver"/>
  <maxActive value="10"/>
  <maxIdle value="0"/>
</connect>


mapping.postgis.xml.inc:

<spatialExtension name="postgis"/>
<mapping>
    <masterTable name="mosaic" >
        <coverageNameAttribute name="name"/>
        <maxXAttribute name="maxX"/>
        <maxYAttribute name="maxY"/>
        <minXAttribute name="minX"/>
        <minYAttribute name="minY"/>
        <resXAttribute name="resX"/>
        <resYAttribute name="resY"/>
        <tileTableNameAtribute name="tiletable" />
    </masterTable>
    <tileTable>
        <blobAttributeName name="rast" />
    </tileTable>
</mapping>


osm.postgis.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
  <!ENTITY mapping PUBLIC "mapping"  "mapping.postgis.xml.inc">
  <!ENTITY connect PUBLIC "connect"  "connect.postgis.xml.inc">]>
<config version="1.0">
  <coverageName name="gfm"/>
  <coordsys name="EPSG:25832"/>
  <!-- interpolation 1 = nearest neighbour, 2 = bilinear, 3 = bicubic -->
  <scaleop  interpolation="1"/>
  <verify cardinality="false"/>
  &mapping;
  &connect;
</config>

जहाँ "मोज़ेक" एक तालिका है (कॉलम: नाम, टाइटलेटेबल, मिनएक्स, मिनि, मैक्स, मैक्स, रेसएक्स, रेस) जिसमें एक पंक्ति है: "gfm, testrastertable,,,,,,"

3. में कॉन्फ़िगर की गई फ़ाइलों को सहेजा। ./geoserver/data_dir/coverages/
4. एक छवि मोज़ेक JDBC डेटा स्टोर जोड़ने की कोशिश करते समय मुझे निम्नलिखित त्रुटि प्राप्त होती है:

Error: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC



अपडेट: जियोसर लॉग

2012-10-24 14:09:11,404 DEBUG [org.geoserver] - Thread 14 locking in mode WRITE
2012-10-24 14:09:11,404 DEBUG [org.geoserver] - Thread 14 got the lock in mode WRITE
2012-10-24 14:09:11,406 DEBUG [geoserver.config] - Persisting coverage store raster_store
2012-10-24 14:09:11,408 DEBUG [geoserver.config] - Persisted org.geoserver.catalog.impl.CoverageStoreInfoImpl to /opt/geoserver/data_dir/workspaces/raster/raster_store/coveragestore.xml
2012-10-24 14:09:11,416 DEBUG [geoserver.config] - Persisted $Proxy15 to /opt/geoserver/data_dir/global.xml
2012-10-24 14:09:11,438 ERROR [imagemosaic.jdbc] - 
2012-10-24 14:09:11,438 WARN [imagemosaic.jdbc] - 
java.io.IOException
    at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCReader.<init>(ImageMosaicJDBCReader.java:163)
    at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCFormat.getReader(ImageMosaicJDBCFormat.java:209)
....
2012-10-24 14:09:11,439 INFO [geoserver.web] - Getting list of coverages for saved store file:coverages/osm.postgis.xml
java.lang.RuntimeException: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
    at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:115)
...
Caused by: java.lang.Exception: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
    at org.geoserver.catalog.CatalogBuilder.buildCoverage(CatalogBuilder.java:812)
    at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:82)
    ... 95 more
2012-10-24 14:09:11,441 DEBUG [geoserver.config] - Removing coverage store raster_store
2012-10-24 14:09:11,446 DEBUG [geoserver.config] - Persisted $Proxy15 to /opt/geoserver/data_dir/global.xml
2012-10-24 14:09:11,459 DEBUG [org.geoserver] - Thread 14 releasing the lock in mode WRITE

ऊपर प्रवेश करने वर्बोस के लिए बारी और लॉग फ़ाइल देखें
इयान Turton

बस लॉग के साथ अद्यतन ... मुझे बहुत ज्यादा नहीं बताता
एस्प

जैसा कि यहां कोई भी मदद करने में सक्षम नहीं लगता है, आप जियोसर्वर मेलिंग सूची की कोशिश कर सकते हैं: geoserver.org/display/GEOS/Mailing+Lists
GIS-Jonathan

इस सवाल पर कोई अपडेट?
पाब्लो

1
कोई अपडेट नहीं ... मुझे एक JDBC इमेज मोज़ेक बनाने का विचार छोड़ना पड़ा क्योंकि मैं इसे जियोसेवर में नहीं बना सका। मैं अब उपयोग कर रहा हूं ImagePyramid स्टोर और फाइलें डिस्क पर रखी गई हैं।
एस्प

जवाबों:


7

मैंने कई मुद्दों के माध्यम से काम किया, जो ओपी के समान ही जियोसर्वर में एक पोस्टगिस रेखापुंज का उपयोग करने की कोशिश कर रहा था। नीचे मैंने बताया है कि मैंने कैसे अपने रैस्टर डेटा को सफलतापूर्वक लोड किया है।

Preconfiguration: FME से उत्पन्न एक BNG जियोटिफ लेयर का उपयोग करके पोस्टगिस में आयात किया गया है raster2pgsql। उपयोग की गई कमांड थी:

raster2pgsql -s 27700 -I -M -C {geotiffName}.tif -t 100x100 -l 2,4,6 {schema}.{tableName} | psql -U {user} -d {database}

इसने अपने पिरामिड तालिकाओं के साथ रेखापुंज तालिका बनाई।

वर्तमान में मेरे सर्वर का एक उदाहरण है Geoserver 2.6.2। Postgis रिस्ते का उपयोग करने के लिए इसे एक्सटेंशन JDBC इमेज मोज़ेक की आवश्यकता होती है जिसे http://geoserver.org/release/2.6.2/ से डाउनलोड किया जा सकता है

विस्तार .jar तो में निकाला गया था WEB-INF/lib । इसके बाद जियोसर्वर को पोस्टगिस से चूहों का उपयोग करने में सक्षम करेगा। हालाँकि डेटा तक पहुँचने के लिए कई सेटिंग्स को कॉन्फ़िगर करने की आवश्यकता होती है।

: में निर्देशों का पालन http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html लेकिन थोड़ा बदलाव किया:

create table {schema}.MOSAIC (NAME varchar(254) not null,
     TileTable varchar(254)not null,
     minX FLOAT8,minY FLOAT8, maxX FLOAT8, maxY FLOAT8,resX FLOAT8, resY FLOAT8, primary key (NAME,TileTable))

अब एक "कवरेज" के लिए रिकॉर्ड डालें, उदाहरण में ओके नाम दिया गया है, ये आपके रेखापुंज टेबल हैं: मास्टर एक और पिरामिड वाले।

insert into {schema}.MOSAIC (name, tiletable) values ('oek', {Main raster table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 2 table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 4 table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 6 table name});

डॉक्स के अनुसार, Postgis JDBC ड्राइवरों के लिए <संस्करण 9 डेटाबेस में एक संपत्ति सेट करना आवश्यक है:

ALTER DATABASE dbname SET bytea_output TO 'escape'

अब भू-विन्यास विन्यास:

आपके जियोसेवर डेटा निर्देशिका के भीतर एक निर्देशिका बनाते हैं /data/coverages, इसमें 3 फ़ाइलों को शामिल करने की आवश्यकता होती है:connect.pgraster.xml.inc, mapping.pgraster.xml.inc, oek.pgraster.xml

उनके नामकरण और सामग्री के लिए http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html का पालन करें । डेटाबेस कनेक्शन स्ट्रिंग और उपयोगकर्ता नाम / पासवर्ड सेटिंग्स को स्पष्ट रूप से समायोजित करेंconnect.pgraster.xml.inc

mapping.pgraster.xml.inc वह जगह है जहां हमें रेखापुंज तालिकाओं को सही ढंग से संदर्भित करने की आवश्यकता होती है।

<spatialExtension name="pgraster"/>
 <mapping>
  <masterTable name="MOSAIC" >
          <coverageNameAttribute name="name"/>
          <maxXAttribute name="maxX"/>
          <maxYAttribute name="maxY"/>
          <minXAttribute name="minX"/>
          <minYAttribute name="minY"/>
          <resXAttribute name="resX"/>
          <resYAttribute name="resY"/>
          <tileTableNameAtribute  name="tiletable" />
  </masterTable>
  <tileTable>
          <blobAttributeName name="rast" />
  </tileTable>
</mapping>

तो यह उन मूल्यों को प्राप्त करेगा जिन्हें हमने MOSAIC तालिका में जोड़ा है, nameमान उन स्तंभों के हैं MOSAIC, जो हमारी रेखापुंज तालिका और पिरामिड तालिकाओं से जुड़ते हैं। rastरेखापुंज तालिकाओं में रेखापुंज स्तंभ का नाम है।

में oek.pgraster.xmlमेक सुनिश्चित करें कि आपके एसआरएस सही ढंग से इस मामले में सेट किया गया है, 27700 BNG।

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
  <!ENTITY mapping PUBLIC "mapping"  "mapping.pgraster.xml.inc">
  <!ENTITY connect PUBLIC "connect"  "connect.pgraster.xml.inc">
]>

<config version="1.0">
  <coverageName name="oek"/>
  <coordsys name="EPSG:27700"/>
  <!-- interpolation 1 = nearest neighbour, 2 = bipolar, 3 = bicubic -->
  <scaleop  interpolation="1"/>
<axisOrder ignore="false"/>
  &mapping;
  &connect;
</config

जियोसेवर में हम अब एक नया डेटास्टोर जोड़ सकते हैं।

नए पर जाएं नया स्टोर जोड़ें

ImageMosaicJDBC का चयन करें

इसे एक नाम दें और URL को सेट करें file:coverages/oek.pgraster.xml

इसे सहेजें, और कोई त्रुटि नहीं पार की गई उंगलियां वापस आ गई हैं। यदि वे हैं, तो जियोसेवर लॉग की जांच करें जो उम्मीद करते हैं कि समस्या क्या है, उम्मीद है कि बस एक टाइपो या नामकरण मुद्दा होगा।

एक नई परत जोड़ने के लिए और नए रेखापुंज डेटा स्टोर का चयन करें।

अपनी नई परत / कवरेज का नाम ओइक चुनें और प्रकाशित करें।

फिर परत सेटिंग्स में अपने समन्वय प्रणाली और उचित रूप से बक्से को समायोजित करें।

रेखापुंज शैली का पालन करने के लिए डॉक्स यहां देखें: http://docs.geoserver.org/latest/en/user/styling/sld-reference/rastersymbolizer.html

मैंने एक शैली जोड़ी:

<RasterSymbolizer>
 <Opacity>1.0</Opacity>
  <ColorMap>
   <ColorMapEntry color="#ffffff" quantity="1" label="label1" opacity="1"/>
   <ColorMapEntry color="#0000ff" quantity="200" label="label2" opacity="1"/>
  </ColorMap>
</RasterSymbolizer>

इस रंग ने मेरे चूहों को नीला कर दिया, जहां उनका मूल्य था।

फिर आपको एक प्रयोग करने योग्य परत होनी चाहिए।

डिस्क्लेमर: मैं कोई जीआईएस विशेषज्ञ नहीं हूं, और मैंने जो कुछ भी काम किया, वह परीक्षण और त्रुटि थी। मुझे इसमें कोई संदेह नहीं है कि इसे करने के लिए बेहतर तरीके हैं, लेकिन इस समय मैं केवल अवधारणा के प्रमाण पर काम कर रहा हूं ताकि यह पुष्टि की जा सके कि क्या हमारे पास पोस्टगिस में रेखापुंज डेटा का उपयोग करने की क्षमता है। रेखापुंज मूल्यों और स्टाइल जैसे महीन विवरण ऐसी चीजें हैं जिनकी मुझे अभी भी आवश्यकता है। अगर मैं कोई और प्रगति करता हूं तो मैं अपने उत्तर को अपडेट करूंगा।


2

PostGIS रेखापुंज प्लगइन के विन्यास निर्देशों के बाद , आपको प्रतिस्थापित करने का प्रयास करना चाहिए

<spatialExtension name="postgis"/>

साथ में

<spatialExtension name="pgraster"/>

विन्यास फाइल में mapping.postgis.xml.inc

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