I usually configure ImageMosaic for time-series plain GeoTIFF granules
so my advice might not be 100% accurate but I hope it helps anyway.
Firstly, your schema seems wrong to me: you have two types specified for
ingestion - java.util.Date and a Double after that. Perhaps another
attribute of double type is missing or the :Double part should be deleted.
Otherwise, I recommend using indexer.xml instead of indexer.properties
for configuration. In your case it might look like this:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Indexer>
<domains>
<domain name="ingestion">
<attributes><attribute
ref="timeCollector">ingestion</attribute></attributes>
</domain>
</domains>
<schemas>
<schema name="default">
<attributes>*the_geom:Polygon,location:String,ingestion:java.util.Date</attributes>
</schema>
</schemas>
<coverages>
<coverage>
<name>your_coverage_name</name>
<schema ref="default"></schema>
<domains>
<domain ref="ingestion"/>
</domains>
</coverage>
</coverages>
<collectors>
<collector name="timeCollector">
<value>regex=([0-9]{14}),format=yyyyMMddHHmmss,fullPath=true</value><!--
configure according to your time format-->
<spi>TimestampFileNameExtractorSPI</spi>
<mapped>ingestion</mapped>
</collector>
</collectors>
<parameters>
<parameter name="AbsolutePath" value="true" /><!-- if true,
then database table will contain full paths in location column -->
<parameter name="Caching" value="false" />
<parameter name="CanBeEmpty" value="false" />
<parameter name="IndexingDirectories"
value="/path/to/directory/to/be/indexed" /><!-- this path might be
relative if you know current working directory of your GeoServer/Tomcat
instance -->
<parameter name="Name" value="your_coverage_name" /><!-- this
value is used as the name of the database table -->
<parameter name="Recursive" value="true" /><!-- true if path
specified in IndexingDirectories needs to be traversed recursively which
I guess is your case -->
<parameter name="TimeAttribute" value="ingestion" /><!-- your
time dimension attribute is called ingestion -->
</parameters>
</Indexer>
Usually my ImageMosaic folder structure is like this
(/opt/geoserver_data is the GEOSERVER_DATA_DIR)
* the indexer.xml and datastore.properties files are in a
/opt/geoserver_data/data/<IMAGEMOSAIC_DIRECTORY>
* there is a subdirectory, usually with a date tree structure for
storing granules from separate days in separate directories:
/opt/geoserver_data/data/<IMAGEMOSAIC_DIRECTORY>/tiff/YYYY/MM/DD/some_file_YYYYMMDDHHmss.tiff
* in indexer.xml I have *Recursive *parameter set to *true
** I usually use absolute path to the tiff directory as
*IndexingDirectories* parameter value, e.g.
/opt/geoserver_data/data/<IMAGEMOSAIC_DIRECTORY>/tiff
Finally, if I encounter any problems during ImageMosaic creation I
ensure to:
* set GeoServer logging to VERBOSE
* drop any database table created (ImageMosaic will refuse to create
store if a table with the same name already exists), along with index
and metadata (if using Oracle)
* try it again and look into the log (usually the problem is not
revealed in the last stacktrace in the log, but in some before last)
* if it doesn't help or I still cannot figure out what is wrong I launch
Eclipse debugger and examine what EXACTLY is wrong (I used it a lot
until I figured out how to properly configure time parsing regexes)
Regards,
Peter Kovac
On 29. 9. 2017 10:40, Darell van der Voort wrote:
Hi Peter,
This is my indexer.properties configuration:
Caching=false
TimeAttribute=ingestion
Schema=*the_geom:Polygon,location:String,ingestion:java.util.Date:Double
PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](ingestion)
And this is my 0.properties which is automatically generated for the
lowest zoomlevel (0):
#-Automagically created from GeoTools-
#Wed Sep 27 14:50:18 UTC 2017
MosaicCRS=EPSG\:32617
Levels=0.062,0.062
Heterogeneous=false
TimeAttribute=ingestion
AbsolutePath=false
Name=0
TypeName=0
Caching=false
ExpandToRGB=false
LocationAttribute=location
SuggestedSPI=it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReaderSpi
CheckAuxiliaryMetadata=false
LevelsNum=1
So like I said, the plugin automatically configures level 0 to the
PostgreSQL DB if I add the datastore.properties files, but refuses to
do so for other levels if I add the datastore.properties file to the
folder levels. If I do not add the datastore.properties file to the
additional levels, the plugin automatically creates a shapefile for
these levels, while using the DB connection for level 0. This
combination works, even with a time dimension. However I would like to
use the DB connection for all levels and use unique table names in the DB.
Kind regards,
Darell
On Fri, Sep 29, 2017 at 9:59 AM, Peter Kovac
<peter.ko...@microstep-mis.com <mailto:peter.ko...@microstep-mis.com>>
wrote:
Hi Darell,
can you post your indexer.xml configuration for the imagemosaic?
Regards,
Peter Kovac
On 28. 9. 2017 9:59, Darell van der Voort wrote:
Hello everybody,
I'm running Geoserver 2.11.2 on Java 1.8.0_144 32 bits on Amazon
Linux together with Tomcat 9. The plugins I have installed are
imagemosaic, imagepyramid, GeowebCache (internal) and Geofence.
When using the imagemosaic plugin I am able to use a Postgresql
DB for storing the granules and time dimension via a
datastore.properties file. The file looks like:
SPI=org.geotools.data.postgis.PostgisNGJNDIDataStoreFactory
schema=database_schema_name
Loose\ bbox=true
Estimated\ extends=false
validate\ connections=true
Connection\ timeout=10
preparedStatements=true
jndiReferenceName=java:comp/env/jdbc/postgis
Which work as expected. However when I add the same file in the
imagepyramid datastructure, this setup fails. When I add this
datastore.properties in just the lowest level (0) then that level
gets configured in a database table, while the higher levels are
configured using a shapefile. When I add a datastore.properties
to all levels, geoserver returns the following error:
2017-09-28 07:39:40,780 ERROR [gce.imagemosaic] -
java.io.IOException
at
org.geotools.gce.imagemosaic.ImageMosaicConfigHandler.createGranuleCatalogFromDatastore(ImageMosaicConfigHandler.java:406)
at
org.geotools.gce.imagemosaic.ImageMosaicConfigHandler.createCatalog(ImageMosaicConfigHandler.java:329)
at
org.geotools.gce.imagemosaic.ImageMosaicConfigHandler.buildCatalog(ImageMosaicConfigHandler.java:962)
at
org.geotools.gce.imagemosaic.ImageMosaicConfigHandler.indexingPreamble(ImageMosaicConfigHandler.java:941)
at
org.geotools.gce.imagemosaic.ImageMosaicDirectoryWalker$MosaicDirectoryWalker.<init>(ImageMosaicDirectoryWalker.java:109)
at
org.geotools.gce.imagemosaic.ImageMosaicDirectoryWalker.run(ImageMosaicDirectoryWalker.java:197)
at org.geotools.gce.imagemosaic.Utils.createMosaic(Utils.java:460)
at org.geotools.gce.imagemosaic.Utils.checkSource(Utils.java:1336)
at
org.geotools.gce.imagemosaic.ImageMosaicReader.initReaderFromURL(ImageMosaicReader.java:532)
at
org.geotools.gce.imagemosaic.ImageMosaicReader.<init>(ImageMosaicReader.java:479)
at
org.geotools.gce.imagemosaic.ImageMosaicFormat.getReader(ImageMosaicFormat.java:504)
at org.geotools.gce.imagepyramid.Utils.checkSource(Utils.java:200)
at
org.geotools.gce.imagepyramid.ImagePyramidReader.<init>(ImagePyramidReader.java:177)
at
org.geotools.gce.imagepyramid.ImagePyramidFormat.getReader(ImagePyramidFormat.java:249)
at
org.geotools.gce.imagepyramid.ImagePyramidFormat.getReader(ImagePyramidFormat.java:56)
at
org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1511)
at
org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1441)
at
org.geoserver.catalog.impl.CoverageStoreInfoImpl.getGridCoverageReader(CoverageStoreInfoImpl.java:59)
.....
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at
org.geotools.gce.imagemosaic.ImageMosaicConfigHandler.createGranuleCatalogFromDatastore(ImageMosaicConfigHandler.java:389)
... 160 more
Is it possible to configure the granules of all levels in the
database? And if so, how would my datastore.properties file look
like? Like I said, it works fine for the lowest level (0) but it
fails for all the levels above. If it may not be possible, is it
sufficient to use the shapefiles as an index for the granules?
The geoserver is used in a production environment and I am
worried about performance issues when using the shapefiles as index.
Furthermore the imagepyramid automatically names the table after
the level folder (0). This folder and table name are
automatically created when configuring the datastore. Is there a
way to custom name the folder and thus the table name? Otherwise
I could end up with multiple '0' tables in the same schema.
Many thanks!
Kind regards,
Darell
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org!http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list
Please make sure you read the following two resources before posting to
this list:
- Earning your support instead of buying it, but Ian
Turton:http://www.ianturton.com/talks/foss4g.html#/
<http://www.ianturton.com/talks/foss4g.html#/>
- The GeoServer user list posting
guidelines:http://geoserver.org/comm/userlist-guidelines.html
<http://geoserver.org/comm/userlist-guidelines.html>
Geoserver-users@lists.sourceforge.net
<mailto:Geoserver-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geoserver-users
<https://lists.sourceforge.net/lists/listinfo/geoserver-users>
--
Peter Kovac
IMS Programmer
MicroStep-MIS
peter.ko...@microstep-mis.com <mailto:peter.ko...@microstep-mis.com>
--
Peter Kovac
IMS Programmer
MicroStep-MIS
peter.ko...@microstep-mis.com
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list
Please make sure you read the following two resources before posting to this
list:
- Earning your support instead of buying it, but Ian Turton:
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines:
http://geoserver.org/comm/userlist-guidelines.html
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users