Publishing extension: Project upload to the server

The publishing extension is able to upload to the server any project generated in local.

Visually, the menu is very similar to the publishing tool, except for the fact that all that refers to the generation of the project have disappeared, because it will not generate the definition of any other service, only it will upload an already existing one. Therefore, we need to indicate the local project folder which we want to upload to the server and set the connection parameters.

Advanced options: Server connection by WebDAV

This process of publishing the project generated on the server can be done automatically at the time the project is created, or can be upload after with another tool extension.

In the first case (automatically), you need to indicate the destination address to establish the WebDAV connection. If it is a directory authentication, you must also provide the username and password.

E01_Publish

With all the information provided, the ‘Connect‘ button will check that connection and also it will fill the left menu with the subfolders that exist in the specified path.

Advanced options: Paths

For a correct operation of services, it is necessary that the access to resources are properly defined. To do this, there are three possibilities to define the routes to them:

E02_publish

  • Default paths: This option does not alter the paths to resources, setting them such in the definition files of the different services..

  • Absolute paths: adequate if there is a correspondence between the location of the files on both machines (eg, the shapes are inside a folder called ‘data‘ and have identical directory structure inside), but the access to that folder has different routes on each machine (for instance, local directory is ‘/home/user/data‘ and the server is in ‘/mnt/data‘).

    This option will replace in the configuration, the access paths to the local machine for the server ones.

  • Relative paths: taking as origin the service configuration file (the mapfile if it is MapServer), you can set a route to resources from it using a ShapePath variable.

    From that file and adding the indicated for the ShapePath variable, the rest of the resources accesses will be built.

With this post, we finish with the series dedicated to the publishing extension (view 1 and 2),first add-on released on “On the road to gvSIG 2.2″.

Posted in english, gvSIG Desktop, gvSIG development, testing | Tagged , , | 1 Comment

Libro “Cálculo de la erosión potencial del suelo con gvSIG”

Disponible para descarga un nuevo libro de carácter práctico “Cálculo de la erosión potencial del suelo con gvSIG”, elaborado por Manuel Esteban Lucas Borja, Maria del Carmen Collado Corredor, de la Escuela Técnica Superior de Ingenieros Agrónomos y de Montes (ETSIAM) de Albacete, Universidad de Castilla-La Mancha.

El índice de ejercicios es:

- Obtención de la cuenca de estudio

- Factor R

- Factor K

- Factor LS

- Factor C

- Factor P

- Cálculo de la erosión potencial del suelo

Los autores han manifestado su deseo de recibir comentarios y aportaciones para mejorar el documento (los datos de contacto están disponibles en el propio libro).

Desde la Asociación gvSIG queremos agradecer esta nueva aportación y animar a otras universidades a seguir el ejemplo de liberar documentación relacionada con el proyecto gvSIG.

Posted in gvSIG Desktop, spanish | Tagged , , | 3 Comments

Publishing extension: manual edition of specifics attributes

Let´s see another feature of the new publishing extension.

Sometimes, it can be interesting to define the parameters more precisely and adjust the specifications to the ones that MapServer offers. For that reason, some mechanisms have been created to be able to complete these characteristics through some forms.

There are two access points. The first one is through the window View properties, which will define the characteristics of the Mapfile service (MapFile section).

11_gvSIG_Publish…and the second access point is with right click>’Properties’ in the layer(to define the MapFile attributes of each layer).

12_gvSIG_PublishThere are similar ways to define the services of TinyOWS and MapProxy.

In the next post, we will see how the Publishing extension allows the upload of the project previously generated in local to its final destiny in the server.

Posted in english, gvSIG Desktop, gvSIG development | Tagged , , , , | 3 Comments

Creare etichette in funzione della scala (nuova estensione)

Abbiamo già visto come creare legende in funzione della scala con la nuova estensione “Legenda Complessa“. Usando la stessa estensione installata nel nostro gvSIG possiamo anche creare etichette in funzione della scala della nostra vista.

Vediamo come funziona

