Web Services del CS IDEC



CS IDEC disposa d'un geoservei amb 6 mètodes:

1- Obtenir les coordenades XY amb UTM 31 N, el nom i la comarca d'un topònim de la base toponímica 1:50.000 de l'Institut Cartogràfic de Catalunya.
2- Obtenir les coordenades XY amb latitud longitud, el nom i la comarca d'un topònim de la base toponímica 1:50.000 de l'Institut Cartogràfic de Catalunya.
3- Quadrar pixels d'una imatge a partir de l'alçada i l'amplada de la imatge, d'una caixa de coordenades i d'un mètode de quadratura. Aquest geoprocess està pensat per a totes aquelles aplicacions webMapping basades en l'especificació WMS d'OGC.
4- Converteix X Y píxels pantalla amb X Y coordenades.
5- Converteix X Y coordenades amb X Y píxels pantalla.
6- Retorna nom, municipi ,coordenada XY i distància en línea recta dels equipaments especificats.

Per executar els geoprocessos cal omplir el paràmetre "clau" amb la 'clau d'accés' que IDEC proporciona al registrar-se.

-Per a què serveix quadrar píxels? Segons l'especificació OpenGis WMS 1.1.1 (pàg.36), dins d'una consulta WMS, els valors dels paràmetres WIDTH (amplada) i HEIGHT (alçada) especifiquen els número de píxels usats entre els valors de les X i Y màximes i mínimes expressats en el paràmetre BBOX. És a dir, que el pixel ha d'estar quadrat ja que ha d'existir un "aspect ratio" entre les dimensions de la imatge i la caixa de coordenades. En el cas que no existeixi aquest "aspect ratio", la imatge no tindrà el píxel quadrat i sortirà deformada. No tots els servidors de mapes que han implementat WMS han tingut present aquest aspecte, i alguns d'ells sempre serveixen la imatge ben formada, encara que no existeixi aquest "aspect ratio". Així doncs, quadrar el píxel permet: - Visualitzar de forma conjunta capes WMS, independentment que el servidor WMS mantingui o no "aspect ratio". - Visualitzar de forma conjunta capes que provinguin de servidors WMS amb diferents sistemes de referència.

Web Services IDEC:

Repositoris amb el programari i el codi font:

Nom URI WSLD Mètodes
IDEC_GeoServeis http://delta.icc.es
/webservices/services
/IDEC_GeoServeisPort
http://delta.icc.es
/webservices/services
/IDEC_GeoServeisPort?wsdl
getCoordenadesUTM getCoordenadesLatLon getQuadrarPixel getPixelsToCoord getCoordToPixels getProximitatEquipaments


Descripció dels mètodes:

Mètode Descripció Input Observacions Output
getCoordenadesUTM Donat un topònim, retorna les coordenades UTM del topònim*, el seu nom i la comarca on pertany. xsd:string key,xsd:string toponim
Exemple petició SOAP
- xsd:string NOM, xsd:string COMARCA, xsd:double X, xsd:double Y
Exemple resposta SOAP
Màxim 15 resultats.
getCoordenadesLatLon Donat un topònim, retorna les coordenades UTM del topònim*, el seu nom i la comarca on pertany. xsd:string key,xsd:string toponim
Exemple petició SOAP
- xsd:string NOM, xsd:string COMARCA, xsd:double X, xsd:double Y
Exemple resposta SOAP
Màxim 15 resultats.
getQuadrarPixel Retorna els valors per quadrar pixels a partir: d'una caixa de coordenades, de l'alçada (px) i amplada(px) del mapa. xsd:string key,xsd:double Xmin ,xsd:double Ymin, xsd:double Xmax, xsd:double Ymax, xsd:integer Width, xsd:integer Height, xsd:string Quadratura'
Exemple petició SOAP
Valors de Quadratura : QXmin , QYmin, QXmax, QYmax, QWidth, QHeight xsd:double Xmin ,xsd:double Ymin, xsd:double Xmax, xsd:double Ymax, xsd:integer Width, xsd:integer Height
Exemple resposta SOAP
Màxim 15 resultats.
getPixelsToCoord Converteix X Y píxels pantalla amb X Y coordenades. xsd:String CLAU,xsd:int XPIXEL, xsd:int YPIXEL, xsd:int WIDTH, xsd:int HEIGHT, xsd:double XMIN,xsd:double YMIN, xsd:double XMAX, xsd:double YMAX - xsd:double X ,xsd:double Y,
getCoordToPixels Converteix X Y coordenades amb X Y píxels pantalla. xsd:String CLAU,xsd:double XCOORD, xsd:double YCOORD, xsd:int WIDTH, xsd:int HEIGHT, xsd:double XMIN,xsd:double YMIN, xsd:double XMAX, xsd:double YMAX - xsd:int X ,xsd:int Y,
getProximitatEquipaments Retorna nom, municipi ,coordenada XY i distància en línia recta dels equipaments. xsd:String CLAU, xsd:double Y, xsd:double Y, xsd:double DISTANCIA,xsd:String TIPUS Valors de DISTANCIA: expressada en metres.
Valors de TIPUS : TOTS, Ajuntament, Albergs, Biblioteca, Centres CAP, Centres i delegacions , Ensenyament, Sanitat, Hospitals Publics, Policia, Poligon Industrial, Punts omnia, Punt AOC, Telecentres.
xsd:String NOM ,xsd:String MUNICIPI, xsd:double DISTANCIA, xsd:String TIPUS, xsd:double X, xsd:double Y
Màxim 25 equipaments.


