Saltar al contenido principal

Mapas

Se dispone de una API para la obtención, creación, modificación y descarga de mapas del usuario.

Tipos de mapas

idtipo
1ambientación
2rinde
3altimetría
4nutrientes
5anomalías
6prescripción

APIs

GET

GET /api/users/me/maps

Este endpoint se puede utilizar de dos maneras:

  1. Listado: Trae todos los mapas de usuario. Se pueden filtrar por lote añadiendo en la query string:
    • id_lote: integer, id de lote.
  2. Mapa: Devuelve un mapa específico. Se debe enviar en la query string:
    • id: integer, id del mapa

Ejemplo de respuesta

Listado

{
"data": [
{
"id_lote": 000000,
"id_tipo": 1,
"nombre": "test",
"id_usuario": 000000,
"fecha_ini": "2022-03-16 14:19:57.531485",
"id": 000000,
"metadata": {
"capas": {
"1": {
"color": [252, 141, 89, 255],
"nombre": "Field Zone 1"
},
"0": {
"color": [215, 48, 39, 255],
"nombre": "Field Zone 0"
},
"3": {
"color": [255, 255, 191, 255],
"nombre": "Field Zone 3"
},
"2": {
"color": [254, 224, 139, 255],
"nombre": "Field Zone 2"
},
"5": {
"color": [145, 207, 96, 255],
"nombre": "Field Zone 5"
},
"4": {
"color": [217, 239, 139, 255],
"nombre": "Field Zone 4"
},
"6": {
"color": [26, 152, 80, 255],
"nombre": "Field Zone 6"
}
}
}
},
{
"id_lote": 00000,
"id_tipo": 1,
"nombre": "test2",
"id_usuario": 000000,
"fecha_ini": "2022-03-17 15:58:40.060272",
"id": 000000,
"metadata": {
"capas": {
"1": {
"color": [252, 141, 89, 255],
"nombre": "Field Zone 1"
},
"0": {
"color": [215, 48, 39, 255],
"nombre": "Field Zone 0"
},
"3": {
"color": [217, 239, 139, 255],
"nombre": "Field Zone 3"
},
"2": {
"color": [254, 224, 139, 255],
"nombre": "Field Zone 2"
},
"5": {
"color": [26, 152, 80, 255],
"nombre": "Field Zone 5"
},
"4": {
"color": [145, 207, 96, 255],
"nombre": "Field Zone 4"
}
}
}
}
]
}

Mapa

{
"data": {
"nombre": "test2",
"geojson": {
"type": "FeatureCollection",
"features": [
{
"geometry": {
"type": "Polygon",
"coordinates": [...]
},
"type": "Feature",
"id": 17,
"properties": {
"nombre": "Field Zone 0",
"_featid": "76",
"id": 0
}
},
{
"geometry": {
"type": "Polygon",
"coordinates": [...]
},
"type": "Feature",
"id": 19,
"properties": {
"nombre": "Field Zone 2",
"_featid": "59",
"id": 2
}
},
{
"geometry": {
"type": "Polygon",
"coordinates": [...]
},
"type": "Feature",
"id": 20,
"properties": {
"nombre": "Field Zone 1",
"_featid": "66",
"id": 1
}
},
{
"geometry": {
"type": "Polygon",
"coordinates": [...]
},
"type": "Feature",
"id": 23,
"properties": {
"nombre": "Field Zone 5",
"_featid": "23",
"id": 5
}
},
{
"geometry": {
"type": "Polygon",
"coordinates": [...]
},
"type": "Feature",
"id": 26,
"properties": {
"nombre": "Field Zone 4",
"_featid": "24",
"id": 4
}
},
{
"geometry": {
"type": "Polygon",
"coordinates": [...]
},
"type": "Feature",
"id": 27,
"properties": {
"nombre": "Field Zone 3",
"_featid": "6",
"id": 3
}
}
]
},
"id_tipo": 1,
"id_lote": 00000,
"id_usuario": 0000,
"fecha_ini": "2022-03-17 15:58:40.060272",
"id": 00000,
"metadata": {
"capas": {
"1": {
"color": [
252,
141,
89,
255
],
"nombre": "Field Zone 1"
},
"0": {
"color": [
215,
48,
39,
255
],
"nombre": "Field Zone 0"
},
"3": {
"color": [
217,
239,
139,
255
],
"nombre": "Field Zone 3"
},
"2": {
"color": [
254,
224,
139,
255
],
"nombre": "Field Zone 2"
},
"5": {
"color": [
26,
152,
80,
255
],
"nombre": "Field Zone 5"
},
"4": {
"color": [
145,
207,
96,
255
],
"nombre": "Field Zone 4"
}
}
}
}
}

