Mapas
Se dispone de una API para la obtención, creación, modificación y descarga de mapas del usuario.
Tipos de mapas
id | tipo |
---|---|
1 | ambientación |
2 | rinde |
3 | altimetría |
4 | nutrientes |
5 | anomalías |
6 | prescripción |
APIs
GET
GET /api/users/me/maps
Este endpoint se puede utilizar de dos maneras:
- Listado: Trae todos los mapas de usuario. Se pueden filtrar por lote añadiendo en la query string:
id_lote
:integer
, id de lote.
- 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
- Mapa no encontrado
Respuesta:
{
"res": "Error",
"info": "Map not found"
}
- 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 camponombre
:String
, nombre del mapa a crearid_lote
:integer
, id de loteid_tipo
:integer
, tipo de mapageojson
:GeoJSON
, feature del mapa a crearmetadata
:Object
, cualquier informacion extra relacionada al mapa
Respuesta:
{
"info": "Valid data",
"res": "OK",
"code": 0
}
Posibles errores
- El nombre del mapa ya está en uso
Respuesta:
{
"res": "Error",
"info": "The map name is already used"
}
- 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 mapaid_lote
:integer
, id de loteid_tipo
:integer
, tipo de mapaid
:integer
, id del mapa a pisargeojson
:GeoJSON
, feature del mapametadata
:Object
, cualquier informacion extra relacionada al mapa
Posibles errores
- Mapa no encontrado
Respuesta:
{
"res": "Error",
"info": "Map not found"
}
- Acceso denegado
Esto se puede deber a que el mapa lo haya creado otro usuario Respuesta:
{
"res": "Error",
"info": "Denied access"
}
- 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
- Mapa no encontrado
Respuesta:
{
"res": "Error",
"info": "Map not found"
}
- Acceso denegado
Esto se puede deber a que el mapa lo haya creado otro usuario
{
"res": "Error",
"info": "Denied access"
}
- 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 descargarnombre
: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:
- Mapa no encontrado
{
"res": "Error",
"info": "Map not found"
}
- Acceso denegado
{
"res": "Error",
"info": "Denied access"
}
- El nombre ya se encuentra en uso
{
"res": "Error",
"info": "The map name is already used"
}
- Id de lote invalido
{
"res": "Error",
"info": "Invalid field"
}
- El usuario no tiene suficientes permisos
{
"res": "Error",
"info": "User does not have enough permissions"
}
{
"res": "Error",
"info": "User does not have enough permissions"
}
- Parámetros invalidos
{
"res": "Error",
"info": "Invalid parameters"
}