1 Servizio di RicercaToponimi Il servizio di ricerca toponimi (v. 1.3.0) permette di ricercare i luoghi geografici della Sardegna. La ricerca strutturata si basa su una richiesta in un formato strutturato in cui viene specificato il toponimo (o una sua parte) e opzionalmente il Comune e/o il tipo del toponimo (vedi Tabella 1. Decodifica dei tipi di toponimo). La ricerca euristica si basa anch essa su una richiesta in un formato strutturato in cui viene specificato il toponimo (o una sua parte) e opzionalmente il Comune e/o il tipo del toponimo, ma l algoritmo di ricerca è più sofisticato del caso precedente. La ricerca libera o full-text prevede la possibilità di ricercare un toponimo specificando una stringa di ricerca non strutturata, composta da un insieme di parole. Il servizio è interrogabile in modalità REST-XML secondo quattro modalità: RicercaToponimi: consente di ricercare un toponimo in una delle tre modalità (strutturata, euristica e libera).. RicercaToponimi OpenLS: Il servizio è identico al precedente ma la richiesta e la risposta sono conformi alle specifiche OpenLS (http://www.opengeospatial.org/standards/ols). InfoToponimi: consente di recuperare le informazioni di un toponimo a partire dalla specificazione di un precisa dizione. InfoToponimi OpenLS: Il servizio è identico al precedente ma la richiesta e la risposta sono conformi alle specifiche OpenLS. Tabella 1. Decodifica dei tipi di toponimo Codice Confini T103 C401A T145 C401B Geomorfologia C910 DB030 T132 P320 T122P Idrografia Capoluogo/Comune Centro abitato Frazione principale Nucleo abitato Dolina/depressione Grotta Monti Passo/Valico Regioni Geografiche Principali pagina 1 di 6
Codice P637A BH010 BA055 BH020 P612 BI040 P636B BH140 BI501 BI020 C652 C638A C611 L999 C638 C646 P635A C648 P640 P634 L645 T109 Industrie C915 P422B AA010 P633 AM070 C416 C405A C405B Insediamenti L619 Abbeveratoio con fontana Acquedotto Cale Canale Cascata Chiusa/Passarella Cisterna Corso d'acqua Depuratore Diga Invaso artificiale Isola Lago/Stagno Linea di Costa Mare Palude Presa Salina Scoglio isolato affiorante Sorgente Spiaggia sabbiosa Toponimi idrografia 1 Ordine Cava Ciminiera Miniera Pozzo idrico Serbatoio idrico Serra Stabilimento industriale Tettoia industriale/deposito Acquedotto diruto (romano) pagina 2 di 6
Codice C402A P403 P422A C439X P438 C433 C431 AL030 C438 P434B C402 P418 P421B C437 C715 P441 P421A P421 P403A C421 Servizi AD030 C408B AD010 C417 P641B AQ113 P641A AL005 P520 Trasporti C501X Allevamento Baracca/Capanna/Baita/Tettoia Campanile/Torre Campeggio Campo sportivo generico Cappella/Oratorio Chiesa parrocchiale Cimitero Complesso sportivo Croce isolata Edificio generico Monumento notevole Nuraghe Ospedale Parco/Giardino Piscina Rovina antica Rudere generico Tettoia agricola/fienile Zona archeologica Cabina Elettrica Centrale elettrica a energia eolica Centrale idroelettrica Discarica Faro (marittimo) Gasdotto/Metanodotto interrato o scoperto Luce/Fanale Parco Nazionale-Regionale Stazione e/o antenna per telecomunicazioni Aeroporto principale pagina 3 di 6
Codice C502X P225 P224 AN010 AQ130 L364 L639 P351 C639 AP050 P330 C221 L301B AP030 Vegetazione C717 C719X Aeroporto secondario/aeroclub Casello ferroviario Fermata Ferrovia Galleria Guado Molo/Pontile/Banchina in proiezione Ponte Porto Sentiero/Mulattiera/Vialetti/Galoppatoi Stazione di servizio Stazione ferroviaria Svincolo stradale Trasporti -strade/autostrade Vigneto Vivaio pagina 4 di 6
1.1 RicercaToponimi OpenLS La seguente procedura consente di integrare il servizio in una pagina web, utilizzando la libreria Javascript JQuery (http://jquery.com/): 1. Creare una nuova pagina HMTL 2. Referenziare la libreria JQuery: <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 3. Aggiungere le istruzioni Javascript per: 3.1. Comporre una stringa che costituisce l xml di richiesta (xmlrequest) indicando: testo (opzionale), il testo del toponimo like (opzionale), indica se il toponimo cercato deve contenere il testo indicato (true) o se deve cominciare per il testo indicato (false) euristica (opzionale), indica se la ricerca deve utilizzare l algoritmo di ricerca euristica. tipo (opzionale), il tipo del toponimo (vedi Tabella 1. Decodifica dei tipi di toponimo) Comune (opzionale), il Comune nel cui territorio ricade il toponimo 3.2. Comporre una stringa che costituisce l url della richiesta al servizio (url), impostando i parametri GET necessari: servicename (obbligatorio), il nome del servizio, sempre valorizzato a RTOpenGISResp methodtype (obbligatorio), il tipo di servizio, sempre valorizzato a ejb xmlrequest (obbligatorio), l xml di richiesta citato al punto precedente 3.3. Impostare una richiesta AJAX in JQuery, specificando i parametri: type, il tipo di richiesta, valorizzato a GET url, l indirizzo completo della richiesta al servizio citato al passo precedente datatype, il tipo della risposta, valorizzato a "xml" success, l handler dell evento attivato in caso di successo nella richiesta error, l handler dell evento attivato in caso di errore nella richiesta 3.4. Scrivere gli handler di evento per l elaborazione della risposta e la gestione degli errori 4. Caricare la pagina sul proprio web server pagina 5 di 6
N.B. Per aggirare la same-domain-policy, restrizione dei browser che impedisce ad uno script, tramite qualsiasi tipo di richiesta HTTP, l accesso a risorse che si trovano su server diversi rispetto a quello della pagina che lo incorpora, è necessario definire un proxy sul proprio webserver. Riportiamo la configurazione da aggiungere al file httpd.conf nel caso in cui il server che espone l applicazione sia Apache (http://www.apache.org/). ProxyPass /ricercatoponimi/ http://webgis.regione.sardegna.it/ricercatoponimi/ ProxyPassReverse /ricercatoponimi/ http://webgis.regione.sardegna.it/ricercatoponimi/ Di seguito la pagina prodotta seguendo la procedura descritta. <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script> <script type="text/javascript"> var freeformdescription ="giorgino"; var xmlrequest= "<xls:directoryrequest xmlns:xls=\"http://www.opengis.net/xls\">"+ "<xls:poiproperties>"+ "<xls:poiproperty name=\"other\" value=\"freeformdescription "+freeformdescription+"\"/>"+ "<xls:poiproperty name=\"other\" value=\"geometry true\"/>"+ "<xls:poiproperty name=\"other\" value=\"numpagina 1\"/>"+ "<xls:poiproperty name=\"other\" value=\"numrisultatiperpagina 10\"/>"+ "</xls:poiproperties>"+ "</xls:directoryrequest>"; var url= http://<nome_host>/ricercatoponimi/ricercatoponimiservice.ejb?"+ "servicename=rtopengisresp"+ "&methodtype=ejb"+ "&xmlrequest="+xmlrequest; $.ajax({ type: "GET", url: url, datatype: "xml", success: onsuccess, error: onerror }); function onerror(jqxhr, textstatus, errorthrown){ alert(textstatus); } function onsuccess(data, textstatus, jqxhr){ alert(jqxhr.responsetext); } </script> pagina 6 di 6