Tuto Knime : Comment générer des adresses IP et les distribuer sur une carte Open Street Map

Knime Tutoriel

En suivant pas-à-pas ce tutoriel sur Knime Analytics Platform, vous saurez générer aléatoirement des adresses IP et les distribuer sur une carte Open Street Map selon la densité de machines localisées à une adresse IP par pays à l’aide des coordonnées des adresses IP.

#1. Génération aléatoire d’adresses IP

Afin que le workflow soit bien organisé, il est conseillé de commenter les différentes boîtes utilisées et d’encapsuler chaque partie du workflow à l’exception de la branche principale.

 

Knime
Figure 1 : Workflow de génération aléatoire des adresses IP

 

  1. Créez une table vide de 10 000 lignes à l’aide de la boîte Empty Table Creator sans sauter de ligne.
  2. Puis remplissez la table vide avec quatre boîtes Random Number Assigner (Apache).

Une adresse IP contient quatre valeurs de 0 à 255 séparées par un point « . », il vous faut donc créer quatre colonnes que l’on appellera IP[0], IP[1], IP[2] et IP[3] avec pour configuration :

  • Value 1 = 0,0
  • Value 2 = 255,0
  1. Afin de définir le nombre d’IP présentes, ajoutez deux boîtes Random Number Assigner (Apache). Appelez les deux colonnes count[0] et count[1].
  • Définissez de manière arbitraire la première avec Value 1 = 0,0 et Value 2 = 11,0
  • De la même manière pour la seconde avec Value 1 = 0,0 et Value 2 = 4,0
  1. Les valeurs d’une adresse IP ainsi que le nombre d’adresses IP sont entières. Utilisez la boîte Double to Int et placer dans la zone Include l’ensemble des colonnes créées afin de les transformer en entier.

Attention, chaque valeur d’une adresse IP ne peut excéder la valeur 255. Afin de ne pas avoir de problème avec les valeurs du type « 255,xx », prenez bien soin d’arrondir vers le bas en sélectionnant dans la configuration Rounding type = floor.

  1. Maintenant que vos données de bases sont disponibles, procédez à la définition finale des données nécessaires :
  • Les adresses IP complètes :
    • Utilisez une boîte Colum Aggregator et placez les colonnes IP[0] à IP[3] dans la zone Aggregation column(s)
    • Dans Options, choisissez la concaténation et nommez la nouvelle colonne ip-addr et définissez le délimiteur par un point (.)
  • Le nombre de machines localisées à une adresse IP pour mesurer et afficher leur densité dans une zone :
    • Utilisez une boîte Math Formula afin d’exécuter la formule suivante :

                  pow($count[0]$, $count[1]$)

                  Elle permet de calculer la colonne count[0] puissance count[1]

  • Nommez la colonne count.
  1. Une deuxième boîte Math Formula doit être utilisée afin de convertir les adresses IP en nombre pour, plus tard, faire le lien avec la table de géolocalisation.
  2. Pour ce faire, il faut créer une nouvelle colonne ip-number et entrer la formule suivante :

($IP[0]$ * 16777216) + ($IP[1]$ * 65536) + ($IP[2]$ * 256) + $IP[3]$

Rappelons pour bien comprendre que chaque valeur d’une adresse IP ne peut excéder 255.

Prenons par exemple l’adresse 192.168.1.255. L’adresse suivante n’est pas 192.168.1.256 (qui ne peut pas exister), mais 192.168.2.0

Ainsi, chaque champ IP[x] est multiplié par une puissance de 256 pour obtenir un nombre entier qui sera ensuite comparé aux données de géolocalisation.

  1. Enfin, utilisez une boîte Culomn Filter afin de ne gardez que les colonnes qui nous intéressent : ip-addr, count et ip-number.

Pensez à encapsuler cette branche : sélectionnez l’ensemble des boîtes, réalisez un clic droit et choisissez Collapse into Metanode.

#2. Données de géolocalisation

Knime
Figure 2 : Wokflow de récupération des données géographiques

Ici, vous allez récupérer les deux fichiers csv fournis afin de pouvoir cartographier les adresses IP avec des données géographiques.

  1. Utilisez une première fois la boîte CSV Reader afin de récupérer et lire le fichier GeoLiteCity-Blocks.csv. Ce fichier contient la correspondance des plages d’adressage IP avec un idLoc.
  • Délimiteur de colonne : virgule (,)
  • Délimiteur de ligne : \n (saut de ligne)
  • Caractère récupérateur d’apostrophe :  » (double quote)
  • Caractère récupérateur de commentaire : # (dièse)
  • Le fichier csv contient un en-tête de colonne et un en-tête de ligne
  • L’encodage est défini sur par défaut
  1. Utilisez une seconde fois la boîte CSV Reader afin de récupérer et lire le fichier GeoLiteCity-Location.csv. Ce fichier contient la correspondance des informations géographiques (country, longitude et latitude) avec un idLoc.
  • Les paramétrages sont les mêmes que la boîte précédente
  1. Joignez maintenant les deux fichiers afin de faire correspondre les informations géographiques et les plages d’adressage IP. Utilisez une boîte Joiner afin de faire une jointure interne entre les deux fichiers :
  • Clé : idLoc
  • Colonnes de la table de gauche à garder : StartIpNum, EndIpNum
  • Colonnes de la table de droite à garder : city, latitude et longitude.
  1. Avec la jointure précédente, la colonne RowID contient une concaténation les deux valeurs Row ID des deux tables. Utilisez une boîte Row ID afin d’obtenir une colonne avec un unique Row ID :
  • Dans Replace RowID, sélectionner Replace RowID with selected column values or create a new one et préciser pour New RowID column <none>
  • Dans Append RowID column, sélectionnez Create new column with the RowID values et nommer la nouvelle colonne rowID

