Adaptar GeoNetwork

La página web del proyecto es http://geonetwork-opensource.org, el repositorio del código fuente es https://github.com/geonetwork/core-geonetwork.

Este artículo describe

  • La descarga del código fuente de GeoNetwork
  • La compilación del código fuente como web archive (.war)
  • La adaptación de la aplicación a GeOrellana

Pendiente: Lista de regiones para metadatos con rectángulo envolviente correspondiente.

Para descargar el código fuente se describe en http://geonetwork-opensource.org/downloads.html y la guía de desarrollo.
Se requiere GIT instalado. Luego ubicarse en el directorio geonetork

cd /geonetwork
git submodule init 
git subomdule update

Los requisitos para la compilación son JDK 1.7 o mayor, así como Maven.
Para instalar maven, el jdk y jre debemos ejecutar:

apt-get install maven openjdk-8-jre openjdk-8-jdk 

Para el módulo del interfaz web web-ui se recomienda el uso de closure. Luego ubicarnos dentro de la carpeta donde clonamos el repositorio y proceder con la compilación

cd geonetwork
mvn clean install -DskipTests

El manual de desarrolladores indica cómo checkout una versión específica, y su posterior compilación.

Para testear el código fuente se puede usar el servidor jetty integrado en maven en http://localhost/geonetwork:8080:

cd web
mvn jetty:run

En el caso de que se realizan cambios en el código fuente y se vuelve a testear la aplicación será necesario borrar archivos cacheados, y si deseado también la base de datos h2:

rm web/src/main/webapp/WEB-INF/data/wro4j-cache.h2.db web/src/main/webapp/WEB-INF/data/wro4j-cache.lock.db
rm web/geonetwork.*

Si se ha descargado el código fuente y compilado una versión específica se adapta esa misma. La adaptación puede realizarse en un branch nuevo, para no sobreescribirla con futuros actualizaciones del código fuente en la computadora.

Por ejemplo, para crear el branch georellana a partir de la versión 3.0.4:

git checkout 3.0.4
git submodule update
mvn clean install -DskipTests
git branch georellana-3.0.4
git checkout georellana-3.0.4 #una sola vez luego de crear la rama
#Hacer los cambios necesarios
git add 
git commit -m "Adaptaciones georellana"
#Pendiente 

Para GeOrellana se adapta lo siguiente:

  1. El menú principal
  2. El pie de la página
  3. El imagen coorporativo (colores de enlaces, etc.)
  4. La extensión del mapa de la búsqueda
  5. El lenguaje del interfaz de usuarios (solo español)

Después de haber adaptado el repositorio se realiza un commit y un push al repositorio Github de georellana (el comando push requiere configuración!!):

git add --all
git commit -m "adaptado a GeOrellana"
git push

El menú principal

En el menu principal se cambian los nombres y el orden de los enlaces a un lado, y al otro se añaden los enlaces a la wiki (página de inicio) y a la aplicación de meteo.

  1. En el archivo web-ui/src/main/resources/catalog/templates/top-toolbar.html se reemplaza el apartado
          <li>
            <a data-gn-active-tb-item="catalog.search#/home">
              <img class="gn-logo"
                   data-ng-src="../../images/logos/{{info.site.siteId}}.png?{{info.site.lastUpdate}}"/>
              <span class="visible-lg">{{info.site.name}}</span>
            </a>
          </li>

    con

          <li>
            <a  href="../../../wiki">
              <img class="gn-logo"
                   data-ng-src="../../../img/logos/logo.png"/>
              <span class="visible-lg"> Inicio</span>
            </a>
          </li>
          <li>
            <a data-gn-active-tb-item="catalog.search#/home">
              <i class="fa fa-location-arrow"></i>
              <span class="visible-lg"> Cat&aacute;logo</span>
            </a>
          </li>
  2. Detrás de <li> adminConsole se añade el enlace a la aplicación de meteorología
          <li class="dropdown" >
    	<a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
    	  <i class="fa fa-eye" aria-hidden="true"></i>
    	  <span class="visible-lg"> Apps </span><span class="caret"></span>
    	</a>
    	<ul class="dropdown-menu" role="menu">
    	  <li>
    	   <a href="../../../apps/meteo">
    	     <i class="fa fa-bolt"></i>
    	     <span class="visible-lg"> Meteo</span>
    	   </a>
    	  </li>
    	</ul>
          </li>
  3. Se remueve el selector de lenguajes borrando el siguiente apartado <form>
        <form class="navbar-form navbar-right" role="language">
          <div class="form-group pull-right"
               data-gn-language-switcher="lang"
               data-langs="langs"
               data-lang-labels="langLabels"/>
        </form>

El pie de la página

