Tutorial

Pulse el botón Map para mostrar el mapa

Introduzca el texto a buscar en todo el conjunto de datos devuelto


Mapa con el marcador


Si el marcador no se ve pulse el checkbox "Cluster Markers"

Si se devuelve más de un resultado se muestran todos

Buscar en el Grid

Introduzca el texto a buscar en todo el conjunto de datos devuelto

Buscar en el Grid

Activar/Desactivar columnas a mostrar

Grid

Posibilidad de cambiar el número de registros mostrado por el paginador

Paginador

API JAVA

Para obtener la información contenida en el portal, además de la interfaz gráfica se pueden utilizar llamadas a la API de CKAN para obtener toda la información contenida en el portal. A continuación se explican los pasos a seguir para obtener, tanto información general como información> específica, así como una explicación de los datos obtenidos.

Antes, sería bueno recordar cómo se organiza el portal. Si pensamos en una estructura descendente top-down, el primer elemento serían las organizaciones. En ellas se definen los diferentes grupos (tener en cuenta que hasta la versión actual los identificadores de los grupos deben ser diferentes aunque se repitan en diferentes organizaciones).

En cada grupo se definen los datasets (conjuntos de datos), que además pueden pertenecer a varios grupos.

En cada dataset se pueden definir uno o varios recursos, por ejemplo en http://www.tenerifedata.com/dataset/informacion-por-municipios, se ha definido la información tanto en formato geojson y Excel.

Teniendo en cuenta lo anterior vamos a mostrar cómo obtener la información de primer nivel y a continuación ir ajustando la búsqueda de información. De esta manera seremos capaces de acceder a la información particular y general que deseemos.

El tratamiento de los objetos json devueltos se puede realizar con cualquiera de las diversas librerías disponibles.

Obtener los grupos del portal

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/group_list

Obtenemos la siguiente información, objeto json con tres campos. Si success es true hemos obtenido resultados, result devuelve un vector con todos los grupos.

{

help: "Return a list of the names of the site's groups.
success: true,
result:
[
"bienestar-social",
"comercios",
"demografia",
"dossieres-prensa",
"indicadores-economicos",
"industria",
"medio-ambiente",
"mercado-laboral",
"movilidad",
"turismo"
]

}

Con esta simple url obtenemos los nombres, que a su vez son los identificadores de los grupos (bienestar-social, comercios, demografía, etc….).
El código sería por ejemplo el siguiente:


BufferedReader reader = null;
String urlString = "http://www.tenerifedata.com/api/3/action/group_list";
URL url = new URL(urlString);
reader = new BufferedReader(new InputStreamReader(url.openStream()));

Obtener la información del grupo comercio

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/group_show?id=comercio

Obtenemos la siguiente información, objeto json con tres campos. Si success es true hemos obtenido resultados, result devuelve un vector con todos los grupos.

{
help: "Return the details of a group.",
success: true,
result:

{
users: [ ],
display_name: "Comercio",
description: "Información geolocalizada de actividades económicas, culturales, de ocio y administrativas.",
image_display_url: "http://www.tenerifedata.com/uploads/group/20140614-162647.771212phcomercio.jpg",
title: "Comercio",
package_count: 0,
created: "2014-06-14T18:18:59.024424",
approval_status: "approved",
is_organization: false,
state: "deleted",
extras: [ ],
image_url: "20140614-162647.771212phcomercio.jpg",
groups: [ ],
num_followers: 0,
revision_id: "e1dd8ed4-d2be-4e97-8f9e-5162652cc7a3",
packages: [ ],
type: "group",
id: "1e80a45a-e9e5-4285-8ebc-e709c0cb922a",
tags: [ ],
name: "comercio"
}

}

Con este simple ejemplo obtenemos un objeto json con toda la información de este grupo concreto como puede ser:

  • Título: title: Comercio
  • Descripción: Description: Descripción del grupo
  • Fecha de creación (con formato ISO): created: 2014-06-14T18:18:59.024424
  • Etc.

BufferedReader reader = null;