*La coordenada del topònim representa el punt d'inserció de la cadena de text feta sobre el topogràfic 1 50.000, i no és pas la coordenada real del lloc geogràfic.

Exemples pràctics

Com a demostració, IDEC ha creat dues aplicacions web que utilitzen els Web Services.

Nom Exemple 1
Descripció Mostra els resultats obtinguts en una llista, captura les coordenades del topònim per després localitzar-lo en un mapa.
Mètodes utilitzats getCoordenadesUTM(key,toponim)
getCoordenadesLatLon(key,toponim)


Nom Exemple 2
Descripció Passa els valors del pixel quadrat a una consulta WMS, per visualitzar de forma correcta el mapa.
Mètodes utilitzats getQuadraPixel(key,Xmin,Ymin,Xmax,Ymax,Width,Height,Quadrar)


Nom Exemple 3
Descripció Client lleuger on s'utilitzen tots els mètodes.
Mètodes utilitzats Tots


Exemples implementació

Per tal de facilitar l'us dels Web Services, hem incorporat exemples de codi per crear un WSC (Web Services Client).
Actualment es poden trobar exemples amb PHP utilitzant la llibreria gratuïta de NuSOAP i amb JSP utilitzant les classes de Axis Apache.
IDEC anirà publicant altres de exemples de codi amb llenguatges i plataformes diferents.

PHP (Hypertext PreProcessor)

