Saltar al contenido principal

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 propiedad nombrecampo
  • nombrecampo: String, nombre del Campo, cuyo largo no debe superar los 50 caracteres. En caso de enviar idcampo, esta propiedad se ignora. Si existe un Campo con el nombre nombrecampo, 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
codedescripción
1Error general
2La geometria shape es inválida
3N/A
4El nombre del lote está repetido en el campo
5N/A
6El largo del nombre del campo supera 50 caracteres o no supera 1 caracter
7El usuario no dispone permisos. Verificar que la Versión de la Extensión tenga la funcionalidad en su claimset
8El usuario no dispone de la cuota necesaria en el espacio
9Faltan parámetros
10Polígono inválido
11El lote ingresado supera las ha admitidas
12Datos del usuario incorrectos
13Las hectareas consumidas son mayores a la disponibilidad del usuario
14Cuota excedida para el escritorio, usuario ilimitado
15Usuario 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 consulta
    • uid: String, ID de usuario de Auravant
    • user_name: String, nombre del usuario
    • farms: 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 Auravant
    • user_name: String, nombre del usuario
    • farms: 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 campo
  • name: String, nombre del campo
  • tags: Array Int, array con IDs de tags de campos
  • tags_names: Array Int, array con nombres de tags de campos
  • permissions: Array Int, array con los códigos de los permisos que el usuario tiene sobre el campo
  • role: Int, ID de rol del usuario sobre el campo
  • bbox: 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 lote
  • name: String, nombre del lote
  • role: Int, ID de rol del usuario sobre el lote
  • farm: String, nombre del campo
  • country: String, código del país
  • shapes: Object
    • current: Object
      • polygon: String, WKT (EPSG 4326) del polígono del lote
      • centroid: String, WKT (EPSG 4326) del punto del centroide del lote
      • area: Float, area del lote en hectáreas
      • start_date: String, fecha de creación del lote en formato YYYY-MM-DD
      • end_date: String, su valor es "current", indicando que es la forma actual del lote
      • bbox: 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-DD
    • date_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.

Demostracion de poligonos por campaña

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'