Web Services del CS IDEC



CS IDEC dispone de un geoservicio con 6 métodos:

1- Obtener las coordenadas XY con UTM 31 N, el nombre y la comarca de un topónimo de la base toponímica 1:50.000 del Institut Cartogràfic de Catalunya.
2- Obtener las coordenadas XY con latitud longitud, el nombre y la comarca de un topónimo de la base toponímica 1:50.000 del Institut Cartogràfic de Catalunya.
3- Cuadrar píxeles de una imagen a partir de la altitud y la anchura de la imagen, de una caja de coordenadas y de un método de cuadratura. Este geoproceso está pensado para todas aquellas aplicaciones webMapping basadas en la especificación WMS d'OGC.
4- Convierte X Y píxel pantalla en X Y coordenadas.
5- Convierte X Y coordenadas en X Y píxel pantalla.
6- Devuelve nombre, municipio ,coordenada XY i distáncia en línea recta de los equipamientos especificados.

Para ejecutar los geoprocesos se debe rellenar el parámetro 'clave' con la 'clave de acceso' que IDEC proporciona al registrarse.

-¿Para qué sirve cuadrar píxeles?

Según la especificación OpenGis WMS 1.1.1 (pág.36), dentro de una consulta WMS, los valores de los parámetros WIDTH (anchura) y HEIGHT (altura) especifican los números píxeles usados entre los valores de las X y Y máximas y mínimas expresadas en los parámetros BBOX. Es decir, que el píxel tiene que estar cuadrado ya que debe existir un "aspect ratio" entre las dimensiones de la imagen y la caja de coordenadas. En el caso que no exista este "aspect ratio", la imagen no tendrá el píxel cuadrado y saldrá deformada.

No todos los servidores de mapas que han implementado WMS han tenido presente este aspecto, y algunos de ellos siempre sirven la imagen bien formada, aunque no exista este "aspect ratio".

Así pues, cuadrar el píxel permite:

- Visualizar de forma conjunta capas WMS, independientemente que el servidor mantenga o no "aspect ratio".
- Visualizar de forma conjunta capas que provengan de servidores WMS con diferentes sistemas de referencia.

Web Services IDEC:

Repositorios con el programario y el código fuente:

Nombre URI WSLD Métodos
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ón de los métodos:

Método Descripción Input Observaciones Output
getCoordenadesUTM DDado un topónimo , devuelve las coordenadas UTM del topónimo, su nombre y la comarca a la cual pertenece. xsd:string key,xsd:string toponim
Ejemplo petición SOAP
- xsd:string NOM, xsd:string COMARCA, xsd:double X, xsd:double Y
Ejemplo respuesta SOAP
Máximo 15 resultados.
getCoordenadesLatLon Dado un topónimo , devuelve las coordenadas Lat/Lon del topónimo, su nombre y la comarca a la cual pertenece. xsd:string key,xsd:string toponim
Ejemplo petición SOAP
- xsd:string NOM, xsd:string COMARCA, xsd:double X, xsd:double Y
Ejemplo respuesta SOAP
Máximo 15 resultados.
getQuadrarPixel Devuelve los valores para cuadrar píxeles a partir: de una caja de coordenadas, de la altitud (px) y anchura (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'
Ejemplo petición SOAP
Valores 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
Ejemplo respuesta SOAP
Máximo 15 resultados.
getPixelsToCoord Convierte X Y píxel pantalla en X Y coordenadas 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 Convierte X Y coordenadas en X Y píxel 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 Devuelve el nombre, municipio, coordenada XY y distáncia en línea recta de los equipamientos. xsd:String CLAU, xsd:double Y, xsd:double Y, xsd:double DISTANCIA,xsd:String TIPUS Valores de DISTANCIA: expresada en metros.
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áximo 25 equipamientos.


*Las coordenadas del topónimo representa el punto de inserción de la cadena de texto hecha sobre el topográfico 1:50.000, y no es la coordenada real del lugar geográfico.

Ejemplos prácticos

Como a demostración, IDEC ha creado dos aplicaciones web que utilizan los Web Services.

Nombre Ejemplo 1
Descripción Muestra los resultados obtenidos en una lista, captura las coordenadas del topónimo para después localitzarlo en un mapa.
Métodos utilizados getCoordenadesUTM(key,toponim)
getCoordenadesLatLon(key,toponim)


Nombre Ejemplo 2
Descripción Da los valores del píxel cuadrado a una consulta WMS, para visualizar de forma correcta el mapa.
Métodos utilizados getQuadraPixel(key,Xmin,Ymin,Xmax,Ymax,Width,Height,Quadrar)


Nombre Ejemplo 3
Descripción Cliente ligero donde se utilizan todos los métodos.
Métodos utilizados Todos


Ejemplos implementación

Para facilitar el uso de los Web Services, se ha incorporado ejemplos de código para crear un WSC (Web Services Client).
Actualmente se pueden encontrar ejemplos con PHP usando la libreria gratuita de NuSOAP y con JSP usando las clases de Axis Apache.
IDEC anirà publicant altres de exemples de codi amb llenguatges i plataformes diferents.

PHP (Hypertext PreProcessor)

Es necesario instalar NuSOAP .

  • Ejemplo 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());
    }


  • Ejemplo getCoordenadesLatLon()
  • /*
    WebService: IDEC http://www.geoportal-idec.cat
    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());
    }


  • Ejemplo getQuadrarPixel()
  • /*
    WebService: IDEC http://www.geoportal-idec.cat
    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());
    }


  • Descargar ejemplos PHP

JSP (Java Server Pages)

Requiere librerías Axis Apache.

  • Ejemplo 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);
    %>


  • Ejemplo 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);
    %>


  • Ejemplo 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);
    %>


  • Descargar ejemplos JSP y idecserveis.jar

Registro de usuarios

Podéis registraros enviando un correo electrónico a idec@icc.cat especificando los siguientes datos:
Asunto: Registro Web Services
Nombre:
Apellidos:
Correo electrónico:
Emrpesa/Institución:

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