Changeset 644582b in observatorio
- Timestamp:
- Aug 14, 2014, 5:27:11 PM (10 years ago)
- Branches:
- master
- Children:
- ce62ea6
- Parents:
- 75c8054
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
procesos/apps/geocadena/views.py
r7c9f979 r644582b 11 11 12 12 ## Muestra el autor del script cuando es invocado 13 from django.http import HttpResponse 14 13 15 __author__ = 'Ing. Roldan D. Vargas G. (rvargas@cenditel.gob.ve)' 14 16 ## Muestra una descripción breve del script … … 19 21 from django.template.context import RequestContext 20 22 from django.conf import settings 23 from django.db.models.loading import get_model 21 24 from pygraphviz import AGraph 25 from djgeojson.serializers import Serializer as GeoJSONSerializer 22 26 23 27 from sigesic.unidadecon.identifica.models import Unidad_Economica … … 179 183 en el mapa 180 184 """ 181 grafo = AGraph(settings.PATH + "/tmp/" + usuario + ".dot")182 185 cadena = [] 183 186 184 nodos = [n for n in grafo.nodes_iter() if n.attr['label'][0] == 'J'] 185 186 for c in nodos: 187 nivel = "" 188 rif = grafo.get_node(c).attr['label'][0:10] 189 ue = getUE(rif) 190 191 icono = '' 192 193 if ue: 194 if grafo.get_node(c).attr['color'] == 'darkgreen': 195 icono = '/sig/mapmedia/imgs/markers/mark_center.png' 196 #icono = 'http://www.openlayers.org/dev/img/marker-green.png' 197 nivel = "C" 198 elif grafo.get_node(c).attr['color'] == 'yellow': 199 icono = '/sig/mapmedia/imgs/markers/mark_down.png' 200 #icono = 'http://www.openlayers.org/dev/img/marker-gold.png' 201 nivel = "A" 202 elif grafo.get_node(c).attr['color'] == 'dodgerblue': 203 icono = '/sig/mapmedia/imgs/markers/mark_up.png' 204 #icono = 'http://www.openlayers.org/dev/img/marker-blue.png' 205 nivel = "P" 206 207 nombre = '' 208 detalles = '' 209 dir = '' 210 try: 211 if ue.nombre is not None: 212 nombre = ue.nombre 213 else: 214 nombre = ue.razon_social 215 187 try: 188 grafo = AGraph(settings.PATH + "/tmp/" + usuario + ".dot") 189 190 nodos = [n for n in grafo.nodes_iter() if n.attr['label'][0] == 'J'] 191 192 for c in nodos: 193 nivel = "" 194 rif = grafo.get_node(c).attr['label'][0:10] 195 ue = getUE(rif) 196 197 icono = '' 198 199 if ue: 200 if grafo.get_node(c).attr['color'] == 'darkgreen': 201 icono = '/sig/mapmedia/imgs/markers/mark_center.png' 202 #icono = 'http://www.openlayers.org/dev/img/marker-green.png' 203 nivel = "C" 204 elif grafo.get_node(c).attr['color'] == 'yellow': 205 icono = '/sig/mapmedia/imgs/markers/mark_down.png' 206 #icono = 'http://www.openlayers.org/dev/img/marker-gold.png' 207 nivel = "A" 208 elif grafo.get_node(c).attr['color'] == 'dodgerblue': 209 icono = '/sig/mapmedia/imgs/markers/mark_up.png' 210 #icono = 'http://www.openlayers.org/dev/img/marker-blue.png' 211 nivel = "P" 212 213 nombre = '' 214 detalles = '' 215 dir = '' 216 216 try: 217 if not ue.ciudad is None: 218 detalles += 'Ciudad: %s<br>' % ue.ciudad 219 if not ue.dir1 is None: 220 dir += "%s. " % ue.dir1 221 if not ue.dir2 is None: 222 dir += "%s. " % ue.dir2 223 if not ue.dir3 is None: 224 dir += "%s. " % ue.dir3 225 if not ue.dir4 is None: 226 dir += "%s. " % ue.dir4 217 if ue.nombre is not None: 218 nombre = ue.nombre 219 else: 220 nombre = ue.razon_social 221 222 try: 223 if not ue.ciudad is None: 224 detalles += 'Ciudad: %s<br>' % ue.ciudad 225 if not ue.dir1 is None: 226 dir += "%s. " % ue.dir1 227 if not ue.dir2 is None: 228 dir += "%s. " % ue.dir2 229 if not ue.dir3 is None: 230 dir += "%s. " % ue.dir3 231 if not ue.dir4 is None: 232 dir += "%s. " % ue.dir4 233 except AttributeError: 234 dir += ue.direccion 235 227 236 except AttributeError: 237 try: 238 nombre = ue.nombreestablecimiento 239 except AttributeError: 240 nombre = ue.nombre_comercial 228 241 dir += ue.direccion 229 242 230 except AttributeError: 243 if dir.__len__() > 11: 244 detalles = dir 245 246 coordxy = getCoordenadas(ue) 247 231 248 try: 232 nombre = ue.nombreestablecimiento 249 estado = ue.parroquia.municipio.entidad 250 municipio = ue.parroquia.municipio 251 parroquia = ue.parroquia 233 252 except AttributeError: 234 nombre = ue.nombre_comercial 235 dir += ue.direccion 236 237 if dir.__len__() > 11: 238 detalles = dir 239 240 coordxy = getCoordenadas(ue) 241 242 try: 243 estado = ue.parroquia.municipio.entidad 244 municipio = ue.parroquia.municipio 245 parroquia = ue.parroquia 246 except AttributeError: 247 estado = '' 248 municipio = '' 249 parroquia = '' 250 251 produce = "" 252 consume = "" 253 conn = [g for g in grafo.edges() if c in g] 254 # Verifica la producción e insumos de las Unidades Económicas 255 for cx in conn: 256 if cx[0] == c and cx[1].attr['label'][0] != "J" and cx[1].attr['label'].split("\\n")[1] != "": 257 produce += "<li>%s</li>" % cx[1].attr['label'].split("\\n")[1] 258 elif cx[1] == c and cx[0].attr['label'][0] != "J" and cx[0].attr['label'].split("\\n")[1] != "": 259 consume += "<li>%s</li>" % cx[0].attr['label'].split("\\n")[1] 260 261 if produce != "": 262 produce = "<ul style='list-style-type: circle;'>%s</ul>" % produce 263 if consume != "": 264 consume = "<ul style='list-style-type: circle;'>%s</ul>" % consume 265 266 if coordxy: 267 cadena.append({'lon': coordxy[0], 268 'lat': coordxy[1], 269 'icono': icono, 270 'uerif': grafo.get_node(c).attr['label'][0:10], 271 'uenombre': nombre, 272 'uedetalles': detalles, 273 'ueproduce': produce, 274 'ueconsume': consume, 275 'ueedo': estado, 276 'uemun': municipio, 277 'ueparr': parroquia, 278 'nivel': nivel}) 253 estado = '' 254 municipio = '' 255 parroquia = '' 256 257 produce = "" 258 consume = "" 259 conn = [g for g in grafo.edges() if c in g] 260 # Verifica la producción e insumos de las Unidades Económicas 261 for cx in conn: 262 if cx[0] == c and cx[1].attr['label'][0] != "J" and cx[1].attr['label'].split("\\n")[1] != "": 263 produce += "<li>%s</li>" % cx[1].attr['label'].split("\\n")[1] 264 elif cx[1] == c and cx[0].attr['label'][0] != "J" and cx[0].attr['label'].split("\\n")[1] != "": 265 consume += "<li>%s</li>" % cx[0].attr['label'].split("\\n")[1] 266 267 if produce != "": 268 produce = "<ul style='list-style-type: circle;'>%s</ul>" % produce 269 if consume != "": 270 consume = "<ul style='list-style-type: circle;'>%s</ul>" % consume 271 272 if coordxy: 273 cadena.append({'lon': coordxy[0], 274 'lat': coordxy[1], 275 'icono': icono, 276 'uerif': grafo.get_node(c).attr['label'][0:10], 277 'uenombre': nombre, 278 'uedetalles': detalles, 279 'ueproduce': produce, 280 'ueconsume': consume, 281 'ueedo': estado, 282 'uemun': municipio, 283 'ueparr': parroquia, 284 'nivel': nivel}) 285 except Exception, e: 286 pass 279 287 280 288 return cadena … … 294 302 @return Un diccionario con los puntos de enlace entrea las distintas Unidades Económicas a conectar 295 303 """ 296 grafo = AGraph(settings.PATH + "/tmp/" + usuario + ".dot")297 304 enlace = [] 298 nodos = [0] 299 P = True 300 U = {} 301 302 while P: 303 sP = [] 304 subNodos = [] 305 for n in nodos: 306 nodosRel = [] 307 P = grafo.predecessors(n) 308 for pred in P: 309 if grafo.get_node(pred).attr['shape'] == "box" and grafo.predecessors(pred): 310 for i in grafo.predecessors(pred): 311 if grafo.get_node(i).attr["shape"] != "ellipse": 312 nodosRel.append(i) 313 subNodos.append(i) 314 if nodosRel: 315 U[n] = nodosRel 316 317 for x in U: 318 for y in U[x]: 319 sP.append(y) 320 nodos = sP 321 if nodos is None: 322 P = [] 323 324 for x in U: 325 rif_ini = grafo.get_node(x).attr['label'][:10] 326 ue_ini = getUE(rif_ini) 327 if ue_ini: 328 coordxy_ini = getCoordenadas(ue_ini) 329 330 for y in U[x]: 331 rif_fin = grafo.get_node(y).attr['label'][:10] 332 ue_fin = getUE(rif_fin) 333 if ue_fin: 334 coordxy_fin = getCoordenadas(ue_fin) 335 if not coordxy_fin: 336 print ue_fin.rif 337 338 enlace.append({ 339 'ini_x': coordxy_ini[0], 340 'ini_y': coordxy_ini[1], 341 'fin_x': coordxy_fin[0], 342 'fin_y': coordxy_fin[1], 343 'nivel': 'up', 344 'capa': str(rif_ini) + " - " + str(rif_fin), 345 }) 346 347 nodos = [0] 348 S = True 349 U = {} 350 351 while S: 352 sS = [] 353 subNodos = [] 354 for n in nodos: 355 nodosRel = [] 356 S = grafo.successors(n) 357 for suc in S: 358 if grafo.get_node(suc).attr['shape'] == "box" and grafo.successors(suc): 359 for i in grafo.successors(suc): 360 if grafo.get_node(i).attr["shape"] != "ellipse": 361 nodosRel.append(i) 362 subNodos.append(i) 363 if nodosRel: 364 U[n] = nodosRel 365 366 for x in U: 367 for y in U[x]: 368 sS.append(y) 369 nodos = sS 370 if nodos is None: 371 S = [] 372 373 for x in U: 374 rif_ini = grafo.get_node(x).attr['label'][:10] 375 ue_ini = getUE(rif_ini) 376 if ue_ini: 377 coordxy_ini = getCoordenadas(ue_ini) 378 379 for y in U[x]: 380 rif_fin = grafo.get_node(y).attr['label'][:10] 381 ue_fin = getUE(rif_fin) 382 if ue_fin: 383 coordxy_fin = getCoordenadas(ue_fin) 384 enlace.append({ 385 'ini_x': coordxy_ini[0], 386 'ini_y': coordxy_ini[1], 387 'fin_x': coordxy_fin[0], 388 'fin_y': coordxy_fin[1], 389 'nivel': 'down', 390 'capa': str(rif_ini) + " - " + str(rif_fin), 391 }) 305 306 if getNodos(usuario): 307 try: 308 grafo = AGraph(settings.PATH + "/tmp/" + usuario + ".dot") 309 310 nodos = [0] 311 P = True 312 U = {} 313 314 while P: 315 sP = [] 316 subNodos = [] 317 for n in nodos: 318 nodosRel = [] 319 P = grafo.predecessors(n) 320 for pred in P: 321 if grafo.get_node(pred).attr['shape'] == "box" and grafo.predecessors(pred): 322 for i in grafo.predecessors(pred): 323 if grafo.get_node(i).attr["shape"] != "ellipse": 324 nodosRel.append(i) 325 subNodos.append(i) 326 if nodosRel: 327 U[n] = nodosRel 328 329 for x in U: 330 for y in U[x]: 331 sP.append(y) 332 nodos = sP 333 if nodos is None: 334 P = [] 335 336 for x in U: 337 rif_ini = grafo.get_node(x).attr['label'][:10] 338 ue_ini = getUE(rif_ini) 339 if ue_ini: 340 coordxy_ini = getCoordenadas(ue_ini) 341 342 for y in U[x]: 343 rif_fin = grafo.get_node(y).attr['label'][:10] 344 ue_fin = getUE(rif_fin) 345 if ue_fin: 346 coordxy_fin = getCoordenadas(ue_fin) 347 if not coordxy_fin: 348 print ue_fin.rif 349 350 enlace.append({ 351 'ini_x': coordxy_ini[0], 352 'ini_y': coordxy_ini[1], 353 'fin_x': coordxy_fin[0], 354 'fin_y': coordxy_fin[1], 355 'nivel': 'up', 356 'capa': str(rif_ini) + " - " + str(rif_fin), 357 }) 358 359 nodos = [0] 360 S = True 361 U = {} 362 363 while S: 364 sS = [] 365 subNodos = [] 366 for n in nodos: 367 nodosRel = [] 368 S = grafo.successors(n) 369 for suc in S: 370 if grafo.get_node(suc).attr['shape'] == "box" and grafo.successors(suc): 371 for i in grafo.successors(suc): 372 if grafo.get_node(i).attr["shape"] != "ellipse": 373 nodosRel.append(i) 374 subNodos.append(i) 375 if nodosRel: 376 U[n] = nodosRel 377 378 for x in U: 379 for y in U[x]: 380 sS.append(y) 381 nodos = sS 382 if nodos is None: 383 S = [] 384 385 for x in U: 386 rif_ini = grafo.get_node(x).attr['label'][:10] 387 ue_ini = getUE(rif_ini) 388 if ue_ini: 389 coordxy_ini = getCoordenadas(ue_ini) 390 391 for y in U[x]: 392 rif_fin = grafo.get_node(y).attr['label'][:10] 393 ue_fin = getUE(rif_fin) 394 if ue_fin: 395 coordxy_fin = getCoordenadas(ue_fin) 396 enlace.append({ 397 'ini_x': coordxy_ini[0], 398 'ini_y': coordxy_ini[1], 399 'fin_x': coordxy_fin[0], 400 'fin_y': coordxy_fin[1], 401 'nivel': 'down', 402 'capa': str(rif_ini) + " - " + str(rif_fin), 403 }) 404 except Exception, e: 405 pass 392 406 393 407 return enlace 394 408 395 409 396 @login_required 410 @login_required() 397 411 def geoCadena(request): 398 412 """! … … 411 425 'debug': settings.DEBUG}, 412 426 context_instance=RequestContext(request)) 427 428 429 @login_required() 430 def json(request): 431 capa = request.GET.get('capa', None) 432 field = request.GET.get('field', None) 433 cod = request.GET.get('cod', None) 434 435 if capa and field: 436 tabla = get_model('geocadena', capa) 437 qs = tabla.objects.all() 438 if cod: 439 qs = tabla.objects.filter(pk=cod) 440 441 return HttpResponse(str(GeoJSONSerializer().serialize(qs, use_natural_keys=True, 442 properties={'field_name': field})), 443 content_type="text/plain") 444 445 return HttpResponse(content_type='text/plain')
Note: See TracChangeset
for help on using the changeset viewer.