/examind-community

Examind Community (formerly known as Constellation-SDI) is an open source platform dedicated to geographic data infrastructures development. It constitutes the foundation of custom developments carried out by Geomatys and results from more than 10 years of R&D.

Primary LanguageJavaOtherNOASSERTION

EXAMIND Community

Examind Community makes it possible to easily create a complete Spatial Data Infrastructure, from cataloging geographic resources to operate a platform of sensors that feeds back information in real time.

https://www.examind.com

  • WMS : 1.1.1 and 1.3.0 (INSPIRE-compliant)
  • WMTS : 1.0.0
  • CSW : 2.0.0, 2.0.2 and 3.0.0 (INSPIRE-compliant)
  • SOS : 1.0.0 and 2.0.0 (need PostGIS database)
  • WFS : 1.1.0 and 2.0.0 (INSPIRE-compliant)
  • WPS : 1.0.0
  • WCS : 1.0.0

Supported input data

  • Vector :
    • Shapefiles
    • GeoJSON
    • KML
    • GPX
    • GML
    • CSV (with geometry in WKT)
    • MapInfo MIF/MID format
    • PostGIS database
  • Raster :
    • Geotiff
    • NetCDF/NetCDF+NCML
    • Grib
    • Images with .tfw and .prj files for projection and transformation informations

Java version support

  • 1.0.23 is the last stable version supporting java 8.
  • Any version after that are based upon Java 17

Get started

Build from sources

Requirements

  • JDK 17+ from Oracle. Can be downloaded here for your platform.
  • Maven 3.x found here

Procedure

git clone https://github.com/Geomatys/examind-community.git
cd examind-community
mvn install -DskipTests

Note 1 : for smaller download without git history: git clone --depth 1 https://github.com/Geomatys/examind-community.git

Note 2 : if you want to build with tests, an in-memory HSQL database will be created, however if you want to use a PostgreSQL database, you'll need an empty database. then execute the following command:

mvn clean install -Dtest.database.url="postgres://<user>:<password>@<host>:<port>/<database name>"

example: postgres://cstl:admin@localhost:5432/cstl-test

Deploy using Docker

Build Docker image

When building the project, add the docker profile to also compile docker image. This will produce a Tomcat based image of Examind-Community application. The resulting image will be images.geomatys.com/examind/examind-community:latest.

Tip: you can customize the docker tag of the image by specifying the docker.tag property.

Example: Build the project and the docker image, setting the image tag to myVersion:

mvn install -Pdocker -Ddocker.tag=myVersion

Tip: If you've already compiled the project, and just want to rebuild docker image, you can reduce work by re-packaging the exa-bundle module with docker profile:

mvn package -Pdocker -pl :exa-bundle

Run

Go to docker folder

cd <base directory>/docker

then type the command

./run.sh

or

docker-compose up -d

the web application will be available at http://localhost:8080/examind you can authenticate with user = admin and password = admin.

Deploy on Tomcat

Requirements

To run Examind, you'll need :

  • JDK 17. Can be downloaded here for your platform.
  • PostgreSQL 9.x (found here) with a database named constellation owned by role:password cstl:admin
  • Apache Tomcat 7.0.47+ with support of websockets found here or
  • Apache Tomcat 8.0.39+ with support of websockets found here

Tomcat configuration

Create a setenv.sh executable file in bin/ folder of Tomcat with :

CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Xmx1024m -XX:MaxPermSize=128m -Dgeotk.image.cache.size=128m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./constellation.hprof $CSTL_OPTS -Dspring.profiles.active=standard"
JAVA_HOME=<PATH_TO_JDK>
JRE_HOME=<PATH_TO_JDK>/jre

On tomcat 8 add the following property

CATALINA_OPTS="$CATALINA_OPTS -Dorg.apache.catalina.core.ApplicationContext.GET_RESOURCE_REQUIRE_SLASH=true"

Tomcat startup :

<PATH_TO_TOMCAT>/bin/startup.sh

Tomcat shutdown :

<PATH_TO_TOMCAT>/bin/shutdown.sh

Usage

Browse http://localhost:8080/examind and authenticate with user admin and password admin.

Configuration

Examind retrieve his configuration through various inputs using following priority :

  1. System environment variables following standard naming convention
  2. Startup options (-Dproperty=value) following standard java properties naming convention
  3. External configuration file (referenced with -Dcstl.config=/path/to/config.properties option)
  4. Default embedded configuration

For example, database configuration can be specified from environment variable DATABASE_URL or startup/external property database.url.

Available configuration properties

  • database.url : application database URL in Hiroku like format. Default value postgres://cstl:admin@localhost:5432/constellation
  • epsg.database.url : EPSG database URL. Default value same as database.url
  • test.database.url : testing database URL. Default value postgres://test:test@localhost:5432/cstl-test
  • cstl.config : Path to application external configuration properties file. Optional, default null.
  • cstl.url : Examind application URL. Used by Examind to generate resources URLs.
  • cstl.home : Application home directory, used by Examind to store logs, indexes, ... . By default, Examind will create a .constellation directory in current user home folder.
  • cstl.data : Application data directory, used by Examind to store integrated data and some configurations ... . By default, Examind will create a data directory relative to cstl.home property.

SMTP server configuration (used to re-initialize user password) :

  • cstl.mail.smtp.from : Default value no-reply@localhost
  • cstl.mail.smtp.host : Default value localhost
  • cstl.mail.smtp.port : Default value 25
  • cstl.mail.smtp.username : Default value no-reply@localhost
  • cstl.mail.smtp.password : Default value mypassword
  • cstl.mail.smtp.ssl : Default value false

Database configuration syntax

It is recommended to use standard jdbc urls when specifying database url. A custom syntax is allowed, but not recommended anymore.

Contribute

Activate Git hooks

Examind use Git hooks to standardize commits message format.

rm .git/hooks/commit-msg
ln -s githook/* .git/hooks/