Sin pie de página: Borrar el siguiente div en el archivo web-ui/src/main/resources/catalog/views/default/templates/index.html

<div class="navbar navbar-default gn-bottom-bar">
  <ul class="nav navbar-nav">
    <li><a href="http://geonetwork-opensource.org/">
      <i class="fa fa-fw"></i>
      <span data-translate="">about</span>
    </a></li>
    <li class="hidden-sm"><a href="https://github.com/geonetwork/core-geonetwork">
      <i class="fa fa-github"></i>
      <span data-translate="">github</span></a></li>
    <li>
      <a data-translate=""
         data-translate-values="{platform: '{{info.site.platform.name}}', version: '{{info.site.platform.version}}', subversion: '{{info.site.platform.subVersion}}'}">
        versionDetails</a>
    </li>
    <li>
      <a href="rss.search?sortBy=changeDate&georss=simplepoint"
              title="{{'lastRecords' | translate}}">
        <i class="fa fa-rss"></i>
      </a>
    </li>
  </ul>
</div>

Imagen corporativo de la web

Para adaptar los colores de los enlaces, botones, así como el diseño y layout del menú principal se añaden los siguientes líneas al archivo gn_view.less ubicado en el directorio

 web-ui/src/main/resources/catalog/views/default/less
.navbar {
  margin: 1px 1px 18px 1px;
  border-width:0px 0px 5px 0px;
  border-image:url("../../img/logos/pachakutic.jpg") 5;
}
.navbar-nav > li > a {
 height: 55px;
}
.btn-primary {
  background-color: #903d99;
  border-color: #00419b;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
  background-color: #783480;
  border-color: #00419b;
}
.btn-link {
  color: #903d99;
}
.btn-link:hover, .btn-link:focus, .btn-link:active {
  color: #783480;
}
a {
  color: #903d99;
}
a:hover, a:focus {
  color: #783480;
}

