Mapas
Se dispone de una API para la obtención, creación, modificación y descarga de mapas del usuario.
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
Se descarga un archivo del tipo 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
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"
}
Tipos de mapas
id | nombre |
---|---|
1 | ndvi1 |
2 | ndvip1 |
3 | gndvi1 |
4 | gndvip1 |
5 | rinde |
6 | rgb1 |
7 | rgbp1 |
8 | altimetria |
9 | siembra |
10 | herbicida |
11 | fungicida |
12 | insecticida |
13 | fertilizante |
14 | enmienda |
15 | profundidad_suelo |
17 | Densidad_20 |
22 | margen_bruto |
24 | ndvi0.8 |
25 | vigor planta |
26 | tcari/osavi |
27 | NDRE |
29 | RGB0.8 |
31 | Sentinel2 |
32 | Planet |
34 | aplicación |
35 | humedad |
36 | Electroconductividad_70 |
37 | Electroconductividad_150 |
39 | siembra_vel_avance |
40 | siembra_var |
41 | siembra_fecha |
42 | rinde_hum |
43 | rinde_vel_avance |
44 | rinde_fecha |
45 | MO_20 |
46 | MO_30 |
47 | MO_40 |
48 | MO_50 |
49 | MO_60 |
50 | MO_70 |
51 | MO_80 |
52 | MO_90 |
53 | MO_100 |
54 | MO_110 |
55 | MO_120 |
56 | MO_130 |
57 | MO_140 |
58 | MO_150 |
59 | N_20 |
60 | N_30 |
61 | N_40 |
62 | N_50 |
63 | N_60 |
64 | N_70 |
65 | N_80 |
66 | N_90 |
67 | N_100 |
68 | N_110 |
69 | N_120 |
70 | N_130 |
71 | N_140 |
72 | N_150 |
73 | P_20 |
74 | P_30 |
75 | P_40 |
76 | P_50 |
77 | P_60 |
78 | P_70 |
79 | P_80 |
80 | P_90 |
81 | P_100 |
82 | P_110 |
83 | P_120 |
84 | P_130 |
85 | P_140 |
86 | P_150 |
87 | K_20 |
88 | K_30 |
89 | K_40 |
90 | K_50 |
91 | K_60 |
92 | K_70 |
93 | K_80 |
94 | K_90 |
95 | K_100 |
96 | K_110 |
97 | K_120 |
98 | K_130 |
99 | K_140 |
100 | K_150 |
101 | S_20 |
102 | S_30 |
103 | S_40 |
104 | S_50 |
105 | S_60 |
106 | S_70 |
107 | S_80 |
108 | S_90 |
109 | S_100 |
110 | S_110 |
111 | S_120 |
112 | S_130 |
113 | S_140 |
114 | S_150 |
115 | PH_20 |
116 | PH_30 |
117 | PH_40 |
118 | PH_50 |
119 | PH_60 |
120 | PH_70 |
121 | PH_80 |
122 | PH_90 |
123 | PH_100 |
124 | PH_110 |
125 | PH_120 |
126 | PH_130 |
127 | PH_140 |
128 | PH_150 |
129 | Ca_20 |
130 | Ca_30 |
131 | Ca_40 |
132 | Ca_50 |
133 | Ca_60 |
134 | Ca_70 |
135 | Ca_80 |
136 | Ca_90 |
137 | Ca_100 |
138 | Ca_110 |
139 | Ca_120 |
140 | Ca_130 |
141 | Ca_140 |
142 | Ca_150 |
143 | Mg_20 |
144 | Mg_30 |
145 | Mg_40 |
146 | Mg_50 |
147 | Mg_60 |
148 | Mg_70 |
149 | Mg_80 |
150 | Mg_90 |
151 | Mg_100 |
152 | Mg_110 |
153 | Mg_120 |
154 | Mg_130 |
155 | Mg_140 |
156 | Mg_150 |
157 | Na_20 |
158 | Na_30 |
159 | Na_40 |
160 | Na_50 |
161 | Na_60 |
162 | Na_70 |
163 | Na_80 |
164 | Na_90 |
165 | Na_100 |
166 | Na_110 |
167 | Na_120 |
168 | Na_130 |
169 | Na_140 |
170 | Na_150 |
171 | Electroconductividad_30 |
172 | Electroconductividad_40 |
173 | Electroconductividad_60 |
174 | Electroconductividad_90 |
175 | Electroconductividad_100 |
176 | Electroconductividad_120 |
177 | Electroconductividad_130 |
178 | Electroconductividad_140 |
179 | Arena_20 |
180 | Arena_30 |
181 | Arena_40 |
182 | Arena_50 |
183 | Arena_60 |
184 | Arena_70 |
185 | Arena_80 |
186 | Arena_90 |
187 | Arena_100 |
188 | Arena_110 |
189 | Arena_120 |
190 | Arena_130 |
191 | Arena_140 |
192 | Arena_150 |
193 | Arcilla_20 |
194 | Arcilla_30 |
195 | Arcilla_40 |
196 | Arcilla_50 |
197 | Arcilla_60 |
198 | Arcilla_70 |
199 | Arcilla_80 |
200 | Arcilla_90 |
201 | Arcilla_100 |
202 | Arcilla_110 |
203 | Arcilla_120 |
204 | Arcilla_130 |
205 | Arcilla_140 |
206 | Arcilla_150 |
207 | Limo_20 |
208 | Limo_30 |
209 | Limo_40 |
210 | Limo_50 |
211 | Limo_60 |
212 | Limo_70 |
213 | Limo_80 |
214 | Limo_90 |
215 | Limo_100 |
216 | Limo_110 |
217 | Limo_120 |
218 | Limo_130 |
219 | Limo_140 |
220 | Limo_150 |
221 | Densidad_30 |
222 | Densidad_40 |
223 | Densidad_50 |
224 | Densidad_60 |
225 | Densidad_70 |
226 | Densidad_80 |
227 | Densidad_90 |
228 | Densidad_100 |
229 | Densidad_110 |
230 | Densidad_120 |
231 | Densidad_130 |
232 | Densidad_140 |
233 | Densidad_150 |
234 | aplicación_fecha |
235 | aplicación_hum |
236 | aplicación_presion |
237 | aplicación_temp |
238 | aplicación_vel_avance |
239 | costo |
240 | ingreso |
390 | Electroconductividad_20 |
391 | Electroconductividad_50 |
392 | Electroconductividad_80 |
393 | Electroconductividad_110 |