使用Geoserver發布一個空間表,在圖層預覽的過程中沒有任何問題,但是當我根據這個空間表傳創建視圖再發布wms服務,訪問時就會報錯,錯誤信息如下:
Caused by: java.sql.SQLException: ORA-29902: 執行 ODCIIndexStart() 例行程序中出
錯
ORA-13208: 對運算符 [window SRID does not match layer SRID] 求值時出現內部錯誤
ORA-06512: 在 "MDSYS.SDO_INDEX_METHOD_10I", line 333
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.
java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedSta
tement.java:955)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStateme
nt.java:1060)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPrepa
redStatement.java:839)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
nt.java:1132)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrep
aredStatement.java:3316)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePrepare
dStatement.java:3361)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele
gatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele
gatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele
gatingPreparedStatement.java:96)
at org.geotools.jdbc.JDBCFeatureReader.<init>(JDBCFeatureReader.java:167
)
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSour
ce.java:599)
... 117 more
05 十二月 08:55:39 ERROR [geoserver.ows] -
根據錯誤信息,是服務訪問的srid和數據索引的srid不匹配導致,可以猜想,在某一環節出現問題,明明是同一份數據。經過多方面的驗證發現,在oracle spatial空間元表里沒有這個視圖的記錄,難道是這個問題?也就是說在元表中創建一條記錄,就會成功?ok,嘗試一下:
insert into user_sdo_geom_metadata values
('V_REGION_MAPNO_R',
'SHAPE',sdo_dim_array(sdo_dim_element('X', -180, 180, 0.5),
sdo_dim_element('Y', -90, 90, 0.5)
),4326)
更新了以后,再次預覽wms圖層,發現還是上面的錯誤,難道不是這樣的,但是想想不可能有其他原因,於是將geoserver重啟一下,一切OK!如圖:

有時重啟就是那么任性!【把電腦重啟能解決百分之九十的問題】
