Guía básica de herramientas para el uso de Datos Abiertos

A continuación te presentamos una guía básica de herramientas a usar para el tratamiento de datos. Si tienes dudas o te gustaría aportar código, escríbenos en nuestro correo datosabiertos@pueblacapital.gob.mx con tema "Sección para desarrolladores".

Las herramientas que te recomendamos:

Limpieza de datos

Extracción de Datos

Mapas de Datos

DKAN API FAQs

Si está buscando cargar grandes cantidades de datos en el sitio, la API puede ser el mejor método para usar.
Puede encontrar la documentación de la API aquí: http://dkan.readthedocs.io/en/latest/apis/index.html.
Los primeros dos listados son lo que necesita: la [Dataset REST API](https://dkan.readthedocs.io/en/latest/apis/rest-api.html
"Dataset REST API") y [DataStore API](http://dkan.readthedocs.io/en/latest/apis/datastore-api.html"DataStore API") .

¿Cómo consumir los datos abiertos vía API desde c#?

Consideraciones:

  • Toda la información disponible a través de la DKAN API REST en este portal, tiene un Identificador de Recursos
    Uniforme
    (URI - Uniform Resource Identifier), lo que permite obtener la información en
    la misma URL publicada (nivel 5 estrellas según la escala de Tim Berners-Lee).
  • Toda información que devuelve el API es en formato JSON o geoJSON según
    corresponda.

Ejemplo: conocer la afluencia de visitantes durante los últimos años.

Los pasos para consumir la información de manera automática serían los siguientes:

1.Identificar que el dataset y recursos que necesita existan en en el portal de Datos Abiertos.

Información de recurso

2. Dar click en vista previa y para obtener el URL y consumir los datos, da click en el botón DATA API (esquina superior derecha).

Información de recurso

3. Esta pantalla le mostrará toda la información al respecto:
Ejemplo de consulta

4. Al darle click al link te mostrará la información en formato JSON, copia el contenido y puedes crear una clase con
esa estructura usando la opción pegado especial de VS 2017, como se muestra en la siguiente imagen:

Pegado especial

5. Tu clase quería así:


using ...
namespace ConsoleApp
  {
   ...
  public class Result
  {
    public Field[] fields { get; set; }
    public string[] resource_id { get; set; }
    public int limit { get; set; }
    public int total { get; set; }
    public Record[] records { get; set; }
    public string sql { get; set; }
  }
  ...

6. Copia el link e insértalo en una constante en tu
código de c#.


*//si quieres obtener todos los resultados agrega al url el parámetro: &limit=0*
public const string UrlAfluenciaTuristica =
"https://datosabiertos.pueblacapital.gob.mx/api/action/datastore/search.json?resource_id=f0ad4ae2-e9d6-4e2d-9901-b1dc06443874";

7. Crea tu método para obtener y deserializar el archivo JSON
por medio de un HttpWebRequest, quedaría algo así:


  public static Afluencia GetObjectFromJson(string url)
  {
   Afluencia objeto;
   string json;
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
   using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
   using (Stream stream = response.GetResponseStream())
   using (StreamReader reader = new StreamReader(stream))
   {
    json = reader.ReadToEnd();
    objeto = JsonConvert.DeserializeObject(json);
   }
   return objeto;
  }

6. El código donde realizas la petición y obtienes un
resultado sería así:


  static void Main(string[] args)
  {
   Afluencia a = GetObjectFromJson(UrlAfluenciaTuristica);
   int TotalTuristas2010 = 0;
   foreach (Record r in a.result.records)
   {
    TotalTuristas2010 = TotalTuristas2010 + Convert.ToInt32(r.ANIO2010);
   }
   Console.WriteLine("El total de turistas registrados en el año 2010
       dentro de la ciudad de Puebla es: {1}", a.result.records.Count(), TotalTuristas2010);
   Console.ReadLine();
  }

7. El resultado en consola se ve así:
Información de recurso