API Lotes
Lotes
APIs
POST
Dar de alta un lote, asignándolo a un campo existente o nuevo.
Para poder utilizar esta API, es necesaria la funcionalidad Crear Lotes.
Content-Type: application/x-www-form-urlencoded
POST /api/agregarlote
En el formulario incluir:
nombre
:String
, nombre del nuevo lote.shape
:String
, WKT del polígono. Debe estar proyectado en EPSG 4326 (WGS84). Ejemplo"POLYGON((-62.31584534415723908 -33.12230490954907935, -62.31855704936425155 -33.12061682816192842, ...))"
idcampo
:Int
, ID del Campo al que el nuevo lote pertenece. En caso de querer asignarlo a un nuevo Campo, utilizar la propiedadnombrecampo
nombrecampo
:String
, nombre del Campo, cuyo largo no debe superar los 50 caracteres. En caso de enviaridcampo
, esta propiedad se ignora. Si existe un Campo con el nombrenombrecampo
, el lote se asignará al mismo. Caso contrario, se creará un Campo nuevo.
Si no se dispone del polígono en formato WKT pero sí en formato KML, KMZ o Shapefile, es posible utilizar esta API para realizar la conversión
Ejemplo de respuesta:
{
"res": "ok",
"info": "Nuevo id lote 16548",
"id_lote": "16548",
"id_campo": 12555
}
Errores específicos
code | descripción |
---|---|
1 | Error general |
2 | La geometria shape es inválida |
3 | N/A |
4 | El nombre del lote está repetido en el campo |
5 | N/A |
6 | El largo del nombre del campo supera 50 caracteres o no supera 1 caracter |
7 | El usuario no dispone permisos. Verificar que la Versión de la Extensión tenga la funcionalidad en su claimset |
8 | El usuario no dispone de la cuota necesaria en el espacio |
9 | Faltan parámetros |
10 | Polígono inválido |
11 | El lote ingresado supera las ha admitidas |
12 | Datos del usuario incorrectos |
13 | Las hectareas consumidas son mayores a la disponibilidad del usuario |
14 | Cuota excedida para el escritorio, usuario ilimitado |
15 | Usuario con cuota garantizada, excede ha totales disponibles |
GET
Permite ver los lotes a los que el usuario tiene acceso e información de cada uno, agrupado por campos. Además, se pueden ver los lotes de los usuarios supervisados por el usuario que realiza la consulta, en caso de pertenecer a un espacio.
GET /api/getfields
user
:Object
, lotes del usuarios que realiza la consultauid
:String
, ID de usuario de Auravantuser_name
:String
, nombre del usuariofarms
:Object[]
, Array de objetos de campos del usuario. Ver objeto de campos
supervised
:Object
, objeto cuyos atributos son los IDs de usuarios supervisados por el usuario que realiza la consulta. El valor de cada atributo es un objeto con los siguientes atributos:uid
:String
, ID de usuario de Auravantuser_name
:String
, nombre del usuariofarms
:Object
, objeto de campos del usuario. Ver objeto de campos
Objeto de campos
El objeto de campos tiene como atributos los IDs de los campos, y el valor de cada uno es un objeto con los siguientes atributos:
id
:Int
, ID del camponame
:String
, nombre del campotags
:Array Int
, array con IDs de tags de campostags_names
:Array Int
, array con nombres de tags de campospermissions
:Array Int
, array con los códigos de los permisos que el usuario tiene sobre el camporole
:Int
, ID de rol del usuario sobre el campobbox
:String
, WKT (EPSG 4326) del polígono del rectángulo que contiene todos los lotes del campo (Bounding Box).fields
:Object
, objeto cuyas llaves son los ids de los lotes del usuario, y contienen su información correspondiente. Ver objeto de lotes
Objeto de lotes
El objeto de lotes tiene como atributos los IDs de los lotes, y el valor de cada uno es un objeto con los siguientes atributos:
id
:Int
, ID del lotename
:String
, nombre del loterole
:Int
, ID de rol del usuario sobre el lotefarm
:String
, nombre del campocountry
:String
, código del paísshapes
:Object
current
:Object
polygon
:String
, WKT (EPSG 4326) del polígono del lotecentroid
:String
, WKT (EPSG 4326) del punto del centroide del lotearea
:Float
, area del lote en hectáreasstart_date
:String
, fecha de creación del lote en formato YYYY-MM-DDend_date
:String
, su valor es "current", indicando que es la forma actual del lotebbox
:String
, WKT (EPSG 4326) del polígono del rectángulo que contiene al lote (Bounding Box)
Ejemplo de Respuesta
En este caso, el usuario "Usuario Prueba", cuyo ID es UID-72f1b3cedac245c009de03b7a7c9d5a8
, posee 2 campos (1975 y 1836).
El primero tiene un lote (5911) y el segundo, dos (7143 y 7145).
Además el usuario pertenece a un espacio en el cual supervisa a otro usuario
("Usuario Supervisado de Prueba", con ID UID-dbaefe8503fe6cdb7909611e8953e74f
). Éste posee un campo (3566) con dos lotes
(13254 y 13289).
{
"user": {
"user_name": "Usuario Prueba",
"uid": "UID-72f1b3cedac245c009de03b7a7c9d5a8",
"farms": {
"1975": {
"name": "Campo Prueba",
"role": 1,
"bbox": "POLYGON ((-59.9799656867981 -35.8329711461622, -59.9799656867981 -35.8241463744063, -59.9682283401489 -35.8241463744063, -59.9682283401489 -35.8329711461622, -59.9799656867981 -35.8329711461622))",
"id": 1975,
"tags": null,
"fields": {
"5911": {
"name": "Lote 1",
"role": 1,
"id": 5911,
"farm": "Campo Prueba",
"shapes": {
"current": {
"polygon": "POLYGON ((-59.9798798561096 -35.8263037281096, -59.9799656867981 -35.8269822385233, -59.9760818481445 -35.8299919711895, -59.9746897816658 -35.8329711461622, -59.9682283401489 -35.8274867681474, -59.9727773666382 -35.8241463744063, -59.9798798561096 -35.8263037281096))",
"end_date": "current",
"area": 5.3809314,
"centroid": "POINT (-59.974097013473504 -35.82855876028425)",
"bbox": "POLYGON ((-59.9799656867981 -35.8329711461622, -59.9799656867981 -35.8241463744063, -59.9682283401489 -35.8241463744063, -59.9682283401489 -35.8329711461622, -59.9799656867981 -35.8329711461622))",
"start_date": "2016-01-01"
}
}
}
}
},
"1836": {
"name": "Campo Prueba 2",
"role": 5,
"bbox": "POLYGON ((-63.4189217537641 -36.89400693295, -63.4189217537641 -36.8893543594351, -63.407678604126 -36.8893543594351, -63.407678604126 -36.89400693295, -63.4189217537641 -36.89400693295))",
"id": 1836,
"tags": null,
"fields": {
"7143": {
"name": "Lote Prueba 1",
"role": 5,
"id": 7143,
"farm": "Campo Prueba 2",
"shapes": {
"current": {
"polygon": "POLYGON ((-63.4189217537641 -36.8936626452543, -63.4189082092408 -36.8900518014372, -63.4189195744693 -36.8893543594351, -63.4131949022412 -36.889363476622, -63.4131769760736 -36.8921857020239, -63.4149205684662 -36.8921664236779, -63.4158003330231 -36.8923122931648, -63.4162938594818 -36.8925010650283, -63.4167015552521 -36.8928013829398, -63.4169483184814 -36.8931875042328, -63.4170985221863 -36.893702329585, -63.4189217537641 -36.8936626452543))",
"end_date": "current",
"area": 1.4015214,
"centroid": "POINT (-63.41604936491885 -36.89152834451005)",
"bbox": "POLYGON ((-63.4189217537641 -36.893702329585, -63.4189217537641 -36.8893543594351, -63.4131769760736 -36.8893543594351, -63.4131769760736 -36.893702329585, -63.4189217537641 -36.893702329585))",
"start_date": "2016-01-01"
}
}
},
"7145": {
"name": "Lote Prueba 2",
"role": 5,
"id": 7145,
"farm": "Campo Prueba 2",
"shapes": {
"current": {
"polygon": "POLYGON ((-63.4077215194702 -36.89400693295, -63.4131650626659 -36.8938535588724, -63.4131938964129 -36.8893632084695, -63.4076980501413 -36.8893752753329, -63.407678604126 -36.8910509419143, -63.4082338213921 -36.8912826202372, -63.4086012840271 -36.8916322815596, -63.4086012840271 -36.8920141184749, -63.4083867073059 -36.8924066791549, -63.407678604126 -36.8928357049116, -63.4077215194702 -36.89400693295))",
"end_date": "current",
"area": 22.190903,
"centroid": "POINT (-63.410436250269456 -36.89168507070975)",
"bbox": "POLYGON ((-63.4131938964129 -36.89400693295, -63.4131938964129 -36.8893632084695, -63.407678604126 -36.8893632084695, -63.407678604126 -36.89400693295, -63.4131938964129 -36.89400693295))",
"start_date": "2016-01-01"
}
}
}
}
}
}
},
"supervised": {
"UID-dbaefe8503fe6cdb7909611e8953e74f": {
"user_name": "Usuario Supervisado de Prueba",
"uid": "UID-dbaefe8503fe6cdb7909611e8953e74f",
"farms": {
"3566": {
"name": "Campo Ensayo 1",
"role": 1,
"bbox": "POLYGON ((-62.6232734075912 -32.8926110237142, -62.6232734075912 -32.8709990515346, -62.5776329389938 -32.8709990515346, -62.5776329389938 -32.8926110237142, -62.6232734075912 -32.8926110237142))",
"id": 3566,
"tags": [10, 23],
"fields": {
"13254": {
"role": 1,
"id": 13254,
"name": "Lote Ensayo 1",
"farm": "Campo Ensayo 1",
"shapes": {
"current": {
"polygon": "POLYGON ((-62.5972237936386 -32.8749998863106, -62.6188531271347 -32.8709990515346, -62.6232734075912 -32.8886830582691, -62.601429497374 -32.8926110237142, -62.5972237936386 -32.8749998863106))",
"end_date": "current",
"area": 415.523,
"centroid": "POINT (-62.61024860061489 -32.8818050376244)",
"bbox": "POLYGON ((-62.6232734075912 -32.8926110237142, -62.6232734075912 -32.8709990515346, -62.5972237936386 -32.8709990515346, -62.5972237936386 -32.8926110237142, -62.6232734075912 -32.8926110237142))",
"start_date": "2016-01-01"
}
}
},
"13398": {
"role": 1,
"id": 13398,
"name": "Lote Ensayo 2",
"farm": "Campo Ensayo 1",
"shapes": {
"current": {
"polygon": "POLYGON ((-62.5992622724899 -32.8837157945315, -62.5798216215499 -32.8871394523206, -62.5776329389938 -32.8784178739015, -62.5971594206222 -32.8749217936657, -62.5992622724899 -32.8837157945315))",
"end_date": "current",
"area": 184.64764,
"centroid": "POINT (-62.58844760574184 -32.88103062299315)",
"bbox": "POLYGON ((-62.5992622724899 -32.8871394523206, -62.5992622724899 -32.8749217936657, -62.5776329389938 -32.8749217936657, -62.5776329389938 -32.8871394523206, -62.5992622724899 -32.8871394523206))",
"start_date": "2016-01-01"
}
}
}
}
}
}
}
}
}
DELETE
Permite eliminar un lote existente, utilizando su ID como parámetro en la URL.
GET /api/borrarlotes?lote=XXXXXX
NDVI
APIs
GET
Permite obtener el NDVI promedio de un lote, para un rango de fechas. El índice es calculado a partir de las imágenes de Sentinel 2. Sólo se incluyen las imágenes que hayan sido clasificadas como libre de nubes.
GET /api/fields/ndvi
- Parámetros en la URL:
field_id
: Obligatorio. Es el ID del lote por el cual se quiere consutlar.date_from
: Opcional. Fecha a partir de la cual consultar. Formato YYYY-MM-DDdate_to
: Opcional. Fecha hasta la cual consultar. Formato YYYY-MM-DD
Ejemplo de Respuesta:
{
"ndvi": [
{"date": "2020-06-13", "ndvi_mean": 0.246348},
{"date": "2020-06-10", "ndvi_mean": 0.215531},
{"date": "2020-06-08", "ndvi_mean": 0.235166},
{"date": "2020-06-03", "ndvi_mean": 0.228176},
],
"code": 0,
"field_id": 1500
}
Polígonos Por Camapaña
El polígono georreferenciado de un lote se puede modificar para una campaña. Al modificarse, las campañas siguientes tendrán el mismo shape.
APIS
Nuevo polígono de campaña
Este endpoint permite crear un polígono en una campaña o modificar el que ya existe para una campaña.
El usuario debe tener el permiso 220 (modificar forma de lote) sobre el lote. Deben estar habilitadas las opciones de crear lote (C) y modificar (U) campaña.
El endpoint valida que el nuevo polígono se encuentre dentro de un recinto permitido y que no se estén procesando imágenes.
POST /api/fields/v2/shapes
Headers:
Content-Type: application/json
Body:
{
'type': 'object',
'properties': {
'field_id': {"type": "integer", "min": 1},
'campaign': {"type": "integer", "min": 1},
'shape': {'type': 'string', 'description': 'WKT en EPSG 4326'},
},
'required': ['field_id', 'campaign', 'shape'],
}
Respuesta:
{
"info": "shape was created",
"data": {
"images_reprocessing": true
}
}
El parámetro images_reprocessing
indica si hubo que reprocesar las imágenes.
En caso de ser verdadero, no se podrá modificar el polígono hasta que no se termine de reprocesar.
Verificar si aún se están procesando las imágenes
Este endpoint permite verificar si aún se están procesando las imágenes de un lote. En caso de que las imágenes aún se estén procesando, devolverá el error REPROCESSING
.
GET /api/fields/v2/shape/lock?field_id=`field_id`
Respuesta:
{
"info": "allowed",
"data": {
"images_reprocessing": false
}
}
Obtener los límites de expansión
Cuando se modifica un polígono, el mismo debe estar dentro de este recinto.
GET /api/fields/v2/shape/limits?field_id=`field_id`
Respuesta:
{
"info": "shape expansion limits retrieved",
"data": {
"limits_4326": "MULTIPOLYGON(.....)",
"limits_3857": "MULTIPOLYGON(.....)"
}
}
Los límites se retornan en EPSG:4326 y EPSG:3857, usar la que corresponda en su caso. Para más información sobre estas proyecciones consulte este artículo.
Errores específicos
-
ReprocessLockError: En caso que las imágenes aún se estén procesando
- code = 'REPROCESSING'
- msg = 'The previous shape is still being processed'
-
InvalidGeometryError:
- code = 'INVALID_GEOMETRY'
- msg = 'The provided geometry is invalid'
-
NotEnoughQuotaError:
- code = 'NOT_ENOUGH_QUOTA'
- msg = 'User has exceeded the assigned quota'
-
NotEnoughWorkspaceQuotaError:
- code = 'NOT_ENOUGH_QUOTA_WORKSPACE'
- msg = 'Workspace has exceeded the assigned quota'
-
MaxShapeAreaExceededError:
- code = 'MAX_SHAPE_AREA_EXCEEDED'
- msg = 'The requested Shape exceeds area limits'
-
ShapeExpansionLimitError:
- code = 'SHAPE_EXPANSION_LIMIT'
- msg = 'The provided shape exceeds the defined expansion limits'