String urlString = " http://www.tenerifedata.com/api/3/action/group_show?id=comercio ";

URL url = new URL(urlString);

reader = new BufferedReader(new InputStreamReader(url.openStream()));

Obtener conjuntos de datos (datasets) del portal

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/package_list

BufferedReader reader = null;

String urlString = "http://www.tenerifedata.com/api/3/action/package_list";

URL url = new URL(urlString);

reader = new BufferedReader(new InputStreamReader(url.openStream()));

Obtenemos la siguiente información, objeto json con tres campos. Si success es true hemos obtenido resultados, result devuelve un vector con todos los datasets del portal

{
help: "Return a list of the names of the site's datasets (packages). ",
success: true,
result:

[
"afiliacion-a-la-seguridad-social",
"censo",
"censo-agrario-1999",
"censo-agrario-2009",
"censo-de-poblacion-y-viviendas-2011",
"censos-agrarios-1982-1999",
"ci",
"cifras-censales",
"comercio-y-alimentacion",
"contratos",
"cuentas-economicas",
"demandantes-de-empleo",
"empresas-y-actividades-en-poligonos-industriales",
"empresas-y-centros-de-trabajo",
"encuesta-de-poblacion-activa-epa",
"estadistica-agraria-de-tenerife",
"estadisticas-de-empleo-registrado",
"flores-esquejes-y-plantas",
"hosteleria-y-restauracion",
"iass-recursos-sanitarios-y-atencion-social",
"indices-de-ocupacion-por-categoria-y-zona",
"industria",
"informacion-por-municipios",
"medicina-y-salud",
"movimiento-natural-de-la-poblacion",
"nomenclator-de-poblacion-tenerife",
"parque-vehiculos",
"pernoctaciones-por-categoria-y-zona",
"platano",
"plazas-de-alojamientos-por-categoria-y-zona",
"poligonos-industriales",
"precios-consumo-e-inversion",
"prensa-economica-nacional",
"prensa-economica-regional",
"prensa-economica-turismo",
"produccion-vitivinicola",
"productos-hortofruticolas",
"titsa-informacion-sobre-sistema-de-transporte",
"transporte",
"transporte-aereo",
"transporte-maritimo",
"turismo",
"turistas-alojados-por-categoria-y-zona",
"turistas-alojados-por-municipios"

]
}


Obtener los recursos para un dataset concreto

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/package_show?id=medicina-y-salud

BufferedReader reader = null;

String urlString = "http://www.tenerifedata.com/api/3/action/package_show?id=medicina-y-salud";

URL url = new URL(urlString);

reader = new BufferedReader(new InputStreamReader(url.openStream()));

En este objeto obtenemos los recursos para este dataset concreto. De nuevo tenemos help, success y result. Se ha recortado porque no es necesario mostrarlos todos para ilustrar este ejemplo.

En result, hay un vector llamado resources con una lista de los recursos y todo tipo de información.

Para acceder al recurso necesitamos el campo url, que proporciona la ubicación del fichero con la información

