Llengües

Catàleg de sòl industrial i centres dempreses de la província de Sevilla

Catàleg
Cliente 
Diputación de Sevilla

Aquesta vegada presentem un projecte de modernització del catàleg de sòl industrial i centres d'empresa que des de fa anys porta mantenint Prodetur, societat instrumental de la Diputació de Sevilla.

Els principals reptes que va plantejar aquest projecte van ser: la migració de les dades des de la plataforma anterior, la integració amb la plataforma de mapes de Google i els ajustaments necessaris perquè aquests últims, de manera eficient, mostressin els prop de 30.000 espais i centres d'empresa.

Migració des de Drupal 7

El sistema anterior havia estat desenvolupat a Drupal 7, així que una de les tasques més importants era mantenir les dades catalogades al nou sistema.

Per al desenvolupament d'aquesta migració utilitzem tant els mòduls de migracions inclosos al nucli de Drupal com altres contribuïts per la comunitat i petits afegits desenvolupats a mida.

El sistema de migracions de Drupal permet definir-les com a fitxers de text on es descriu, per a cadascuna: quin és el seu origen, com es processen les seves dades i quin és el seu destí. Aquestes migracions es poden, una vegada definides, executar (totalment o parcialment). Això permet comprovar que els continguts s'han migrat correctament. També permet revertir les importacions, esborrant tot el contingut creat. Així, es redueixen els cicles de feedback i s'accelera el que altrament és un procediment llarg i tediós.

A més, el sistema és extensible utilitzant plugins: de Drupal, cosa que permet adaptar cada migració a les necessitats específiques de cada projecte. Per exemple, en aquest projecte, cada empresa (de les quals se'n van migrar prop de 9.000) defineix la seva activitat amb un codi CNAE (una classificació estàndard d'activitats econòmiques a Espanya). Els codis CNAE són fins a vuit dígits i s'organitzen en arbre. Així, les activitats amb més dígits defineixen més concretament lactivitat realitzada. Per millorar la utilitat del lloc, es va decidir reduir els dígits dels codis emmagatzemats, permetent així fer cerques més senzilles. Això es va desenvolupar amb un petit plugin que va processar els valors CNAE durant la migració.

Integració amb Google Maps

El nucli de la plataforma són els mapes que mostren la localització de cadascun dels elements catalogats.

Després de diversos prototips, es va optar per utilitzar una integració basada en els mòduls contribuïts per a l'edició dels continguts i una solució headless per a la part pública del lloc.

El mòdul contribuït utilitzat, Geofield, amplia el sistema afegint un tipus de camp per emmagatzemar coordenades (tant simples com múltiples en format GeoJSON o KML) i de diferents elements de formulari, com un cercador que s'integra amb Google Places o un mapa on és possible fer clic a la localització exacta.

La part pública del lloc s'enfrontava amb el repte de mostrar fins a gairebé 30.000 elements alhora. Per això es va optar per una solució headless, on Drupal genera serveis web que després el codi JavaScript del navegador de l'usuari descarrega, mostra i filtra de forma eficient, com expliquem al punt següent.

Configuració de rendiment

Mostrar prop de 30.000 elements a una mateixa pàgina és tot un repte. Drupal pot generar serveis web de forma eficient, disposa d'una immillorable capa de memòria cau per això, però 30.000 elements són massa. Els llistats convencionals, on els elements es mostren un darrere l'altre, utilitzen paginadors, però aquesta opció, en un mapa, no és viable.

La primera decisió sobre això va ser la de separar la generació del mapa de la generació dels elements que mostra. Això ens permet crear una pàgina estàtica que els usuaris descarreguen sense haver d'esperar i que s'encarrega de descarregar la informació de cadascun dels elements a mostrar.

També, per millorar el temps de descàrrega d'aquests elements, es va utilitzar el mòdul Search API per generar un índex amb la informació preparada per consumir-lo. Drupal, en generar els llistats, carrega cadascun dels elements en memòria, executa tot el seu cicle de càrrega en aquest moment i eleva els temps de generació dels llistats a minuts. Seach API, en canvi, permet declarar quines dades s'explotaran i les prepara en el moment en què s'insereixen o s'actualitzen nous continguts perquè generar els llistats sigui molt més ràpid.

Del costat del navegador, al codi JavaScript, també es van realitzar algunes optimitzacions.

Aprofitant la paginació disponible als llistats de Drupal, es descarreguen les dades en conjunts de 2.500 elements. Totes les peticions es fan en paral·lel, permetent així que sigui el navegador qui les gestioni a les cues de descàrrega. Depenent del navegador, s'ha observat que es descarreguen, paral·lelament, fins a sis d'aquestes pàgines.

S'implementà l'agrupació de punts. Aquesta funcionalitat, anomenada clustering, agrupa automàticament els punts segons la seva distància, creant marcadors que fan zoom en els punts continguts en fer clic.

S'afegeixen al mapa, a cada moment, només els punts visibles. Cada cop que l'usuari mou el mapa, desplaçant-s'hi o fent zoom, es revisen els punts visibles, afegint o eliminant els marcadors que sigui necessari. Això en millora la fluïdesa i en fa viable l'ús.

T'interessen els nostres serveis?

 

Atenea tech

Pl. Can Suris s/n, Citilab
08940 Cornellà de Llobregat (Barcelona)
+34 634 521 733
hola@ateneatech.com
Teléfono: 
Correo electrónico