Come sempre, il primo passo è quello di entrare nelle opzioni di etichettatura: apriamo la finestra delle proprietà del layer su cui vogliamo applicare l’etichetta (tasto destro sul nome del layer nella Tabella dei Contenuti della Vista) e selezioniamo la scheda ‘etichette‘.

proprietà

La possibilità di definire una etichetta modificabile in funzione della scala si trova all’interno della scheda “etichette definite dall’utente”.

etichette_utente

Per quanto riguarda il pannello, non è cambiato praticamente nulla nella struttura, in modo che possa essere gestita come di consueto; semplicemente considerate che devono essere selezionate la Classe “Etichetta classi di elementi diversamente“, e la nuova opzione “Multiple label by scale” nel menu a discesa, come mostrato nell’immagine seguente.

multilabel_scale

Dopo aver selezionato questa opzione, è possibile aggiungere una voce che caratterizza l’etichetta da visualizzare, cliccando direttamente sul campo “Espressione di etichetta” che è stato aggiunto sul tavolo.

rango_etichetta

La finestra è molto simile a quella disponibile nelle versioni precedenti tranne che per la nuova scheda in alto a destra che visualizza un nuovo form in cui si potrà definire l’intervallo di scala in cui visualizzare l’etichetta.

Posted in gvSIG Desktop, Italian | Tagged , , , | 1 Comment

Nuova estensione: Generare legende in funzione della scala

Continuiamo ad avvicinarci a gvSIG 2.2 con un nuovo strumento che permette di creare legende in funzione della scala (anche etichette come vedremo in un altro post).