{
help: "Return the metadata of a dataset (package) and its resources.",
success: true,
result:

{
license_title: "Creative Commons Attribution",
maintainer: "",
relationships_as_object: [ ],
private: false,
maintainer_email: "",
revision_timestamp: "2016-03-29T10:02:17.022113",
id: "d1826fd4-38e1-4e9a-a01e-560e035690e4",
metadata_created: "2014-07-15T08:59:54.381651",
metadata_modified: "2016-03-29T10:02:17.023637",
author: "Cabildo Insular de Tenerife",
author_email: "",
state: "active",
version: "",
creator_user_id: "6af82965-4e51-4fff-b011-c8b044ed910f",
type: "dataset",
resources:

[
{
resource_group_id: "82de018e-8bd5-4584-ba5b-275300a5bbeb",
cache_last_updated: null,
revision_timestamp: "2014-07-15T09:05:38.180599",
webstore_last_updated: null,
id: "593a55e3-fe09-46b8-aaf8-8ce654744639",
size: null,
state: "active",
hash: "",
description: "",
format: "geojson",
tracking_summary:

{
total: 0,
recent: 0

},
last_modified: null,
url_type: "upload",
mimetype: null,
cache_url: null,
name: "Centros de salud",
created: "2014-07-15T11:00:58.162465", url: "http://www.tenerifedata.com/dataset/d1826fd4-38e1-4e9a-a01e-560e035690e4/resource/593a55e3-fe09-46b8-aaf8-8ce654744639/download/centrosdesalud.geojson",
webstore_url: null,
mimetype_inner: null,
position: 0,
revision_id: "e0d03d59-3465-4e2c-bcd8-df714138543a",
resource_type: null
},

{
resource_group_id: "82de018e-8bd5-4584-ba5b-275300a5bbeb",
cache_last_updated: null,
revision_timestamp: "2014-07-15T09:15:28.676196",
webstore_last_updated: null,
id: "fff4fbbe-ecfd-445c-b4cc-6ed7152a07bf",
size: null,
state: "active",
hash: "",
description: "",
format: "geojson",
tracking_summary:

{
total: 0,
recent: 0

},

last_modified: null,
url_type: "upload",
mimetype: null,
cache_url: null,
name: "Farmacias",
created: "2014-07-15T11:14:58.060523",
url: "http://www.tenerifedata.com/dataset/d1826fd4-38e1-4e9a-a01e-560e035690e4/resource/fff4fbbe-ecfd-445c-b4cc-6ed7152a07bf/download/farmacias.geojson",
webstore_url: null,
mimetype_inner: null,
position: 1,
revision_id: "0b388f88-9b05-46d5-a0ea-2e954c342a8d",
resource_type: null
},

],

license_id: "cc-by",
relationships_as_subject: [ ],
num_tags: 1,
organization: null,
name: "medicina-y-salud",
isopen: true,
url: "http://www.tenerifecomercio.com",
notes: "Información georeferenciada y listados de centros de salud, farmacias, clínicas dentales y otros servicios sanitarios",
owner_org: null,
extras: [ ],
license_url: "http://www.opendefinition.org/licenses/cc-by",
title: "Medicina y salud",
revision_id: "0e9ef3ab-f955-4a8e-a962-4ba47c0d2ef0"
}

}

API PYTHON

Para obtener la información contenida en el portal, además de la interfaz gráfica se pueden utilizar llamadas a la API de CKAN para obtener toda la información contenida en el portal. A continuación se explican los pasos a seguir para obtener, tanto información general como información> específica, así como una explicación de los datos obtenidos.

Antes, sería bueno recordar cómo se organiza el portal. Si pensamos en una estructura descendente top-down, el primer elemento serían las organizaciones. En ellas se definen los diferentes grupos (tener en cuenta que hasta la versión actual los identificadores de los grupos deben ser diferentes aunque se repitan en diferentes organizaciones).

En cada grupo se definen los datasets (conjuntos de datos), que además pueden pertenecer a varios grupos.

En cada dataset se pueden definir uno o varios recursos, por ejemplo en http://www.tenerifedata.com/dataset/informacion-por-municipios, se ha definido la información tanto en formato geojson y Excel.

Teniendo en cuenta lo anterior vamos a mostrar cómo obtener la información de primer nivel y a continuación ir ajustando la búsqueda de información. De esta manera seremos capaces de acceder a la información particular y general que deseemos.

El tratamiento de los objetos json devueltos se puede realizar con cualquiera de las diversas librerías disponibles.

Obtener los grupos del portal

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/group_list

Obtenemos la siguiente información, objeto json con tres campos. Si success es true hemos obtenido resultados, result devuelve un vector con todos los grupos.

{

help: "Return a list of the names of the site's groups.
success: true,
result:
[
"bienestar-social",
"comercios",
"demografia",
"dossieres-prensa",
"indicadores-economicos",
"industria",
"medio-ambiente",
"mercado-laboral",
"movilidad",
"turismo"
]

}