Para testear la instalación se puede remplazar la línea del border-image de .navbar con
border-image:url(“http://geo.gporellana.gob.ec/img/logos/pachakutic.jpg”) 5;

La extensión del mapa en la búsqueda

Para que el visor carga por defecto la extensión de GeOrellana se adaptan las coordenadas y los niveles de zoom en

  1. El archivo xml /web/src/main/webapp/WEB-INF/data/data/resources/map/config-viewer.xml las coordenadas
          <ows:LowerCorner>-8641464.000526832 -174152.000612247</ows:LowerCorner>
          <ows:UpperCorner>-8369795.000054762 -5359.00000408245</ows:UpperCorner> 
  2. El archivo javascript /web-ui/src/main/resources/catalog/views/default la coordenada center y dos veces el factor de zoom
              var mapsConfig = {
                center: [-8505629.0240585705, -89755.04789996],
                zoom: 6
                //maxResolution: 9783.93962050256
              };
     
              var searchMap = new ol.Map({
                controls:[],
                layers: [new ol.layer.Tile({
                  source: new ol.source.OSM()
                })],
                view: new ol.View({
                  center: mapsConfig.center,
                  zoom: 6
                })
              });

Lenguaje español

Español como lenguaje por defecto

Actualmente es la única manera de especificar el uso de un lenguaje único que se difine como el lenguaje por defecto, pero se prevee corregir vea https://github.com/geonetwork/core-geonetwork/issues/1579

Se especifica el lenguaje por defecto en los siguientes archivos xml:

  1. en el archivo web/src/main/webapp/WEB-INF/spring-servlet.xml se cambia el valor de defaultLocale a spa:
            <bean id="localeResolver"
                    class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
                    <property name="defaultLocale" value="spa" />
            </bean>
  2. y en el archivo websrc/main/webapp/WEB-INF/config.xml
    	<language>spa</language> 
  3. para que se usa solo el lenguaje por defecto se añade una línea en core/src/main/java/org/fao/geonet/web/LocaleRedirects.java
        //Después de la siguiente línea
        String userLang = langHeader.split("-|,", 2)[0].toLowerCase();
        //Se añade esta línea
        userLang = "unknown";

Corregir un error debido a nombres de archivos

Solo necesario si el interfaz de usuarios no se muestra en español, se supone que en una de los próximas actualizaciones este paso ya no sea necesario al que se va a corregir este error.

En la carpeta web-ui/src/main/resources/catalog/locales se copian los siguientes archivos:

cp es-admin.json sp-admin.json
cp es-core.json sp-core.json
cp es-editor.json sp-editor.json
cp es-search.json sp-search.json

Las regiones predefinidos de los metadatos

Se actualiza el archivo web/src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/place/regions.rdf con el siguiente código:

regions.rdf
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"
         xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:foaf="http://xmlns.com/foaf/0.1/"
         xmlns:gml="http://www.opengis.net/gml#" xmlns:grg="http://www.isotc211.org/schemas/grg/"
         xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:void="http://rdfs.org/ns/void#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:skos="http://www.w3.org/2004/02/skos/core#"
         xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
  <skos:ConceptScheme rdf:about="http://georellana.org/thesaurus/georellana">
    <dc:title>Regiones y zonas Administrativas GEOrellana.</dc:title>
    <dc:description>Elaborado por GEOrellana.</dc:description>
    <dcterms:issued>2015-09-11 12:00:00</dcterms:issued>
    <dcterms:modified>2015-09-11 12:00:00</dcterms:modified>
  </skos:ConceptScheme>
  <!-- Main Concept-->
  <skos:Concept rdf:about="http://georellana.org/regiones#Región">
    <skos:prefLabel xml:lang="en">Region</skos:prefLabel>
    <skos:prefLabel xml:lang="es">Región</skos:prefLabel>
    <skos:inScheme rdf:resource="http://georellana.org/regiones" />
    <skos:narrower rdf:resource="http://georellana.org/regiones#1" />
    <skos:narrower rdf:resource="http://georellana.org/regiones#2" />
    <skos:narrower rdf:resource="http://georellana.org/regiones#3" />
    <skos:narrower rdf:resource="http://georellana.org/regiones#4" />
    <skos:narrower rdf:resource="http://georellana.org/regiones#5" />
  </skos:Concept>
 
  <skos:Concept rdf:about="http://georellana.org/regiones#1">
    <skos:prefLabel xml:lang="es">Orellana</skos:prefLabel>
    <gml:BoundedBy>
      <gml:Envelope gml:srsName="http://www.opengis.net/gml/srs/epsg.xml#epsg:4326">
        <gml:lowerCorner>-77.62759 -1.564241</gml:lowerCorner>
        <gml:upperCorner>-75.187147 -0.048144</gml:upperCorner>
      </gml:Envelope>
    </gml:BoundedBy>
    <skos:broader rdf:resource="http://georellana.org/regiones#Región" />
  </skos:Concept>  
 
  <skos:Concept rdf:about="http://georellana.org/regiones#2">
    <skos:prefLabel xml:lang="es">Amazonia ecuadoriana</skos:prefLabel>
    <gml:BoundedBy>
      <gml:Envelope gml:srsName="http://www.opengis.net/gml/srs/epsg.xml#epsg:4326">
        <gml:lowerCorner>-80 -5</gml:lowerCorner>
        <gml:upperCorner>-75.21684 0.8</gml:upperCorner>
      </gml:Envelope>
    </gml:BoundedBy>
    <skos:broader rdf:resource="http://georellana.org/regiones#Región" />
  </skos:Concept>  
 
  <skos:Concept rdf:about="http://georellana.org/regiones#3">
    <skos:prefLabel xml:lang="es">Ecuador</skos:prefLabel>
    <gml:BoundedBy>
      <gml:Envelope gml:srsName="http://www.opengis.net/gml/srs/epsg.xml#epsg:4326">
        <gml:lowerCorner>-91.6639 -5.00031</gml:lowerCorner>
        <gml:upperCorner>-75.21684 1.43778</gml:upperCorner>
      </gml:Envelope>
    </gml:BoundedBy>
    <skos:broader rdf:resource="http://georellana.org/regiones#Región" />
  </skos:Concept>
 
  <skos:Concept rdf:about="http://georellana.org/regiones#4">
    <skos:prefLabel xml:lang="es">Amazonia</skos:prefLabel>
    <gml:BoundedBy>
      <gml:Envelope gml:srsName="http://www.opengis.net/gml/srs/epsg.xml#epsg:4326">
        <gml:lowerCorner>-80 -15</gml:lowerCorner>
        <gml:upperCorner>-43 5</gml:upperCorner>
      </gml:Envelope>
    </gml:BoundedBy>
    <skos:broader rdf:resource="http://georellana.org/regiones#Región" />
  </skos:Concept>
 
  <skos:Concept rdf:about="http://georellana.org/regiones#5">
    <skos:prefLabel xml:lang="es">América Latina</skos:prefLabel>
    <gml:BoundedBy>
      <gml:Envelope gml:srsName="http://www.opengis.net/gml/srs/epsg.xml#epsg:4326">
        <gml:lowerCorner>-117 -55.4</gml:lowerCorner>
        <gml:upperCorner>-33.8 32.7</gml:upperCorner>
      </gml:Envelope>
    </gml:BoundedBy>
    <skos:broader rdf:resource="http://georellana.org/regiones#Región" />
  </skos:Concept>
 
</rdf:RDF>