Pensez à encapsuler cette branche : sélectionnez l’ensemble des boîtes, réalisez un clic droit et choisissez Collapse into Metanode.

#3. Finalisation du set de données

 

Knime
Figure 3 : Workflow de finalisation du set de données

 

Désormais, vous êtes en possession des adresses IP et des données permettant de géo-localiser des plages d’adresses IP. Il faut maintenant catégoriser les adresses IP générées aléatoirement avec les données de géolocalisation.

  1. La boîte Binner (Dictionnary) permet de catégoriser les valeurs d’une colonne à l’aide d’une table dictionnaire contenant des valeurs maximum et minimum. La table en première entrée contient les valeurs à catégoriser, la seconde contient trois colonnes contenant les valeurs minimum et maximum de l’intervalle et le libellé de chaque valeur. Cette dernière sera utilisée en sortie dans le cas où une valeur est comprise entre la borne inférieure et supérieure.

Définissez la boîte comme suit :

  • Value Column to bin : ip-number
  • Lower Bound Column (Inclusive) : startIp Num
  • Upper Bound Column (Inclusive) : endIpNum
  • Label Column : rowID
  • If norule mathces : Insert Missing
  • Search pattern : Binary
  1. Réalisez maintenant une jointure interne entre la sortie de la boîte précédente et les données de géolocalisation afin de joindre les données géographiques avec la sortie de la boîte précédente :
  • Clé : rowID
  • Colonnes de la table de gauche à garder : ip-addr et count
  • Colonnes de la table de droite à garder : city, latitude et longitude

Vous avez désormais votre set de données final.

#4. Conception et apparence sur la carte

Knime
Figure 4 : Workflow de conception visuelle

 

  1. Ajoutez une boîte Constant Value Column afin de rajouter une colonne shape-helper dont la valeur est une chaîne de caractère « allRedCircle ».
  2. Ajoutez une boîte Domain Calculator :
  • Dans Possible Values inclure toutes les colonnes
  • Dans Min & Max Values inclure toutes les colonnes
  1. Passons maintenant à la conception visuelle en ajoutant à la suite les boîtes Size ManagerShape Manager et Color Manager. Configurez les boîtes comme suit :
  • Size Manager : de manière à ce que la taille du repère dépende de la colonne count avec un facteur d’échelle de 3,0 selon une méthode de cartographie linéaire

Ainsi, plus la valeur de count est élevée, c’est-à-dire que le nombre de machines localisées à une adresse IP est grand, plus la taille du repère sera importante

  • Shape Manager : de manière à ce que la valeur de la colonne shape-helper corresponde à un cercle

Ainsi, le repère sur la carte sera de la forme d’un cercle, puisqu’il n’y a qu’une seule valeur possible dans shape-helper

  • Color Manager : de manière à ce que la valeur de la colonne shape-helper soit colorée en rouge

Il n’y aura que des repères de couleur rouge puisqu’il n’y a qu’une seule valeur dans la colonne shape-helper

Pensez à encapsuler cette branche : sélectionnez l’ensemble des boîtes, réalisez un clic droit et choisissez Collapse into Metanode.

#5. Visualisation du résultat

Knime
Figure 5 : Workflow de visualisation du résultat sur une carte

Vous êtes fin prêts à visualiser le résultat de votre workflow :

  1. Ajouter en parallèle une boîte OSM Map View et une OSM Map to Image
  2. Exécuter l’ensemble de votre workflow et afficher les résultats :
  • Pour la première boîte, effectuez un clic droit et sélectionnez View : Open Street Map
  • Pour la seconde, effectuez un clic droit et sélectionnez Map Image

Il est possible de modifier le fond de carte à afficher, grâce au menu déroulant en tête de fenêtre pour le premier cas et grâce au menu déroulant en bas de la fenêtre de configuration de la boîte, dans le second cas.

Bing_Knime
BING
Cycle_Map_Knime
CYCLE MAP
Google_Knime
GOOGLE

 

TADAAAA !! 🙂

 

#6. Conclusion

Vous êtes maintenant des pros de la manipulation de la géolocalisation d’adresses IP et de leur cartographie !

Pour en apprendre bien plus et trouver des ressources pour vous aider à préparer et à analyser les données, consultez nos autres tutoriels et astuces. 

N’hésitez pas à poser vos questions dans les commentaires et partagez cet article tout autour de vous !

Knime

Author Profile

Sylvana AH-LAYE
Sylvana AH-LAYE
Hello ! Passionnée du marketing digital, je travaille quotidiennement avec les différents services de Mydral. Retrouvez dans mes publications du contenu sur le secteur du Big Data, de la BI et de l'IA. Le SEO ou l'e-réputation n'ont pas de secrets pour moi !

Laissez un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.