Posibles errores

  1. Mapa no encontrado

Respuesta:

{
"res": "Error",
"info": "Map not found"
}
  1. El usuario no tiene suficientes permisos

Respuesta:

{
"res": "Error",
"info": "User does not have enough permissions"
}

POST

POST api/users/me/maps

Crea un nuevo mapa. En el body se debe enviar la siguiente información:

  • create_application: boolean, crea un registro nuevo en el Registro de campo
  • nombre: String, nombre del mapa a crear
  • id_lote: integer, id de lote
  • id_tipo: integer, tipo de mapa
  • geojson: GeoJSON, feature del mapa a crear
  • metadata: Object, cualquier informacion extra relacionada al mapa

Respuesta:

{
"info": "Valid data",
"res": "OK",
"code": 0
}

Posibles errores

  1. El nombre del mapa ya está en uso

Respuesta:

{
"res": "Error",
"info": "The map name is already used"
}
  1. El usuario no tiene suficientes permisos

Respuesta:

{
"res": "Error",
"info": "User does not have enough permissions"
}

PUT

PUT api/users/me/maps

Pisa un mapa existente. En el body se debe enviar la siguiente información:

  • create_application: boolean
  • nombre: String, nombre del mapa
  • id_lote: integer, id de lote
  • id_tipo: integer, tipo de mapa
  • id: integer, id del mapa a pisar
  • geojson: GeoJSON, feature del mapa
  • metadata: Object, cualquier informacion extra relacionada al mapa

Posibles errores

  1. Mapa no encontrado

Respuesta:

{
"res": "Error",
"info": "Map not found"
}
  1. Acceso denegado

Esto se puede deber a que el mapa lo haya creado otro usuario Respuesta:

{
"res": "Error",
"info": "Denied access"
}
  1. El usuario no tiene suficientes permisos

Respuesta:

{
"res": "Error",
"info": "User does not have enough permissions"
}

PATCH

PATCH api/users/me/maps

Modifica un mapa existente. En el body se pueden enviar los mismos parametros que en el PUT.

Se debe especificar el id del mapa.

Posibles errores

  1. Mapa no encontrado

Respuesta:

{
"res": "Error",
"info": "Map not found"
}
  1. Acceso denegado

Esto se puede deber a que el mapa lo haya creado otro usuario

{
"res": "Error",
"info": "Denied access"
}
  1. El usuario no tiene suficientes permisos

Respuesta:

{
"res": "Error",
"info": "User does not have enough permissions"
}

DOWNLOAD

POST api/users/me/maps/download
'Content-Type': 'multipart/form-data'

Devuelve un objeto Blob de un archivo Zip que contiene los archivos del mapa en formato shapefile.

En el body se debe enviar la siguiente informacion:

  • id_mapa: integer, id del mapa a descargar
  • nombre: String, nombre del archivo que se descarga

Ejemplo de uso:

const form = new FormData();
form.append("id_mapa", id_mapa);
form.append("nombre", nombre);

const options = {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
Authorization: `Bearer ${token}`
}
};

options.body = form;

fetch('https://api.auravant.com/api/users/me/maps/download', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));

Errores generales:

  1. Mapa no encontrado
{
"res": "Error",
"info": "Map not found"
}
  1. Acceso denegado
{
"res": "Error",
"info": "Denied access"
}
  1. El nombre ya se encuentra en uso
{
"res": "Error",
"info": "The map name is already used"
}
  1. Id de lote invalido
{
"res": "Error",
"info": "Invalid field"
}
  1. El usuario no tiene suficientes permisos
{
"res": "Error",
"info": "User does not have enough permissions"
}
{
"res": "Error",
"info": "User does not have enough permissions"
}
  1. Parámetros invalidos
{
"res": "Error",
"info": "Invalid parameters"
}