Cal instal·lar NuSOAP .

  • Exemple getCoordenadesUTM()
  • /*
    WebService: IDEC http://www.geoportal-idec.net
    Method: getCoordenadesUTM
    Require: NuSOAP http://sourceforge.net/projects/nusoap/

    */
    function matriu_to_texte($array){
    $llarg_texte = "";

    foreach($array as $valor=>$val){
    if(is_array($val)){
    $llarg_texte .= "[$valor = {". matriu_to_texte($val)."}] , ";
    }
    else{
    $llarg_texte .= "[$valor=$val] , ";
    }
    }

    return substr($llarg_texte, 0, strlen($llarg_texte)-3);
    }require('nusoap.php');

    $metode="getCoordenadesUTM";
    $toponim="Girona";
    //IDEC key
    $key="XXXXXXXXX";

    $wsc_Parametres = array("key" =>(string)$key,"toponim" =>(string)$toponim);
    $wsc_IDEC = new soapclient('http://delta.icc.es/webservices/services/IDEC_Web ServicesPort?wsdl','wsdl');

    $Resultat = $wsc_IDEC->call($metode, $wsc_Parametres);

    if (!$wsc_IDEC->getError()) {

    echo(matriu_to_texte($Resultat));

    }else{
    echo($wsc_IDEC->getError());
    }


  • Exemple getCoordenadesLatLon()
  • /*
    WebService: IDEC http://www.geoportal-idec.net
    Method: getCoordenadesLatLon
    Require: NuSOAP http://sourceforge.net/projects/nusoap/

    */
    function matriu_to_texte($array){
    $llarg_texte = "";

    foreach($array as $valor=>$val){
    if(is_array($val)){
    $llarg_texte .= "[$valor = {". matriu_to_texte($val)."}] , ";
    }
    else{
    $llarg_texte .= "[$valor=$val] , ";
    }
    }

    return substr($llarg_texte, 0, strlen($llarg_texte)-3);
    }

    require('nusoap.php');


    $metode="getCoordenadesLatLon";
    $toponim="Girona";
    //IDEC key
    $key="XXXXXXXXX";

    $wsc_Parametres = array("key" =>(string)$key,"toponim" =>(string)$toponim);
    $wsc_IDEC = new soapclient('http://delta.icc.es/webservices/services/IDEC_Web ServicesPort?wsdl','wsdl');

    $Resultat = $wsc_IDEC->call($metode, $wsc_Parametres);

    if (!$wsc_IDEC->getError()) {

    echo(matriu_to_texte($Resultat));
    }else{
    echo($wsc_IDEC->getError());
    }


  • Exemple getQuadrarPixel()
  • /*
    WebService: IDEC http://www.geoportal-idec.net
    Method: getQuadrarPixel
    Require: NuSOAP http://sourceforge.net/projects/nusoap/
    */


    function matriu_to_texte($array){
    $llarg_texte = "";


    foreach($array as $valor=>$val){
    if(is_array($val)){
    $llarg_texte .= "[$valor = {". matriu_to_texte($val)."}] , ";
    }
    else{
    $llarg_texte .= "[$valor=$val] , ";
    }
    }

    return substr($llarg_texte, 0, strlen($llarg_texte)-3);
    }

    require('nusoap.php');

    $metode="getQuadrarPixel";

    //IDEC key
    $key="XXXXXXXX";

    $Xmin=498079.12;
    $Ymin=4623356.5;
    $Xmax=504552.28;
    $Ymax=4627937;
    $Width=300;
    $Height=300;

    /*Quadratura values
    QXmin
    QYmin
    QXmax
    QYmax
    QWidth
    QHeight
    */
    $Quadratura="QXmin";

    $wsc_Parametres = array('key' =>(string)$key,'Xmin'=>(double)$Xmin,'Ymin'=>(double)$Ymin,'Xmax'=>(double)$Xmax,'Ymax'=>(double)$Ymax,'Width'=>(integer)$Width,'Height'=>(integer)$Height,'Quadratura'=>(string)$Quadratura);

    $wsc_IDEC = new soapclient('http://delta.icc.es/webservices/services/IDEC_Web ServicesPort?wsdl','wsdl');

    $Resultat = $wsc_IDEC->call($metode, $wsc_Parametres);

    if (!$wsc_IDEC->getError()) {

    echo(matriu_to_texte($Resultat));

    }else{

    echo($wsc_IDEC->getError());
    }


  • Descarregar exemples PHP

JSP (Java Server Pages)