Con esta simple url obtenemos los nombres, que a su vez son los identificadores de los grupos (bienestar-social, comercios, demografía, etc….).
El código sería por ejemplo el siguiente:


url_datasets = 'http://www.tenerifedata.com/api/3/action/group_list'
response = urllib.urlopen(url_datasets)
json_obj = json.load(response)
pprint.pprint(json_obj)

Obtener la información del grupo comercio

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/group_show?id=comercio

Obtenemos la siguiente información, objeto json con tres campos. Si success es true hemos obtenido resultados, result devuelve un vector con todos los grupos.

{
help: "Return the details of a group.",
success: true,
result:

{
users: [ ],
display_name: "Comercio",
description: "Información geolocalizada de actividades económicas, culturales, de ocio y administrativas.",
image_display_url: "http://www.tenerifedata.com/uploads/group/20140614-162647.771212phcomercio.jpg",
title: "Comercio",
package_count: 0,
created: "2014-06-14T18:18:59.024424",
approval_status: "approved",
is_organization: false,
state: "deleted",
extras: [ ],
image_url: "20140614-162647.771212phcomercio.jpg",
groups: [ ],
num_followers: 0,
revision_id: "e1dd8ed4-d2be-4e97-8f9e-5162652cc7a3",
packages: [ ],
type: "group",
id: "1e80a45a-e9e5-4285-8ebc-e709c0cb922a",
tags: [ ],
name: "comercio"
}

}

Con este simple ejemplo obtenemos un objeto json con toda la información de este grupo concreto como puede ser:

  • Título: title: Comercio
  • Descripción: Description: Descripción del grupo
  • Fecha de creación (con formato ISO): created: 2014-06-14T18:18:59.024424
  • Etc.

url_datasets = 'http://www.tenerifedata.com/api/3/action/group_show?id=comercio'

response = urllib.urlopen(url_datasets)

json_obj = json.load(response)

pprint.pprint(json_obj)

Obtener conjuntos de datos (datasets) del portal

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/package_list

BufferedReader reader = null;

String urlString = "http://www.tenerifedata.com/api/3/action/package_list";

URL url = new URL(urlString);

reader = new BufferedReader(new InputStreamReader(url.openStream()));

Obtenemos la siguiente información, objeto json con tres campos. Si success es true hemos obtenido resultados, result devuelve un vector con todos los datasets del portal

{
help: "Return a list of the names of the site's datasets (packages). ",
success: true,
result:

[
"afiliacion-a-la-seguridad-social",
"censo",
"censo-agrario-1999",
"censo-agrario-2009",
"censo-de-poblacion-y-viviendas-2011",
"censos-agrarios-1982-1999",
"ci",
"cifras-censales",
"comercio-y-alimentacion",
"contratos",
"cuentas-economicas",
"demandantes-de-empleo",
"empresas-y-actividades-en-poligonos-industriales",
"empresas-y-centros-de-trabajo",
"encuesta-de-poblacion-activa-epa",
"estadistica-agraria-de-tenerife",
"estadisticas-de-empleo-registrado",
"flores-esquejes-y-plantas",
"hosteleria-y-restauracion",
"iass-recursos-sanitarios-y-atencion-social",
"indices-de-ocupacion-por-categoria-y-zona",
"industria",
"informacion-por-municipios",
"medicina-y-salud",
"movimiento-natural-de-la-poblacion",
"nomenclator-de-poblacion-tenerife",
"parque-vehiculos",
"pernoctaciones-por-categoria-y-zona",
"platano",
"plazas-de-alojamientos-por-categoria-y-zona",
"poligonos-industriales",
"precios-consumo-e-inversion",
"prensa-economica-nacional",
"prensa-economica-regional",
"prensa-economica-turismo",
"produccion-vitivinicola",
"productos-hortofruticolas",
"titsa-informacion-sobre-sistema-de-transporte",
"transporte",
"transporte-aereo",
"transporte-maritimo",
"turismo",
"turistas-alojados-por-categoria-y-zona",
"turistas-alojados-por-municipios"

]
}


