archeoViz
est une
application dédiée à l’archéologie. Elle permet de visualiser,
d’explorer interactivement, et d’exposer et
communiquer rapidement sur le web des données archéologiques
spatialisées. Elle propose des visualisations en 3D et 2D,
génère des coupes et des cartes du mobilier
archéologique, permet de visualiser la chronologie des travaux
sur un site. Il est possible d’y réaliser des statistiques
spatiales simples (enveloppes convexes, surfaces de régression,
estimation de densité par noyau en 2D) ainsi que d’exporter des
données vers d’autres applications en ligne pour appliquer des
méthodes plus complexes. archeoViz
peut être utilisée
localement ou déployée sur un serveur, soit en chargeant des données via
l’interface, soit en lançant l’application avec un jeu de donnée
spécifique. L’interface est disponible en allemand, anglais, italien,
français, portugais et roumain. Page web: https://archeoviz.hypotheses.org.
archeoViz
peut être employée de deux manières:
Le package peut être installé depuis le CRAN:
La version de développement peut être téléchargée depuis GitHub:
Après quoi, chargez le package et lancez l’application avec:
Pour déployer archeoViz
sur votre Shiny server,
téléchargez premièrement le package:
# déterminez le répertoire de travail dans votre shiny server:
setwd(dir = "/some/path/")
# téléchargez le package:
download.file(url = "https://github.com/sebastien-plutniak/archeoviz/archive/master.zip",
destfile = "archeoviz.zip")
# décompression:
unzip(zipfile = "archeoviz.zip")
Puis, rendez-vous à
https://<your-shiny-server>/archeoviz-main
.
Pour paramétrer l’application avec vos données et préférences, éditez
le fichier app.R
situé à la racine du répertoire de
l’application:
archeoViz(objects.df = NULL, # data.frame pour les objets
refits.df = NULL, # data.frame optionnel pour les remontages
timeline.df = NULL, # data.frame optionnel pour la chronologie des fouilles
default.group =NULL, # méthode de groupement des données,
# par couche ("by.layer") ou "by.variable"
title = NULL, # titre du site / du jeu de données
home.text = NULL, # contenu HTML à afficher sur la page d'accueil
lang = "fr" # langue de l'interface ("de": Allemand, "en": Anglais, "fr": Français, "it": Italien "pt": Portugais, "es": Espagnol)
set.theme = "cosmo") # thème graphique de l'interface Shiny
Les valeurs possibles pour le paramètre set.theme
sont
illustrées sur cette
page. La langue de l’application peut être définie avec le paramètre
lang
.
Des instances de démonstration de l’application sont déployées sur le Shiny server d’Huma Num:
archeoViz
en français.archeoViz
en anglais.archeoViz
en allemand.archeoViz
en espagnol.archeoViz
en italien.archeoViz
en portugais.archeoViz
en roumain.Des cas d’applications à divers sites archéologiques sont rassemblés sur le Portail archeoViz.
Si vous rencontrez un bug, ouvrez une issue en indiquant tous les détails nécessaires pour le reproduire.
Les suggestions de modifications sont bienvenues. Les demandes peuvent concerner des fonctions additionnelles, des modifications dans la documentation, des exemples additionnels, de nouvelles fonctionnalités, etc. Elles peuvent être faites en ouvrant une issue ou, mieux encore, en employant une pull requests et le modèle GitHub Fork and Pull.
Un soin particulier est accordé au multilinguisme. L’interface de l’application est disponible en plusieurs langues et les traduction dans des langues supplémentaires sont bienvenues. Pour cela, éditez ce fichier et soumettez une pull request.
Considérant les objets archéologiques d’un site de fouille ou de
prospection, archeoViz
est conçu pour réduire les freins
techniques à la réalisation de trois objectifs:
En outre, archeoViz
constitue une ressource pédagogique
adaptée à l’enseignement des notions d’analyse spatiale en archéologie,
de structuration de données, de science ouverte et de
reproductibilité.
N.B.: par conséquent, archeoViz
n’est pas destiné à se
substituer à des outils d’analyse plus sophistiqués (e.g., SIG, packages
de statistiques spatiales, etc.)
Les archéologues enregistrent la localisation des objets archéologique à différentes échelles et granularité. En fonction de cela, ils utilisent différentes concepts géométriques pour représenter ces localisations.
L’utilisation d’un carroyage ou d’une “station totale” permet
d’enregistrer la localisation individuelle des objets sur le terrain.
Dans ce cas, dans archeoViz
, localisation de ces objets
sera visualisée par des points (des triplets de valeurs de coordonnées
x, y, z).
Toutefois, il est fréquent que les coordonnées x, y, z des objets ne soit pas disponible, pour différentes raisons:
Dans tous ces cas, les localisations à traiter sont vagues, lorsque la localisation des objets n’est pas connue univoquement mais se situe quelque part au sein d’intervalles de coordonnées. La localisation vague peut concerner une, deux, ou trois dimensions spatiales (respectivement les coordonnées x, y et z).
Cette fonctionnalité peut également être employée pour tenir compte de l’imprécision des instruments de relevé.
Les lignes sont des géométries utiles pour représenter des relations.
En archéologie, il peut s’agir de relations de remontages entre fragments d’objets,
d’orientation (mesures de fabrique),
etc. Dans archeoViz
, les lignes sont générées à partir des
données chargées comme données de remontage, soit à partir de l’onglet
“Données”, soit avec le paramètre refits.df
de la fonction
archeoViz()
.
Les surfaces sont des géométries utiles pour représenter des niveaux
de sol, des tranchées, des fosses, etc. Dans archeoViz
,
ceci peut être réalisé, en définissant un sous-ensemble de points
résumant la surface souhaitée, puis en affichant l’enveloppe convexe de ce
sous-ensemble.
Les remontages sont généralement enregistrés de deux manières par les archéologues:
Bien que la seconde structure de donnée soit plus précise, c’est la première qui est le plus fréquemment employée.
Ces deux structures de données sont traitées différemment dans
archeoViz
:
objects.df
table
(nommée par ex. object_refits
) et sont représentés par la
couleur des points dans les visualisations (comme pour tout autre
variable);refits.df
et sont visualisés par des segments reliant les
objets liés par des relations de remontage.Pour l’heure, archeoViz
ne gère pas les mesures de
fabrique à proprement dit. Néanmoins, la procédure employée pour
représenter les remontages peut être adaptée et employée pour
représenter les mesures de fabriques. Cela suppose toutefois de tordre
la logique de la structure des données de la manière suivante:
id
doivent être
attribuées aux deux points, etUn exemple de cette méthode est visible ici.
Trois types de données peuvent être chargées dans
archeoViz
:
Les tableaux doivent être au format CSV et la première ligne doit contenir les noms des variables (le symbole séparateur du CSV peut être défini dans l’interface). Les contenus au format HTML sont autorisés. Cela permet notamment d’introduire références vers des ressources complémentaires du jeu de données (par exemple l’identifiant unique de l’objets dans une autre base de données, ou ceux de concepts d’ontologies employés pour décrire l’objet, etc.).
Le formatage des données peut être réalisé :
archeoViz
(onglet
“Table” / “archeoViz exports”). Il est également possible de les
transférer directement à une instance archeoViz
en
ligne.Chaque ligne décrit un objet et doit comporter les variables obligatoires suivantes:
De plus, des variables optionnelles sont possibles:
Les labels des carrés du carroyage:
add.x.square.labels
et add.y.square.labels
de
la fonction archeoViz()
afin d’ajouter les labels manquants
(respectivement, sur les axes X et Y du carroyage).Un tableau à deux colonnes peut être chargé pour les remontages entre
objets (format CSV). Chaque ligne doit contenir les identifiants uniques
des deux objets liés à une relation de remontage (en correspondance avec
les valeurs de la colonne id
du tableau des objets).
Optionnellement, un tableau (CSV) peut être chargé à propos du déroulé de la fouille. Chaque ligne est relative à un carré de fouille et indique quand ce carré a été fouillé ou prospecté. Le tableau doit comporter les variables suivantes:
Un dessin d’arrière-plan peut être affiché dans les visualisations
“3D” et “Carte”. Ceci permet par exemple d’afficher le plan d’un site en
fonds d’un nuage de points. Cette fonctionnalité nécessite un tableau de
données où chaque ligne contient les coordonnées X et Y des points à
utiliser pour le dessin. À noter que les lignes seront tracées en
suivant l’ordre des points dans le tableau. Le système de coordonnées
utilisé doit être le même que celui utilisé pour les objets. Pour
dessiner plusieurs lignes, une colonne supplémentaire (intitulée
“group”) est nécessaire, et doit indiquer pour chaque point
l’identifiant unique de la ligne à laquelle le point appartient. Le jeu
de données doit être chargé via le paramètre
background.map
.
Par défaut, toutes les distances dans archeoViz
sont
exprimées en centimètres. Il est cependant possible de spécifier une
autre unité en donnant l’une des valeurs suivantes au paramètre
unit
: “cm”, “m”, “km”. Ce paramètre détermine le contenu
de la légende relative à la taille des carrés de la grille.
Quatre manières permettent de charger des données dans
archeoViz
:
archeoViz
, dans un environnement R;archeoViz
en ligne.Des tableaux pour trois types de données peuvent être chargés à partir de l’onglet “Données”. Le séparateur CSV (la virgule, le point-virgule ou la tabulation) et le caractère distinguant les décimales dans les nombres (point ou virgule) peuvent être paramétrés.
La fonction de lancement d’archeoViz()
peut être
exécutée sans définir de paramètres:
ou en employant les paramètres objects.df
,
refits.df
, timeline.df
afin de charger des
données relatives, respectivement, aux objets, aux remontages, et à la
chronologie.
L’URL d’une instance archeoViz
en ligne peut être
complétée avec les paramètres:
objects.df=
refits.df=
timeline.df=
prenant pour valeurs l’URL d’un fichier CSV respectant le format
archeoViz
décrit ci-dessus. Par exemple: https://analytics.huma-num.fr/archeoviz/fr/?objects.df=https://zenodo.org/record/8003880/files/bilzingsleben.csv
À des fins de démonstration, il est possible d’employer des données
générées aléatoirement. Déplacer le curseur sur une valeur supérieure à
0, dans l’onglet “Données”, active cette fonctionnalité (replacer le
curseur sur 0 la désactive). Des données d’objets, de remontage, et de
chronologie de la fouille sont alors générés, permettant de tester
toutes les fonctionnalités d’archeoViz
.
Il est possible de modifier l’orientation des points en plan. Dans l’onglet “Données”, sélectionnez une valeur (en degrés) et validez en cliquant sur le bouton “Validez la sélection”.
Après que les données soient chargées, des sous-sélections peuvent être réalisées en employant les options du menu gauche de l’interface. Plusieurs paramètres sont possibles: le mode de localisation, les catégories des objets, et la définition de sous-groupes de données.
Si tous les objets ont des localisation soit exactes soit vagues, aucune option n’est proposée. Par contre, le jeu de données comprend des localisations des deux types, alors il est possible de n’en sélectionner qu’un type ou les deux.
Des sous-groupes de données peuvent être définies de deux manières: soit par couche ou en fonction de la variable “object_” sélectionnée. Cette option détermine l’application des couleurs dans les graphiques 3D et 2D et les sous-groupes de données auxquels sont appliqués les calculs de surface de régression et d’enveloppes convexes. Des sous-ensembles de données peuvent être définis à partir des catégories des objets, en employant les champs “Variable” et “Valeurs”. Après que l’une des variables ait été sélectionnée (“object_type” ou une autre “object_” variable possible), ses valeurs apparaissent en dessous et peuvent être sélectionnées en cochant les items. La sélection doit être validée en cliquant sur le bouton “Valider”. Cette sélection détermine les données qui seront présentées dans les graphiques et tableaux.
Les visualisations dans les onglets “Vue 3D”, “Carte”, “Section X” et
“Section Y” sont générées à l’aide de la librairie plotly
.
Toutes ces visualisations sont dynamiques et sont surmontées d’une barre
de menu comportant plusieurs options (générer un fichier image, zoomer,
déplacer le point de vue, etc.). Davantage de détails sont disponibles
sur le site
de plotly
.
Cliquer sur un item de la légende modifie l’affichage:
Cette fonctionnalité permet de définir les couches devant être affichées. De plus, la taille des points peut être ajustée, ainsi que l’affichage ou non des relations de remontage.
Enfin, cliquer sur un point active l’affichage d’informations à son sujet dans le tableau présent sous les visualisations.
Dans archeoViz
, une distinction est faite entre les
localisations exactes (données sous la forme de coordonnées x, y, z) et
les localisations vagues (données sous la forme d’intervalles de
coordonnées). Il est possible d’afficher Les deux types de localisations
peuvent être visualisées. Les incertitudes des localisations peuvent
être rendues en représentant les objets non pas comme des points mais
comme des lignes, des plans, ou des volumes (si des intervalles de
coordonnées sont précisés pour, respectivement, une, deux ou trois
dimensions spatiales). Cette dernière option est gourmande en
ressources, l’appliquer à un nombre important d’objets peut ralentir
considérablement l’application.
Plusieurs sorties graphiques peuvent être générées dans
archeoViz
.
archeoViz
comporte quelques fonctionnalités d’analyse
spatiale, destinées à usage simple et exploratoire.
Dans l’onglet “Vue 3D”, cliquer sur “Calculer les surfaces” puis
“Valider” affiche les surfaces de régression associées à chaque
sous-ensemble de points (couche), comportant au moins 100 points. Les
surfaces sont calculées grâce au modèle additif généralisé implémenté
dans le package mgcv
.
Dans l’onglet “Vue 3D”, l’affichage des enveloppes convexes se réalise en:
Les enveloppes convexes associées à chaque sous-ensemble de points
comportant au moins 20 points sont alors affichées. Le calcul des
enveloppes est réalisé avec le package cxhull
.
Dans l’onglet “Plan”, cocher la case “Calculer la densité” et cliquer
sur “Valider” génère un plan comportant des lignes de contour
représentant la densité des points. La densité peut être calculée pour
l’ensemble des points ou par couche (comportant au moins 30 points).
L’estimation bidimensionnelle de densité par noyau est calculée avec la
fonction kde2d
du package MASS
(à
travers le package ggplot2
).
archeoViz
est, par définition, une application
interactive. Toutefois, plusieurs fonctionnalités permettent de
satisfaire les besoins de reproductibilité et de communicabilité des
résultats d’interactions avec l’application.
archeoViz
a été conçu comme l’une des pièces d’un
écosystème numérique décentralisé pour les données et analyses
archéologiques. Dans cette approche, les fonctionnalités sont
distribuées entre de multiples applications interconenctées, plutôt que
concentrées dans un petit nombre de systèmes. Par conséquent, les
données peuvent être exportées et importées entre archeoViz
et d’autres applications web. Notez que, jusqu’ici, les fonctionnalités
d’export ne sont disponibles que dans le cas d’instances
archeoViz
déployées en ligne.
À partir de l’onglet “Statistiques” d’archeoViz
, il est
possible d’exporter les données vers d’autres applications en ligne. La
possibilité de certains exports est conditionnée au type de données ou à
la satisfaction d’un nombre minimal de valeurs.
archeofrag
est un package R et une application web permettant d’estimer et
d’évaluer les distinctions entre unités spatiales archéologiques (par
ex. des couches) à partir de l’analyse des relations de remontage entre
fragments d’objets. La version web de l’application intègre des méthodes
pour mesurer la cohésion et le mélange d’unités spatiales et de les
comparer à des données simulées. Lorsqu’une instance
d’archeoViz
est executée avec des données de remontage, alors ces
données peuvent être exportées vers archeofrag
. Cf. cet exemple.
Le Seriograph
est une application web (issue de la collection SPARTAAS)
pour visualiser des changements quantitatifs dans la distribution de
types d’artefacts dans des séries ordonnées ou non-ordonnées d’unités
spatiales. L’export vers le Seriograph
est uniquement
possible depuis les instances d’archeoViz
déployées en
ligne dont le jeu de données possède (au moins) 2 valeurs différentes
pour la variable layer
et 2 valeurs différentes pour la
variable sélectionnée (object_type
par défaut). Voir cet exemple.
Amado
online est une application en ligne permettant d’analyser des
tableaux de contingence. Les lignes et les colonnes peuvent être
réordonnées manuellement et des sériations et classifications
automatiques peuvent être exécutées. L’export vers
Amado online
est uniquement possible depuis les instances
d’archeoViz
déployées en ligne dont le jeu de données
possède (au moins) 2 valeurs différentes pour la variable
layer
et 2 valeurs différentes pour la variable
sélectionnée (object_type
par défaut). Voir cet exemple.
explor est
une application R Shiny / package R permettant d’explorer
interactivement les résultats d’analyses multidimensionnelles. L’export
vers explor
est uniquement possible depuis les instances
d’archeoViz
déployées en ligne dont le jeu de données
possède (au moins) 2 valeurs différentes pour la variable
layer
et 2 valeurs différentes pour la variable
sélectionnée (object_type
par défaut). La version
d’explor
utilisée depuis archeoViz
est une
adaptation de l’application originale, limitées aux analyses
factorielles de correspondances. Voir cet exemple.
shinyHeatmaply
est une application R Shiny / package R permettant de générer et
d’explorer interactivement des cartes de chaleur (heatmaps).
Plusieurs distances et méthodes de classifications peuvent être
apploquées. L’export vers shinyHeatmaply
est uniquement
possible depuis les instances d’archeoViz
déployées en
ligne dont le jeu de données possède (au moins) 2 valeurs différentes
pour la variable layer
et 2 valeurs différentes pour la
variable sélectionnée (object_type
par défaut). La version
de shinyHeatmaply
utilisée depuis archeoViz
est une adaptation de l’application originale. Voir cet exemple.
La fonction archeoViz()
admet de nombreux paramètres
optionnels, relatifs aux :
archeoViz(objects.df=NULL, refits.df=NULL, timeline.df=NULL,
title=NULL, home.text=NULL, lang="en", set.theme="cosmo",
square.size = 100, unit = "cm", rotation = 0,
grid.orientation = NULL, background.map = NULL,
reverse.axis.values = NULL, reverse.square.names = NULL,
add.x.square.labels = NULL, add.y.square.labels = NULL,
class.variable = NULL, class.values = NULL,
default.group = "by.layer", location.mode = NULL,
map.z.val = NULL, map.density = "no", map.refits = NULL,
plot3d.ratio = 1, plot3d.hulls = FALSE, hulls.class.values = NULL,
plot3d.surfaces = NULL, plot3d.refits = NULL, point.size = 2,
sectionX.x.val = NULL, sectionX.y.val = NULL, sectionX.refits = NULL,
sectionY.x.val = NULL, sectionY.y.val = NULL, sectionY.refits = NULL,
camera.center = c(0, 0, 0), camera.eye = c(1.25, 1.25, 1.25),
run.plots = FALSE, html.export = TRUE, table.export = TRUE
)
archeoViz(square.size = 100, unit = "cm", rotation = 0,
grid.orientation = NULL, background.map = NULL,
reverse.axis.values = NULL, reverse.square.names = NULL,
add.x.square.labels = NULL, add.y.square.labels = NULL
)
archeoViz(class.variable = NULL, class.values = NULL,
default.group = "by.layer", location.mode = NULL,
map.z.val = NULL, map.density = "no", map.refits = NULL,
plot3d.hulls = NULL, plot3d.surfaces = NULL, plot3d.refits = NULL,
sectionX.x.val = NULL, sectionX.y.val = NULL, sectionX.refits = NULL,
sectionY.x.val = NULL, sectionY.y.val = NULL, sectionY.refits = NULL,
camera.center = NULL, camera.eye = NULL
)
Une instance archeoViz
deployée en ligne sur un serveur
peut être paramétrée en ajustant les paramètres de l’URL. Les paramètres
supportés comprennent:
objects.df
, refits.df
,
timeline.df
title
, home.text
reverse.axis.values
,
reverse.square.names
square.size
add.x.square.labels
,
add.y.square.labels
class.variable
, class.values
default.group
location.mode
map.density
, map.refits
plot3d.hulls
, plot3d.surfaces
,
plot3d.refits
sectionX.refits
sectionY.refits
run.plots
(Les paramètres suivants ne sont pas supportés dans la version
actuelle de l’application: map.z.val
,
sectionX.x.val
, sectionX.y.val
,
sectionY.x.val
, sectionY.y.val
,
point.size
, lang
, set.theme
,
camera.center
, camera.eye
,
html.export
, table.export
.)
Les paramètres doivent être écris en respectant la syntaxe URL
(?param1=value¶m2=value2) et avoir le même type de valeurs que
dans leur usage dans l’interface R. Par exemple, l’URL suivante lance
une instance archeoViz
à partir du tableau principal du jeu
de données Bilzingsleben:
Cette URL fait de même, mais inclut également le tableau des
remontages (paramètre &refits.df=
) et active
l’affichage immédiat des relations de remontage dans le graphique 3D et
le plan:
L’URL suivante lance le jeu de données Bilzingsleben, en pré-réglant l’application tel que:
default.group
, avec la valeur by.variable
plutôt que by.layer
)class.values
)square.size
500 cm au lieu de la valeur par défaut
100cm)run.plots
)title
)home.txt
)À noter que les paramètres add.x.square.labels
,
add.y.square.labels
, location.mode
, et
class.values
, qui admettent des valeurs simples ou
multiples dans l’interface R (par ex. c(“value1”, “value2”)) n’admettent
qu’une seule valeur lorsqu’employé comme paramètre d’URL (il s’agit
d’une restriction liée à la syntaxe URL).
L’application et le package archeoViz
sont développés et
maintenus par Sébastien Plutniak. Arthur Coulon, Solène Denis, Olivier
Marlet, et Thomas Perrin ont testé et soutenu ce projet durant ses
premières étapes. Renata Araujo, Laura Coltofean, Sara Giardino, Julian
Laabs et Nicolas Delsol ont traduit l’application respectivement en
portugais, roumain, italien, allemand, et espagnol.