Closed julien66 closed 11 years ago
Qu'entends tu par "en node" ?
Une node est un contenu que l'on peut publier sur Drupal. On peut y attacher un certain nombre de "champs" : Dans notre cas nom, classe, plancher, plafond, coordonnés... pour commencer et de façon non exhaustif.
L'avantage c'est qu'il existe une riche api pour manipuler des "nodes" . Par exemple on peut effectuer des opérations au moment où le node est en train d'être changé par l'utilisateur ou lorsqu'il est effectivement changé (envoyer un mail, mouliner une zone en 3D... faire des trucs en réponse à un déclencheur) etc.
On peut aussi utiliser le système de révision de Drupal. Les utilisateurs peuvent proposer des modifications qui peuvent par la suite devenir "officielle". On peut regarder les différences entre toutes versions d'un même node, en suivre l'historique etc.
Depuis le module, j'ai crée un node de type "zone". Je suis en train de lui attacher les champs qui vont bien. La prochaine étape est de migrer chaque zone de la base de donnée actuelle dans un node de type zone. => On aura nos entités de départ pour attaquer les modifications / création en ligne et à plusieurs. ++
J'ai essayé de mouliner directement les fichiers .pdf du SIA. Ils sont cryptés...
On 05/28/2013 08:01 PM, Julien Garcia wrote:
J'ai essayé de mouliner directement les fichiers .pdf du SIA. Ils sont cryptés...
Crypté ?! Si un lecteur pdf affiche le texte, alors c'est faisable. Tu as essayé quels outils ?
J'ai essayé pdf2text avec le code suivant :
include_once("pdf2text.php"); // Real import from SIA pdf files.
$result = pdf2text ('https://www.sia.aviation-civile.gouv.fr/aip/enligne/fr/..%5CPDF_AIPparSSection%5CAIP%20FRANCE%5CAD%5C1%5C1306_AD-1.7.pdf');
dsm($result);
et le résultat suivant :
Si l'on pouvait au moins attraper le contenu de ces fichiers pdf nous pourrions construire une nouvelle moulinette à partir du format bizarre qui est utilisé et avoir accès aux données officielles.
En attendant, je fais l'import de POSTGIS en node Drupal avec un batch :
function airspace_drupal_migration(){
$num_operations = db_query("SELECT count(gid) FROM {airspaces}")->fetchField();
$operations = array();
for ($i = 0; $i<$num_operations; $i++) {
$operations[] = array('batch_airspace_to_drupal', array($i) );
}
$batch = array(
'operations' => $operations,
'finished' => 'batch_airspace_drupal_finished',
);
batch_set($batch);
batch_process("/");
return $batch;
}
function batch_airspace_to_drupal($op, &$context){
// La migration $op par $op !
$query = db_query("SELECT *, ST_AsText(the_geom) as WKT FROM {airspaces} WHERE gid=:gid", array(':gid' => $op ))->fetchAll();
if (!isset($query[0]) || !isset($query[0]->plafond) || !isset($query[0]->plancher) ){
return("Mauvaise requête");
watchdog('Airspace migration to drupal', "Aucun espace ne correspond a cet identifiant %id", array('%id'=>$op) , "WATCHDOG_ERROR");
}
$context['results'][] = $query[0]->gid;
$context['message'] = t('Traitement de la zone "@id"', array('@id' => $query[0]->gid));
$node = new stdClass();
$node->type = 'espace_aerien';
$node->language = 'und';
node_object_prepare($node);
$node->title = $query[0]->name;
$node->field_classe[$node->language][0]['value'] = $query[0]->class;
$node->field_plancher[$node->language][0]['value'] = $query[0]->floor;
$node->field_plafond[$node->language][0]['value'] = $query[0]->ceiling;
$node->field_coords[$node->language][0]['value'] = $query[0]->wkt;
node_save($node);
}
Cela fonctionne.
On 05/28/2013 08:24 PM, Julien Garcia wrote:
J'ai essayé pdf2text avec le code suivant :
include_once("pdf2text.php"); // Real import from SIA pdf files. $result = pdf2text ('https://www.sia.aviation-civile.gouv.fr/aip/enligne/fr/..%5CPDF_AIPparSSection%5CAIP%20FRANCE%5CAD%5C1%5C1306_AD-1.7.pdf'); dsm($result);
et le résultat suivant : sia https://f.cloud.github.com/assets/3198861/574214/c174d49e-c7c3-11e2-8484-67ae19fdb8c6.jpg
j'arrive à obtenir le texte, mais toute la mise en page (en donc les tableaux) passe à la trappe. pdf2txt (python-pdfminer) a une sortie xml qui pourrait permettre de récupérer un peu de structuration, mais ça semble pas évident. Sans doute laborieux et pas très robuste.
Merci pour avoir regardé !
La plateform de crowdsourcing des espaces aériens est maintenant à peu près en place. Au final, j'utilise le module Workbench de Drupal.
Une première erreur a été détecté sur le fichier FFVV. TMA 6.1 de Provence classée D au lieu de E. ( Merci Sylvélie ! ). Nous pourrions entretenir le fichier via des méthodes de Crowdsourcing. Le projet servirait aussi de base à l'issue #7.
Le plan est de passer les zones en node puis d'utiliser le module de révision de Drupal. A suivre.