Obtener los recursos para un dataset concreto

Utilizamos la siguiente llamada a la API:

http://www.tenerifedata.com/api/3/action/package_show?id=medicina-y-salud

url_datasets = 'http://www.tenerifedata.com/api/3/action/package_show?id=medicina-y-salud'

response = urllib.urlopen(url_datasets)

json_obj = json.load(response)

pprint.pprint(json_obj)

En este objeto obtenemos los recursos para este dataset concreto. De nuevo tenemos help, success y result. Se ha recortado porque no es necesario mostrarlos todos para ilustrar este ejemplo.

En result, hay un vector llamado resources con una lista de los recursos y todo tipo de información.

Para acceder al recurso necesitamos el campo url, que proporciona la ubicación del fichero con la información

{
help: "Return the metadata of a dataset (package) and its resources.",
success: true,
result:

{
license_title: "Creative Commons Attribution",
maintainer: "",
relationships_as_object: [ ],
private: false,
maintainer_email: "",
revision_timestamp: "2016-03-29T10:02:17.022113",
id: "d1826fd4-38e1-4e9a-a01e-560e035690e4",
metadata_created: "2014-07-15T08:59:54.381651",
metadata_modified: "2016-03-29T10:02:17.023637",
author: "Cabildo Insular de Tenerife",
author_email: "",
state: "active",
version: "",
creator_user_id: "6af82965-4e51-4fff-b011-c8b044ed910f",
type: "dataset",
resources:

[
{
resource_group_id: "82de018e-8bd5-4584-ba5b-275300a5bbeb",
cache_last_updated: null,
revision_timestamp: "2014-07-15T09:05:38.180599",
webstore_last_updated: null,
id: "593a55e3-fe09-46b8-aaf8-8ce654744639",
size: null,
state: "active",
hash: "",
description: "",
format: "geojson",
tracking_summary:

{
total: 0,
recent: 0

},
last_modified: null,
url_type: "upload",
mimetype: null,
cache_url: null,
name: "Centros de salud",
created: "2014-07-15T11:00:58.162465", url: "http://www.tenerifedata.com/dataset/d1826fd4-38e1-4e9a-a01e-560e035690e4/resource/593a55e3-fe09-46b8-aaf8-8ce654744639/download/centrosdesalud.geojson",
webstore_url: null,
mimetype_inner: null,
position: 0,
revision_id: "e0d03d59-3465-4e2c-bcd8-df714138543a",
resource_type: null
},

{
resource_group_id: "82de018e-8bd5-4584-ba5b-275300a5bbeb",
cache_last_updated: null,
revision_timestamp: "2014-07-15T09:15:28.676196",
webstore_last_updated: null,
id: "fff4fbbe-ecfd-445c-b4cc-6ed7152a07bf",
size: null,
state: "active",
hash: "",
description: "",
format: "geojson",
tracking_summary:

{
total: 0,
recent: 0

},

last_modified: null,
url_type: "upload",
mimetype: null,
cache_url: null,
name: "Farmacias",
created: "2014-07-15T11:14:58.060523",
url: "http://www.tenerifedata.com/dataset/d1826fd4-38e1-4e9a-a01e-560e035690e4/resource/fff4fbbe-ecfd-445c-b4cc-6ed7152a07bf/download/farmacias.geojson",
webstore_url: null,
mimetype_inner: null,
position: 1,
revision_id: "0b388f88-9b05-46d5-a0ea-2e954c342a8d",
resource_type: null
},

],

license_id: "cc-by",
relationships_as_subject: [ ],
num_tags: 1,
organization: null,
name: "medicina-y-salud",
isopen: true,
url: "http://www.tenerifecomercio.com",
notes: "Información georeferenciada y listados de centros de salud, farmacias, clínicas dentales y otros servicios sanitarios",
owner_org: null,
extras: [ ],
license_url: "http://www.opendefinition.org/licenses/cc-by",
title: "Medicina y salud",
revision_id: "0e9ef3ab-f955-4a8e-a962-4ba47c0d2ef0"
}

}