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()
- Ejemplo getCoordenadesLatLon()
- Ejemplo getQuadrarPixel()
- Descargar ejemplos PHP
| /* 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()); } |
| /* 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()); } |
| /* 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()); } |
JSP (Java Server Pages)
Requiere librerías Axis Apache.
- Ejemplo getCoordenadesUTM()
- Ejemplo getCoordenadesLatLon()
- Ejemplo getQuadrarPixel()
- Descargar ejemplos JSP y idecserveis.jar
|
<%@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].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); %> |
| <%@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); %> |
|
<%@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); %> |
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:
