Skip to content

Autenticación y límites de uso

URL base

Todas las solicitudes usan esta URL base:

https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/CalHeatScore_Live_Data_for_API_Use/FeatureServer/0

Añada /query (consulta) y sus parámetros de consulta para obtener datos de los puntajes de calor.

https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query?where=1=1&outFields=*&returnGeometry=false&f=json

Autenticación

No se necesita autenticación. La API es abierta y con acceso de solo de lectura —no puede modificar, crear o eliminar datos.

Requisito Detalles
Clave de API No se requiere
Token OAuth No se requiere
Cuenta No se requiere
Acceso Solo lectura (solo operaciones de query (consulta))

Como no se requiere autenticación, no incluya credenciales sensibles en sus solicitudes. No es necesario incluir encabezados de Authorization (Autorización) o parámetros de token.

Límites de uso

La API de CalHeatScore está alojada en ArcGIS Online, que aplica límites de uso justo a los servicios públicos de entidades. Aunque no se publican umbrales específicos, siga estas pautas para evitar que se restrinjan sus solicitudes:

Límites por solicitud:

Restricción Valor
Cantidad máximas de registros por respuesta 2,000
Formatos de respuesta admitidos JSON, GeoJSON, PBF
Máximo de respuestas concurrentes No publicado —manténgase por debajo de las 10 solicitudes simultáneas

Cada registro representa los datos para un código postal de California. Nuestro conjunto de datos contiene 1,721 códigos postales.

Recomendaciones para mantenerse dentro de los límites:

  1. Solicite solo los campos que necesita. Use outFields para especificar los campos, en lugar de outFields=*. Esto reduce el tamaño de la respuesta y la carga del servidor.
  2. Deshabilite la geometría cuando no la necesita. Seleccione returnGeometry=false si solo necesita datos de atributos. Las coordinadas del polígono aumentan significativamente el tamaño de la respuesta.
  3. Almacene las respuestas en caché de manera local. Los puntajes de calor se actualizan una vez al día. Guarde los resultados en caché y actualícelos una vez por día en lugar de consultar la API en cada carga de página.
  4. Pagine las solicitudes grandes. Use resultRecordCount y resultOffset en lugar de solicitar todos los registros juntos.

Formatos de respuesta

Configure el parámetro f para controlar el formato de respuesta.

JSON (predeterminado)

Use f=json para JSON estándar. Mejor para la mayoría de las integraciones de aplicaciones.

curl "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query?where=ZIP_CODE='90210'&outFields=ZIP_CODE,CHS_Day_0&returnGeometry=false&f=json"
import requests

BASE_URL = (
    "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/"
    "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query"
)

params = {
    "where": "ZIP_CODE='95814'",
    "outFields": "ZIP_CODE,CHS_Day_0",
    "returnGeometry": "false",
    "f": "json",
}

response = requests.get(BASE_URL, params=params)
data = response.json()

if "error" in data:
    print(f"Error: {data['error']['message']}")
else:
    for feature in data["features"]:
        attrs = feature["attributes"]
        print(f"ZIP {attrs['ZIP_CODE']}: score = {attrs['CHS_Day_0']}")
const baseUrl =
  "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/" +
  "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query";

const params = new URLSearchParams({
  where: "ZIP_CODE='95814'",
  outFields: "ZIP_CODE,CHS_Day_0",
  returnGeometry: "false",
  f: "json",
});

fetch(`${baseUrl}?${params}`)
  .then((res) => res.json())
  .then((data) => {
    if (data.error) {
      console.error(`Error: ${data.error.message}`);
      return;
    }
    data.features.forEach((feature) => {
      const attrs = feature.attributes;
      console.log(`ZIP ${attrs.ZIP_CODE}: score = ${attrs.CHS_Day_0}`);
    });
  })
  .catch((err) => console.error("Request failed:", err));

GeoJSON

Use f=geojson para GeoJSON. Mejor para las bibliotecas de creación de mapas como Leaflet, Mapbox y D3.

curl "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query?where=ZIP_CODE='95814'&outFields=ZIP_CODE,CHS_Day_0&outSR=4326&f=geojson"
import requests

BASE_URL = (
    "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/"
    "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query"
)

params = {
    "where": "ZIP_CODE='95814'",
    "outFields": "ZIP_CODE,CHS_Day_0",
    "outSR": "4326",
    "f": "geojson",
}

response = requests.get(BASE_URL, params=params)
geojson = response.json()

if "error" in geojson:
    print(f"Error: {geojson['error']['message']}")
else:
    for feature in geojson["features"]:
        props = feature["properties"]
        coords = feature["geometry"]["coordinates"][0][0]
        print(f"ZIP {props['ZIP_CODE']}: score = {props['CHS_Day_0']}, first coord = {coords}")
const baseUrl =
  "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/" +
  "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query";

const params = new URLSearchParams({
  where: "ZIP_CODE='95814'",
  outFields: "ZIP_CODE,CHS_Day_0",
  outSR: "4326",
  f: "geojson",
});

fetch(`${baseUrl}?${params}`)
  .then((res) => res.json())
  .then((geojson) => {
    if (geojson.error) {
      console.error(`Error: ${geojson.error.message}`);
      return;
    }
    geojson.features.forEach((feature) => {
      const props = feature.properties;
      console.log(`ZIP ${props.ZIP_CODE}: score = ${props.CHS_Day_0}`);
    });
  })
  .catch((err) => console.error("Request failed:", err));

PBF (Protocol Buffers)

Use f=pbf para Protocol Buffers. Mejor para aplicaciones de alto rendimiento que necesitan un tamaño de respuesta mínimo. Requiere un decodificador PBF para interpretar la respuesta binaria.

curl "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query?where=ZIP_CODE='95814'&outFields=ZIP_CODE,CHS_Day_0&returnGeometry=false&f=pbf" --output response.pbf
import requests

BASE_URL = (
    "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/"
    "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query"
)

params = {
    "where": "ZIP_CODE='95814'",
    "outFields": "ZIP_CODE,CHS_Day_0",
    "returnGeometry": "false",
    "f": "pbf",
}

response = requests.get(BASE_URL, params=params)

# Save binary PBF response to a file
with open("response.pbf", "wb") as f:
    f.write(response.content)

print(f"Saved {len(response.content)} bytes to response.pbf")
const baseUrl =
  "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/" +
  "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query";

const params = new URLSearchParams({
  where: "ZIP_CODE='95814'",
  outFields: "ZIP_CODE,CHS_Day_0",
  returnGeometry: "false",
  f: "pbf",
});

// Node.js: save binary PBF response to a file
const fs = require("fs");

fetch(`${baseUrl}?${params}`)
  .then((res) => res.arrayBuffer())
  .then((buffer) => {
    fs.writeFileSync("response.pbf", Buffer.from(buffer));
    console.log(`Saved ${buffer.byteLength} bytes to response.pbf`);
  })
  .catch((err) => console.error("Request failed:", err));

Manejo de errores

La API devuelve los errores como objetos JSON con un array de code (código), message (mensaje) y details (detalles). Errores comunes:

Estado de HTTP Código de error Causa Reparación
200 (con cuerpo del error) 400 SQL inválido en la cláusula where (dónde) Compruebe la sintaxis de su SQL. Los valores de tipo cadena deben ir entre comillas simples (ZIP_CODE='90210' no ZIP_CODE=90210)
200 (con cuerpo del error) 400 Nombre del campo inválido en outFields Verifique que los nombres de los campos coincidan exactamente: ZIP_CODE, CHS_Day_0, etc. (distingue mayúsculas y minúsculas)
200 (con cuerpo del error) 500 Error del servidor Vuelva a intentarlo después de unos segundos. Si el error persiste, es posible que el servicio no esté disponible temporalmente

Los servicios de entidades de ArcGIS devuelven un código HTTP 200 aun para errores — el error está en el cuerpo de la respuesta. Verifique siempre si existe una propiedad de error en la respuesta JSON antes de procesar los resultados.

Ejemplo de error
{
  "error": {
    "code": 400,
    "message": "Unable to complete operation.",
    "details": [
      "Invalid or unsupported SQL clause."
    ]
  }
}