Il plugin si chiama Estensione Legende Complesse e si può installare, come al solito, tramite il Gestore delle estensioni, con installazione dall’URL del testing repository (repository Testing gvSIG – http://downloads.gvsig.org/download/gvSIG-desktop-testing/).

Vediamo come funziona …

Facciamo la solita procedura per modificare la simbologia del layer: apriamo la finestra “Proprietà” del layer su cui si vuole lavorare (tasto destro del mouse sul nome del del layer nella tabella dei contenuti nella vista) e selezioniamo la scheda ‘Simbologia’.

23_gvSIG_escalasTra le varie opzioni disponibili per le legende si noterà che ne è stata aggiunta una nuova: “simbolo complesso“. Selezioniamola.

24_gvSIG_escalasSi aprirà un form in cui specificare gli intervalli di scala su cui lavorare e definire il tipo di legenda da applicare all’interno di ciascuno.

E’ possibile aggiungere nuovi intervalli attraverso il pulsante ‘aggiungi (rappresentato con una croce verde) ed eliminare precedenti intervalli tramite il tasto ‘elimina‘ (croce rossa).

rango

In funzione dei dati inseriti si completerà la combinazione definendo nel pannello inferiore i parametri caratteristici della legenda scelta.

26_gvSIG_escalas

Conclusa questa azione, si può ripetere l’operazione per tante volte quanti sono gli intervalli di scala che vogliamo definire per il layer.

27_gvSIG_escalas

Premiamo applica e verifichiamo il risultato. Se tutto è andato bene, il layer cambierà dinamicamente legenda in funzione della scala in cui è visualizzato.

Un altro caratteristica interessante è che negli intervalli di scala non inseriti, non viene visualizzata alcuna informazione in legenda, cioè siamo in grado di rendere il livello “invisibile” all’interno degli intervalli non definiti.

Nel prossimo post vedremo anche come generare etichette in funzione della scala.

Posted in gvSIG Desktop, Italian, testing | Tagged , , , | 1 Comment

How to manage the preferences of a plugin in gvSIG 2.1

English translation of the article by Joaquin del Cerro.

Hi,

A developer has asked in the gvSIG´s development list how he could add a new entry to the “preferences dialog of gvSIG” to manage the preferences of a plugin.

I am going to quickly explain how you could do this, along with where and how these preferences would be stored.

I will begin with where the plugin´s preferences should be stored. If gvSIG 2.1.0 is installed we can have a quick look at the gvSIG folder in “HOME”, where there will be a “plugins” folder, which contains one folder for each plugin. There won´t be one for each GVSIG plugin ,however there will be one folder for each plugin that needs to store preferences or information that must be updated during the running of gvSIG. If we Look inside the folder:

gvSIG/plugins/org.gvsig.coreplugin.app.mainplugin/

of “HOME”.

There we find the “plugin-persistence.dat” file. Ahí es donde cada plugin almacena sus datos relacionados con preferencias. This is the file where each plugin stores its data related to preferences. The format of this file is similar to the project files of gvSIG (.gvsproj), but it stores a different kind of information, and this one is particular for each plugin.

If we erase these files we will lose our preferences and the device will be started with the default values from the code. This file is matched with another that is located in the plugin folder.If we look in the folder:

gvSIG/extensiones/org.gvsig.coreplugin.app.mainplugin/

…of our installation of gvSIG, we will find a file “plugin-persistence.def” with the file´s definition “plugin-persistence.dat” stored in “HOME/gvSIG…”. For example, with “org.gvsig.coreplugin.app.mainplugin”, we will have something like:

<?xml version="1.0"?>
<definitions>
  <version>1.0.0</version>
  <classes>
    <class name="org.gvsig.coreplugin.app.mainplugin">
      <description>Persistence for the core plugin</description>
      <fields>

        <field name="showNotificationsInConsole" type="Boolean" defaultValue="false" mandatory="false">
          <description></description>
        </field>
        <field name="showNotificationsInStatusbar" type="Boolean" defaultValue="true" mandatory="false">
          <description></description>
        </field>

      </fields>
    </class>
  </classes>
</definitions>

Here we have defined that in the preferences of the plugin there are two properties of type “boolean“, “showNotificationsInConsole” and “showNotificationsInStatusbar” and their default values are “false” and “true” respectively.

The first step to manage the preferences of our plugin will be to create this file with the definition of the attributes that we want to have in our preferences. For values “simples“, String, Integer, Double, Boolean… the definition is very simple, but we can store more complex data structures like “List“, “Map” o “Set“, and if we need we can define our own estructure. For now, I think the “simple” type taking a look at the files “plugin-persistence.def” is enough,which you can find in the installation of gvSIG. If you have any questions ask for the development list. If I have time and people think it would be interesting, I will prepare an article commenting in detail on all the possibilities we have to define our preference data in this file.

One important thing to note… it is very important that we put “<class name=” and you put the exact same name of the plugin if not, it won´t load with it.

Ok, I assume that you have created your file “plugin-persistence.def”, and it is ready for dropping in the installation folder of your plugin. Now what can I do with it?

It is very simple. We are going to see some code:

PluginsManager pluginsManager = PluginsLocator.getManager();
PluginServices plugin = pluginsManager.getPlugin(MyClaseExtension.class);
DynObject pluginProperties = plugin.getPluginProperties();

With these three lines, we would force the loading of the file, if it existed “plugin-persistence.dat”. If it didn´t exist, an empty new “structure” would be created with the definition of “plugin-persistence.def” and ne would be left in “pluginProperties” for us to acces. We could do:

  Boolean showNotificationsInStatusbar = (Boolean) pluginProperties.getDynValue("showNotificationsInStatusbar")

To access the “showNotificationsInStatusbar” property of our preferences file. Or if we wanted we could do:

  pluginProperties.setDynValue("showNotificationsInStatusbar", Boolean.TRUE);

If we wanted to assign a value to the property of our preferences. If we change the preference settings, you can force to save them at that moment with:

  pluginProperties.savePluginProperties()

Or simply, when gvSIGis closed, these are saved automatically.

So it would be a very quick plan to can save or recover our plugin preferences. Now, what remains is to see how we can add a new entry to manage these preferences to the preferences dialogue of the application.

To create an entry in the preferences of gvSIG, we have to create a class that extends to the “AbstractPreferencePage” and fill in some methodology:

public class MyreferencesPage extends AbstractPreferencePage {

    private static final Logger logger = LoggerFactory.getLogger(MyPreferencesPage.class);

    public static final String ID = MyreferencesPage.class.getName();

    private MyPreferencesPanel preferences;
    private DynObject pluginProperties;
    private PluginServices plugin;

    public MyPreferencesPage() {
        initComponents();
    }

    private void initComponents() {
        I18nManager i18nManager = ToolsLocator.getI18nManager();
        PluginsManager pluginManager = PluginsLocator.getManager();
        this.plugin = pluginManager.getPlugin(this);
        this.pluginProperties = this.plugin.getPluginProperties();

        this.preferences = new MyPreferencesPanel();
        ...

        this.setLayout(new BorderLayout());
        this.add(this.preferences, BorderLayout.NORTH);
        initializeValues();
    }

    public void storeValues() throws StoreException {
    // We get the values from our pannel and
    // we save them in "pluginProperties"
    ...
        this.plugin.savePluginProperties();
    }

    public void setChangesApplied() {

    }

    public String getID() {
        return ID;
    }

    public String getTitle() {
        I18nManager i18nManager = ToolsLocator.getI18nManager();
        return i18nManager.getTranslation("Title of our page");

    }

    public JPanel getPanel() {
        return this;
    }

    public void initializeValues() {
    // We load our stored data in preferences,
    // "pluginProperties", at the controls of user interface

    ...
    Boolean showNotificationsInStatusbar = (Boolean) pluginProperties.getDynValue("showNotificationsInStatusbar");
    ...setSelected(showNotificationsInStatusbar.booleanValue());
    ...
    }

    public void initializeDefaults() {

    }

    public ImageIcon getIcon() {
        return IconThemeHelper.getImageIcon("my-preferences");
    }

    public boolean isValueChanged() {
      // If user has changed any value of our page
      // we will return "true" to recover them and
      // to be saved. In other case we will return "false"

      boolean changed = false;

      ...

      return changed;
    }

    public boolean isResizeable() {
      // The usual thing is to return true.
      // It indicates that the pannel will be at the dialog using a
      // layout that resizes it.
      return true;
    }

}

If we wanted that our preferences site to be “under” another one in the tree that appears on the preferences dialog, we would have to add to the construction of our class a call to “setParentID” indicating the ID of the page below the one we want to be our page. For example:

    public MyPreferencesPage() {
    setParentID(GeneralPage.id);
        initComponents();
    }

Our page would be located under “General” entry of the preferences dialog.

When we have created our class, we just have to register the gvSIG to be aware of it and it will be presented. To do this, in the “initialize” method of our extension, we can use something similar to these lines of code:

ExtensionPointManager extensionPoints =ToolsLocator.getExtensionPointManager();
ExtensionPoint ep = extensionPoints.add("AplicationPreferences", "");
ep.append("MyPage", "", new MyPreferencesPage());

Now, we just need to compile everything and see what happens.

I hope this has helped.

Bye¡¡

Posted in development, english, gvSIG Desktop

Generar etiquetas por escala (nueva extensión)

Ya hemos visto como crear leyendas por escalas con la nueva extensión “Complex Legend”. Teniendo ese mismo complemento instalado en nuestro gvSIG también podremos generar etiquetas en función de la escala a la que se encuentre nuestra Vista.

Vamos a repasar su funcionamiento

Como siempre, el primer paso será ir a las opciones de etiquetado: abrimos la ventana de propiedades de la capa sobre la que se aplicará el etiquetado (con botón derecho sobre el nombre de la capa en la Tabla de Contenidos de la Vista) y seleccionamos la pestaña ‘Etiquetado‘.

28_gvSIG_escalasLa definición de una etiqueta sensible a la escala se encuentra dentro del panel de “Etiquetas definidas por el usuario”.

29_gvSIG_escalasPor lo que respecta al panel asociado, apenas ha cambiado su estructura, por lo que se puede manejar de forma habitual; simplemente habrá que tener en cuenta que hay que tener seleccionada la operación “Definir diferentes clases de entidades y etiquetarlas de manera diferente” y la nueva opción de “Multiple label by scale del menú desplegable, tal y como se especifica en la imagen que sigue.

30_gvSIG_escalasUna vez marcada esta opción, se puede añadir una entrada que definirá la etiqueta a mostrar, pinchando directamente sobre el campo de “Expresión de etiqueta” que se ha añadido sobre la tabla.

La ventana que se muestra es muy similar a la que ya se conocía anteriormente, salvo que aparece una nueva pestaña en la parte superior que mostrará el formulario donde se indicará el rango de la escala sobre la que estará visible la etiqueta.

31_gvSIG_escalasUna funcionalidad de lo más interesante, ¿verdad?

Posted in gvSIG Desktop, spanish | Tagged , , , | Leave a comment

Verso gvSIG 2.2: Estensione di pubblicazione

Questa estensione diventerà uno strumento indispensabile per gli utenti che hanno bisogno di pubblicare le proprie mappe utilizzando applicazioni MapServer, MapProxy e TinyOWS.

L’obbiettivo è quello di consentire la pubblicazione automatica dei servizi cartografici, cercando di ottenere risultati il ​​più possibile fedeli al lavoro originale che abbiamo realizzato in gvSIG 2.1.

L’estensione si trova sotto il nome di ‘org.gvsig.publish‘, e può essere installato attraverso il ‘Gestore delle estensioni’ selezionando installazione da URL e selezionando dalla lista il repository di test (Testing gvSIG repository – http://downloads.gvsig.org/download/gvsig-desktop-testing/).

Una volta installato avrete accesso alle funzionalità di pubblicazione tramite Vista> Esporta> Esporta vista a mapfile, oppure tramite il pulsante corrispondente.

Vediamo ora una breve guida sul funzionamento di questa applicazione:

Selezione della cartella di lavoro locale

Per operare più agevolmente, l’estensione richiede che si definisca una cartella in locale per memorizzare e creare l’intera struttura del progetto.

Si può lavorare su una nuova directory vuota (creata ex novo o già esistente) oppure su di una su cui abbiamo già lavorato in precedenza (per unire più lavori in un unico progetto).

Opzioni avanzate: Selezione dei servizi

Se attiviamo la casella di controllo ‘avanzate’ è possibile accedere ai servizi disponibili attraverso la scheda ‘servizi’ dove è possibile selezionare i servizi desiderati eseguendo la pubblicazione una volta sola.

Ogni servizio genererà un sottocartella nella directory di progetto in cui saranno creati i file necessari per il corretto funzionamento del servizio desiderato.

Inoltre, è possibile definire il nome con cui il servizio sarà visualizzata dai clienti e la relativa descrizione.

01_gvSIG_Publish

Creazione del progetto

Se la cartella locale di destinazione in cui memorizzare il progetto non è vuota, l’applicazione chiederà di scegliere tra la sovrascrivere, aggiungere o cancellare.

  • Sovrascrivi: crea tutti i file necessari per il progetto, potendo modificare il contenuto dei precedenti file se richiesto.
  • Inserisci: se si desidera aggiungere ulteriori informazioni a un progetto esistente, senza perdere le informazioni precedenti.

Questo è giusto un assaggio, nei post successivi vedremo le possibilità fornite da questo plugin per l’editing manuale di attributi specifici e come caricare il progetto sul server. Per non parlare delle possibilità di combinazione con un altro plugin, che speriamo di pubblicare presto, in grado di generare legende ed etichette in funzione della scala …

Posted in gvSIG Desktop, Italian, testing | Tagged , , , , | 2 Comments

gvSIG 2.1: da Excel a gvSIG

Durante l’ultimo Summer Google Code è stato sviluppato un nuovo plugin per gvSIG 2.1. Questo plugin permette di caricare i dati precedentemente salvati in formato Microsoft Excel.

Questo plug-in sarà incluso di default nella prossima generazione di gvSIG, ma è possibile testarlo fin da subito.

E’ possibile installare il plug-in attraverso il Gestore delle Estensioni selezionando l’opzione “Installazione standard”, che accede ai plug-in di base già inclusi nella distribuzione gvSIG; sia attraverso il “Installazione da URL”, accedendo anche ai plug-in disponibili sul repository remoto di gvSIG.
Possiamo anche installare alcun plug-in dalla opzione “Installazione da file”; questa opzione può essere molto utile per testare le estensioni che non sono né nella distribuzione standard né sul repository remoto.
Diamo uno sguardo rapido al video in cui si mostra come installare il plug-in di Excel, il file può essere scaricato da qui.

Una volta installato, è necessario riavviare gvSIG e verificare che l’aggiunta di una nuova tabella in formato Excel sia supportata.

Attraverso questo plug-in è possibile:

  • Caricare fogli di calcolo Excel come tabelle
  • Caricare fogli di calcolo Excel come layer

In gvSIG possiamo definire le seguenti proprietà del file Excel da aggiungere.

Le proprietà principali sono:

  • File: percorso del file
  • Locale: elenco a discesa per scegliere la configurazione che definisce il set di caratteri usati come separatori per migliaia e decimali.
  • Foglio da aggiungere: elenco a discesa per selezionare il file di Excel da caricare come tabella.
  • Usa prima riga come intestazione: Se questa opzione è attivata, la prima riga verrà usata per definire i nomi dei campi.
  • CRS: se il foglio di lavoro di Excel contiene dei campi coordinate, questo parametro consente di specificarne il sistema di riferimento.
  • Punti (X, Y, Z): campi che contenengono le coordinate. Nel caso in cui foglio Excel contenga coordinate, almeno i campi X e Y devono essere indicati.

Possiamo anche definire altre proprietà (nella scheda “Avanzate”) come, ad esempio, forzare il tipo di campo quando si carica la tabella. Nel manuale del plug-in si possono trovare delle informazioni più dettagliate.
Come detto, in gvSIG 2.1, è possibile aggiungere un foglio Excel e, in presenza di coordinate, lo possiamo aggiungere direttamente come layer.

Vediamo un esempio in cui si aggiunge un foglio di calcolo Excel come tabella contenente l’età media della popolazione africana. In questo esempio abbiamo specificato che la prima riga contiene i nomi dei campi.

Nel secondo esempio si vede come aggiungere un foglio di calcolo di Excel, che ha i campi con le coordinate, direttamente come un layer. In questo caso definiamo il CRS ed i nomi dei campi contenenti le coordinate x ed y, denominati “X” e “Y”.

Posted in gvSIG Desktop, Italian | Tagged , , | 1 Comment

On the road to gvSIG 2.2: Publishing extension

This extension will become an indispensable tool for users who need to publish their maps using MapServer, MapProxy and TinyOWS.

Its aim is to enable a process automation for the maps publishing services , trying to obtain results as true as possible to the original work made in our gvSIG 2.1

The extension can be found with the name ‘org.gvsig.publish‘, and it can be installed from the ‘Plugin Manager’, selecting the URL installation and in the drop-down of (Testing gvSIG repository – http://downloads.gvsig.org/download/gvsig-desktop-testing/).

Once installed, we will have access to the publishing functionality either through the menu View>Export>Export view to mapfile, either via the button appropriate.

Let´s see with a quick guide, how this extension works:

Selection of the local work directory

In order to operate more comfortably, this extension requires that you define a local folder on your computer to store and create the whole project structure.

It can be a new directory (created if doesn´t exist), empty or one which already has previously worked (to join several works in one only project).

Advanced options: Services selection

If we check the ‘Advanced options’, we will be able to access to the available services through the ‘Service’ tab, in which we can mark as many as we need, performing the publishing once.

Each service will create a subfolder with its name in the project directory and inside of the subfolder, all the files needed for that concrete service will be stored.

Also, we have offered the possibility to indicate the name under which the service will be displayed to customers and the description in the same form.

01_gvSIG_Publish

Project creation

If the final directory where the project is going to be stored is not empty, the app will ask us to choose between overwrite, add or cancel.

  • Overwrite: It will create all the files needed for the project, being able to change the previous files content if it is required.

  • Add: if we want to add more information to a project without losing any previous information.

In following posts, we will carry on with more possibilities of this new plugin, such as the manual edition of specific attributes and the upload of the project to the server. There are, as well, good possibilities with its combination with other plugin (which we hope to release soon) allowing to generate legends and label by scales.

Posted in english, gvSIG Desktop, testing | Tagged , , , , , , | 4 Comments