Requereix llibreries Axis Apache.

  • Exemple getCoordenadesUTM()
  • <%@page contentType="text/html"%>
    <%!

    /*
    This is a client of the IDEC Web Services
    http://www.geoportal-idec.net

    It uses the Apache AXIS web services stack.
    http://ws.apache.org/axis/

    To build the client-side classes used by this JSP, do this:

    1-Install Apache AXIS
    2-produces the proxy source code

    java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java --package idecwebservices http://delta.icc.es/webservices/services/IDEC_GeoServeisPort?wsdl

    3-compiles it and places it into the CLASSES dir

    javac -classpath %AXISCLASSPATH% -g idecwebservices/*.java
    **********************************************/
    private String wsc_IDEC(String toponim) {
    int i=0;
    String resultat= "";
    String getError= "";

    //Idec Key
    String key="XXXXXXXXX";

    try {
    idecwebservices.IDEC_Web ServicesLocator rutaService = new idecwebservices.IDEC_Web ServicesLocator();
    idecwebservices.IDEC_Web ServicesPortType serviceIDEC= rutaService.getIDEC_Web ServicesPort();
    idecwebservices.ToponimsData r[] ;

    r=serviceIDEC.getCoordenadesUTM(key,toponim);

    for ( i=0; i resultat+=r[i].getNOM()+"<br>";
    resultat+=r[i].getCOMARCA()+"<br>";
    resultat+=r[i].getX()+"<br>";
    resultat+=r[i].getY()+"<br>";

    }
    }
    catch(Exception e1){
    getError= "<font color=red>ERROR: <xm" + "p>" + e1 + "</x" + "mp></font>\n";
    }

    return resultat + getError;

    }

    %>

    <%
    String result= wsc_IDEC("Girona");
    out.print(result);
    %>


  • Exemple getCoordenadesLatLon()
  • <%@page contentType="text/html"%> <%!

    /*
    This is a client of the IDEC Web Services
    http://www.geoportal-idec.net

    It uses the Apache AXIS web services stack.
    http://ws.apache.org/axis/

    To build the client-side classes used by this JSP, do this:

    1-Install Apache AXIS
    2-produces the proxy source code

    java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java --package idecwebservices http://delta.icc.es/webservices/services/IDEC_GeoServeisPort?wsdl

    3-compiles it and places it into the CLASSES dir

    javac -classpath %AXISCLASSPATH% -g idecwebservices/*.java
    **********************************************/
    private String wsc_IDEC(String toponim) {
    int i=0;
    String resultat= "";
    String getError= "";

    //Idec Key
    String key="XXXXXXXXX";

    try {
    idecwebservices.IDEC_Web ServicesLocator rutaService = new idecwebservices.IDEC_Web ServicesLocator();
    idecwebservices.IDEC_Web ServicesPortType serviceIDEC= rutaService.getIDEC_Web ServicesPort();
    idecwebservices.ToponimsData r[] ;

    r=serviceIDEC.getCoordenadesLatLon(key,toponim);

    for ( i=0; i<r.length; i++) {
    resultat+=r[i].getNOM()+"<br>";
    resultat+=r[i].getCOMARCA()+"<br>";
    resultat+=r[i].getX()+"<br>";
    resultat+=r[i].getY()+"<br>";

    }

    }
    catch(Exception e1){
    getError= "<font color=red>ERROR: <xm" + "p>" + e1 + "</x" + "mp></font>\n";
    }
    return resultat + getError;

    }

    %>

    <%
    String result= wsc_IDEC("Girona");
    out.print(result);
    %>


  • Exemple getQuadrarPixel()
  • <%@page contentType="text/html"%>
    <%!

    /*
    This is a client of the IDEC Web Services
    http://www.geoportal-idec.net

    It uses the Apache AXIS web services stack.
    http://ws.apache.org/axis/

    To build the client-side classes used by this JSP, do this:

    1-Install Apache AXIS
    2-produces the proxy source code

    java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java --package idecwebservices http://delta.icc.es/webservices/services/IDEC_GeoServeisPort?wsdl

    3-compiles it and places it into the CLASSES dir

    javac -classpath %AXISCLASSPATH% -g idecwebservices/*.java
    **********************************************/
    private String wsc_IDEC(double Xmin,double Ymin,double Xmax,double Ymax,int Width,int Height,String Quadrar) {
    int i=0;
    String resultat= "";
    String getError= "";

    //Idec Key
    String key="XXXXXX";

    try {
    idecwebservices.IDEC_Web ServicesLocator rutaService = new idecwebservices.IDEC_Web ServicesLocator();
    idecwebservices.IDEC_Web ServicesPortType serviceIDEC= rutaService.getIDEC_Web ServicesPort();
    idecwebservices.Pixelquadrat r ;

    r=serviceIDEC.getQuadrarPixel(key,Xmin,Ymin,Xmax,Ymax,Width,Height,Quadrar);

    resultat+=r.getXmin()+"<br>";
    resultat+=r.getYmin()+"<br>";
    resultat+=r.getXmax()+"<br>";
    resultat+=r.getYmin()+"<br>";
    resultat+=r.getWidth()+"<br>";
    resultat+=r.getHeight()+"<br>";

    }
    catch(Exception e1){
    getError= "<font color=red>ERROR: <xm" + "p>" + e1 + "</x" + "mp></font>\n";
    }

    return resultat + getError;

    }
    %>

    <%

    double Xmin=498079.12;
    double Ymin=4623356.5;
    double Xmax=504552.28;
    double Ymax=4627937.0;
    int Width=300;
    int Height =300;
    String Quadrar ="QXmin";

    /*Quadratura values
    QXmin
    QYmin
    QXmax
    QYmax
    QWidth
    QHeight
    */

    String result= wsc_IDEC(Xmin,Ymin,Xmax,Ymax,Width,Height,Quadrar);
    out.print(result);
    %>


  • Descarregar exemples JSP i idecserveis.jar

Registre d'usuaris

Podeu registrar-vos enviant un correu electrònic a idec@icc.cat especificant les següents dades:
Assumpte: Registre Web Services
Nom:
Cognoms:
Correu electrònic:
Emrpesa/Institució:

Centre de suport IDEC | Institut Cartogràfic de Catalunya | Parc de Montjuïc- 08038 Barcelona | Tel. +34 93 567 15 00 - Fax. +34 93 567 15 67 e-mail: idec@icc.cat